2012-07-30 3 views
0

загрузить последнюю версию с сервера сКак работать с Git merge и обновлять мой рабочий каталог?

git fetch

, насколько я понял, теперь хранилище обновляется.

У меня два вопроса:

  1. Теперь я работал на файл, который был изменен с сервера, и я хочу, чтобы выполнить слияние? Когда мне нужно слить? Нужно ли это делать после git fetech или когда я делаю добавления файлов? не могли бы вы преуменьшить меня, какими должны быть статуты для процесса слияния?

  2. Если я хочу обновить свой каталог на рабочем столе, и у меня нет слияния. Как я могу это сделать? Я пытался сделать это с:

    git checkout -f "mybranch"
    git rebase
    git checkout "mybranch"

это нормально? У меня есть другой способ?

ответ

2

В этом случае я не сливаюсь. Если у меня есть непогашенные изменения, я делаю

git stash 
git checkout master #if I'm not on master 
git fetch origin 
git rebase origin/master 
git checkout whateverbranh #if I was not on master 
git rebase master #if I was not on master 
git stash pop 

Я думаю, что многие люди этого не делают; Мне это нравится, потому что он держит мою линию истории линейной.

Вы не всегда можете избежать слияния. В этом случае, если файлы изменились на сервере, и мои коммиты изменили эти же файлы, я должен разрешить конфликты во время rebase.

+0

, каково значение stash? что произойдет в этом сценарии? – user1365697

+0

i сохраняет все ваши незафиксированные изменения в тире. Когда вы выталкиваете тайник, git повторно использует эти изменения. – hvgotcodes

+0

Как вам помочь в этом случае? В конце концов вы заменяете старую версию? – user1365697

1

Наиболее распространенным является рабочий процесс

git pull 
# do something useful 
git commit 
git push 

pull всего fetch и merge (средства: слияние remoteName/branchName в branchName) и в большинстве случаев достаточно.

+0

Могу ли я использовать выборку и не тянуть? слияние происходит только тогда, когда я получаю файлы с сервера, а не при загрузке? – user1365697

+0

Вы можете использовать 'fetch', но тогда изменения не будут объединены в ваши« локальные ветви »[1]. Это полезно, когда вы хотите получить ветвь, которую вы еще не «знаете» («выборка из другого источника», «checkout -b anotherBranch origin/anotherBranch'). Если вы нажмете изменения на пульте дистанционного управления, слейте свои изменения в его ветви (ы). Вам обычно не нужно заботиться об этом. ([1] Каждая ветка является локальной, конечно, но некоторые представляют удаленные ветви) – KingCrunch

+0

Нужно ли добавлять новую ветку, когда я использую pull? например, моя ветка - ветвь1, мне нужно, чтобы я потянул за новую ветку или к той же ветке? ЕСЛИ у меня есть два файла с той же проблемой, что и в pull, я получаю ошибку слияния? И тогда мне нужно будет использовать некоторый оператор слияния – user1365697

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