Создать локальную ветку которая отслеживает удаленную
Перейти к содержимому

Создать локальную ветку которая отслеживает удаленную

  • автор:

Шпаргалка по командам git
Что делать, когда под руками нет SourceTree

У нас есть задача (issue), которую мы планируем сделать. В центральном репозитории создаём ветку для решения задачи. Например, для задачи с номером 234 создаём ветку features/issue-234.

Примечание: префикс features/ влияет на отображение > веток в таких графических клиентах, как Git Extensions и Sourcetree. Ветки, в чьих именах встреыется символ / выглядят как файлы в каталогах. Так, ветка features/issue-234 выглядит как ветка issue-234 в каталоге features.

Так удобно группировать ветки.

Шаг 2

Теперь в удалённом репозитории есть ветка, где мы будем работать над задачей. Нам нужна такая же ветка в локальном репозитории. Локальную ветку надо создать и связать с удалённой.

Сначала скачиваем из удалённого репозитория изменения, включая новые ветки

git fetch 

Чтобы убедиться, что удалённая ветка доступна локально, выполняем команду

git branch -a 

Создаём локальную ветку, которая указывает на удалённую ветку

git checkout -b features/issue-234 origin/features/issue-234 
git checkout -t origin/features/issue-234 

Шаг 3

Далее работаем над задачей в локальной ветке, время от времени фиксируя изменения.

Прежде, чем фиксировать, смотрим, что успели сделать.

git status 
  • Untracked — git не отслеживает изменения в этих файлах и не хранит их.
  • Changes not staged for commit — git отлеживает и хранит эти файлы. Сейчас эти файлы изменены, но git не будет сохранять эти изменения при фиксации.
  • Changes to be committed — файлы изменены и git сохранит эти изменения при следующей фиксации.

Помечаем для фиксации файлы file₁..fileₙ.

git add file₁ . fileₙ 

Помечаем для фиксации все файлы в текущем каталоге и его подкаталогах. Помеченными окажутся в том числе все новые файлы.

git add . 

Фиксируем все файлы, помеченные для фиксации. Git попросит ввести комментарий.

git commit 

Команда git commit -a работает также, как git add . и git commit вместе, за тем исключением, что новые файлы не будут зафиксированы.

Команда git commit -m «Комментарий к коммиту» фиксирует изменения с указанным комментарием, не запуская внешний редактор.

Отправляем изменения в центральный репозиторий.

git push 

Откат изменений

Если вы изменили файлы, но ещё не фиксировали изменения, вы можете изменить отдельные файлы:

git checkout -- file₁ . fileₙ 

Либо вы можете отказить изменения во всех файлах в каталоге и его подкаталогах:

git checkout -- . 

Если вы зафиксировали изменения, но ещё не отправили их в удалённый репозиторий, откатите последнюю фиксацию:

git reset --hard 

Если комит был отправлен в удалённый репозиторий, считается корректным не удалять его, а создать парный к нему отменяющий коммит.

git revert

Если вы случайно добаили к списку отслеживаемых файлов что-то, что не надо отслеживать, например, временные файлы *.tmp или результаты компиляции *.obj, вы можете удалить их из репозитория:

git rm --cached file₁ . fileₙ 

Без флага —cached git удалит файлы и в репозитории, и на диске. Эта же команда используется, если вы обновили .gitignore и хотите удалить из репозитория файлы, которые соответствуют новым правилам .gitignore:

git rm --cached . git add . 

Первая команда удалит из репозитория всех файлы (оставив их на диске), а вторая снова добавит их в репозиторий. При добавлении git проверит файлы на соответствие шаблонам .gitignore.

Удалить с диска новые файлы

git clean -f -d 

Шаг 4

Решив задачу мы должны слить все изменения в основную ветку — master или main. Это делается через pull request в центральном репозитории. Ставим галочку удалить исходную ветку после слияния, чтобы не пришлось удалять эти ветку вручную.

Теперь надо избавиться от локальной ветки, где мы работали. Сначала переключимся на основную ветку.

git checkout master 

«Затягиваем» в неё изменения из центрального репозитория.

git fetch 

После изменения можно слить с текущей веткой:

git merge 

После слияния в истории репозитория остаются «следы» — коммиты сначла расходятся, потом снова сходятся. Можно избавиться от следов, склеив все коммиты в одну ветку:

git rebase 
git fetch git merge 

37. Добавление ветки наблюдения

Ветки, которые начинаются с remotes/origin являются ветками оригинального репозитория. Обратите внимание, что у вас больше нет ветки под названием style , но система контроля версий знает, что в оригинальном репозитории ветка style была.

01 Добавьте локальную ветку, которая отслеживает удаленную ветку

Выполните
git branch --track style origin/style git branch -a git log --max-count=2 
Результат
$ git branch --track style origin/style Branch 'style' set up to track remote branch 'style' from 'origin'. $ git branch -a * main style remotes/origin/HEAD -> origin/main remotes/origin/main remotes/origin/style $ git log --all --graph --max-count=2 * 71df43a 2023-11-28 | Changed README in original repo (HEAD -> main, origin/main, origin/HEAD) [Alexander Shvets] * 39a1e0f 2023-11-28 | Renamed hello.html; moved style.css (origin/style, style) [Alexander Shvets] 

Теперь мы можем видеть ветку style в списке веток и логе.

Как в git отслеживать ветку?

Есть удаленный репозиторий origin с веткой devbranch.
Я создаю локальную ветку командой git branch devbranch
Теперь нужно чтобы локальная ветка devbranch отслеживала удаленную ветку origin/devbranch.
Какая команда для этого используется?

Знаю, что нужно было создавать ветку следующим образом: git checkout -b devbranch origin/devbranch, и она бы автоматом отслеживала. Но т.к. я уже создал свою локальную ветку иным способом, то нужна команда, которая заставит мою локальную ветку отслеживать удаленную

  • Вопрос задан более трёх лет назад
  • 3903 просмотра

Комментировать

Решения вопроса 1

git branch —set-upstream-to=server-alias/branch branch

Ответ написан более трёх лет назад

Комментировать

Нравится 3 Комментировать

Ответы на вопрос 0

Ваш ответ на вопрос

Войдите, чтобы написать ответ

git

  • Git

Как создать вложенную ветку в Git?

  • 1 подписчик
  • 30 апр.
  • 107 просмотров

git

  • Git

Как затягивать изменения с сервера через Git?

  • 1 подписчик
  • 29 апр.
  • 126 просмотров

git

  • Git

Как заставить git extensions и IDE запомнить пароль?

  • 1 подписчик
  • 29 апр.
  • 57 просмотров

Как создать копию ветки с удаленного репозитория?

хорошая дока по git вызывается командой git help и потом например git help checkout а где второй вопрос ?

15 фев 2013 в 11:08
пока что не придумал, но скоро будет
15 фев 2013 в 11:10
кто отмодерировал вопрос ? вы русский язык знаете ?
15 фев 2013 в 15:43

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

Современные версии Git позволяют делать это гораздо проще:

git checkout branchname 
  1. Есть удалённая ветка origin/branchname
  2. Но нет локальной ветки с именем branchname

Допустим, есть удаленная ветка feature , которой у вас ещё нет локально.

$ git branch --all * master remotes/origin/HEAD -> origin/master remotes/origin/feature remotes/origin/master 
$ git checkout feature Branch feature set up to track remote branch feature from origin. Switched to a new branch 'feature' 
$ git branch --all * feature master remotes/origin/HEAD -> origin/master remotes/origin/feature remotes/origin/master 

Новая ветка действительно отслеживает удалённую:

git branch -vv * feature ed185c8 [origin/feature] extract environment master 4db6d3b [origin/master] stylecheck-driven syntax improvements 

Отслеживать
ответ дан 6 июл 2016 в 4:33
Nick Volynkin ♦ Nick Volynkin
34.1k 25 25 золотых знаков 130 130 серебряных знаков 225 225 бронзовых знаков

Эта команда создаст локальную копию удаленной ветки

git checkout -b remote_branch origin/remote_branch 

Отслеживать
ответ дан 15 фев 2013 в 11:05
AlexDenisov AlexDenisov
6,442 1 1 золотой знак 21 21 серебряный знак 29 29 бронзовых знаков
Разве она не копирует ветку существующего репозитория просто удаленным вариантом?
15 фев 2013 в 11:16
По-моему этого вопрощающий и хотел добиться, или я неправильно понял вопрос?
15 фев 2013 в 11:26

Дело в том что если руководствоваться вашей командой — то клонируется с этого же оригина ветка с удаленного командой git checkout branch если же самому приходиться ветку создавать — то ее нужно создать уже на удаленном хосте а с удаленного так или иначе нужно брать ветку вариантом ниже. ибо оригин — это есть тот что есть репо вообще. может и я вопрос не правильно понял.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *