GIT - разница между отслеживанием ветки и клонированием - PullRequest
12 голосов
/ 23 октября 2009

Я видел эту команду, плавающую на разных сайтах.

git checkout --track -b <...>

Если я создаю чистое хранилище на удаленном сервере и работаю из двух разных мест, какой самый быстрый и «одобренный» способ сделать это?

Я создал первоначальное репо на своем ноутбуке, а затем отправил изменения в «источник», где находится мое VPS-репо (голое репо). Теперь, на моем рабочем столе, я должен клонировать мой репо? Я спрашиваю, потому что у меня есть две ветви, "dev" и "master". Когда я оказался на рабочем столе, я не был уверен, стоит ли мне «отслеживать» репо или я должен сначала клонировать? Что если я захочу поработать над веткой dev, это когда я извлекаю деньги с использованием директивы --track?

Вот что я сделал до сих пор.

на ноутбуке

cd devproject
git init
git add .
git commit -m "My first commit"

On VPS Repo

mkdir /home/sam/devproject.git
cd /home/sam/devproject.git
git --bare init
exit

Вернуться к ноутбуку

cd devproject
git remote add origin ssh://myserver.com/home/sam/devproject.git

на рабочем столе (??)

git clone <..>

Ответы [ 3 ]

9 голосов
/ 23 октября 2009

Вы клон хранилище, но вы отслеживаете ветку. Отправленная вами команда оформления заказа не завершена:

git checkout --track -b new_local_branch_name origin/remote_branch_name

Таким образом, необходимые шаги будут:

  1. Клонировать удаленный репозиторий.
  2. Отслеживание удаленных веток.
4 голосов
/ 23 октября 2009

Команда выше не будет работать, если вы не в репозитории. Чтобы работать с git, вы должны всегда сначала создать репозиторий, либо путем клонирования уже существующего, либо используя git-init и начиная с нуля.

git checkout --track -b <branch> <remote-branch>
git checkout --track <remote-branch>

Эти две команды создают новую локальную ветвь для отслеживания <remote-branch>. Первый вручную называет его <branch>; вторая использует то же имя, что и пульт.

Помните, что отслеживание не означает автоматическое обновление - оно просто указывает на то, куда ветка должна выдвигать / извлекать ветку, и позволяет статусу git указать, что ваша ветвь отстает от origin / master на 5 коммитов и может переадресованные "сообщения.

0 голосов
/ 23 октября 2009

Когда вы используете

git checkout --track -b local_branch_name origin/remote_branch_name

(обычно с 'local_branch_name' совпадает с 'remote_branch_name', для которого существует ярлык:
"git checkout -b --track origin / branch_name"), это означает, что вы создаете локальную ветку с именем 'local_branch_name', для которой вы можете создавать коммиты, для которых ветка upstream будет remote -tracking ветка с именем 'remote_branch_name' (которая отслеживает / следует за этой веткой удаленного отслеживания).

Вы должны помнить, что вы не можете напрямую фиксировать 'origin / remote_branch_name'; эта ветка удаленного отслеживания предназначена для отслеживания хода выполнения ветки 'remote_branch_name' в удаленном 'origin' (origin) - имя по умолчанию для удаленного, с которого вы клонировали).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...