2012-01-12 5 views
2

Я новичок в Git и пытаюсь понять это.Git: объединить удаленные файлы с локальными файлами?

Я клонировал удаленный репозиторий, скажем ssh: // repo на свою локальную машину. После клонирования я редактировал некоторые файлы, в течение которых удаленный репозиторий также был изменен.

Как я могу обновить локальный репозиторий с удаленным, сохраняя оба набора изменений?

ответ

4

Просто зафиксировать изменения в локальное хранилище с помощью

git commit 

команды. Теперь вы никогда не теряете изменений! Затем вытащите новые изменения из удаленного хранилища, используя

git pull 

команда. Эта команда извлекает новые изменения и объединяет их с вашими изменениями. Обычно конфликтов нет. В этом случае вы можете вносить свои изменения в удаленный репозиторий. В противном случае вы должны разрешить все конфликты, пометить их решить с помощью

git add 

команды (только использовать подсказки от выхода состояния мерзавца) и совершить это слияние с использованием

git commit 

команды.

+0

Каждый раз, когда я использую git pull, ответ «Уже обновлен», а файлы на моем локальном компьютере не имеют изменений, внесенных в удаленный код. Любая идея почему? – kz3

+1

@ htrk123 Это может произойти в этом случае: вы переходите к ветке XXX, а кто-то нажал ее изменения в ветку YYY. –

+0

@ htrk123 были ли эти изменения внесены в удаленный репозиторий? –

0

вы можете использовать команду 'git pull' и этот конфликт слияния этого флага, если таковой имеется. Если есть конфликты, разрешить его и должен сделать мерзавец совершить

2

«git pull» объединит удаленные удаленные изменения в вашу локальную копию. Если вы хотите сохранить свои изменения самостоятельно, вы можете перенести изменения на новую ветку, прежде чем тянуть. Так что если вы еще не зафиксировали изменения, вы могли бы сделать что-то вроде этого:

> git stash #stash the changes 
> git branch dev_branch #create a new branch 
> git checkout dev_branch #move to the new branch 
> git stash apply #paste the changes into the new branch 
> git checkout master #switch back to the master branch 
> git pull #update the master branch 

В конце, что вы одна версия кода содержит изменения (dev_branch) и тот, который соответствует код дистанционного управления (мастер). Теперь вы можете работать с вашим dev_branch независимо от того, что происходит с удаленным кодом. (Когда вы познакомитесь с git, вы обнаружите, что это более «git» способ работы - просто работая в вашей мастер-ветке и делая «git pull», чтобы объединиться в удаленных изменениях, является более «подрывным» способом работы).

Смежные вопросы