Краткий ответ - использовать git fetch origin
, за которым следует git merge origin/develop
из вашей локальной ветки разработки
git pull
похоже на git fetch
, за которым следует git merge
в вашей локальной ветке разработки.Происхождение / разработка в вашем текущем репозитории не будет соответствовать вашей локальной ветке разработки, потому что ваша локальная копия на один коммит опережает вашу HEAD.Вызов git push origin develop
обновляет ваше локальное происхождение / развитие, когда git понимает, что изменения уже есть в удаленном репозитории git.
Вот что вы видите локально на вашей машине без изменений:
macbook:test joel$ git push origin master
Everything up-to-date
macbook:test joel$ git status
# On branch master
nothing to commit (working directory clean)
macbook:test joel$
На другом компьютере другой пользователь вносит изменения, фиксирует их и отправляет их в origin / master:
otherPerson-pc:test bob$ git status
# On branch master
nothing to commit (working directory clean)
otherPerson-pc:test bob$ echo "ddd" >> newfile.txt
otherPerson-pc:test bob$ git add newfile.txt
otherPerson-pc:test bob$ git commit --message "added to newfile in master remotely"
[master d14b77e] added to newfile in master remotely
1 files changed, 1 insertions(+), 0 deletions(-)
otherPerson-pc:test bob$ git push origin master
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 314 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /Users/joel/Desktop/test/test.git
2cfa7d4..d14b77e master -> master
otherPerson-pc:test bob$
Вернувшись к своей локальной копии, я не внес изменения.Я вытаскиваю из мастера источника, чтобы получить изменения от других и вывести один коммит вперед!:
macbook:test joel$ git status
# On branch master
nothing to commit (working directory clean)
macbook:test joel$ git pull origin master
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /Users/joel/Desktop/test/test
* branch master -> FETCH_HEAD
Updating 2cfa7d4..d14b77e
Fast-forward
newfile.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
macbook:test joel$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
macbook:test joel$
Мой локальный мастер применяет изменения от мастера пульта, но моя копия источника / мастера - 1 коммит позади, поэтому git говоритЯ один коммит вперед локально, хотя я в курсе.git push origin master
обновляет источник / мастер локально, и сообщение исчезает.
Вы можете избежать этого, используя git fetch
и git merge
вместо git pull
Другой разработчик может сделатьэто снова:
otherPerson-pc:test bob$ git status
# On branch master
nothing to commit (working directory clean)
otherPerson-pc:test bob$ echo "gggg" >> newfile.txt
otherPerson-pc:test bob$ git add newfile.txt
otherPerson-pc:test bob$ git commit --message "added gggg newfile in master remotely"
[master 677d031] added eeee newfile in master remotely
1 files changed, 1 insertions(+), 0 deletions(-)
otherPerson-pc:test bob$ git push origin master
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 321 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
To /Users/joel/Desktop/test/test.git
d14b77e..677d031 master -> master
otherPerson-pc:test bob$
Локально я собираюсь получить все происхождение, а затем вручную объединить origin / master с моей копией слияния.
macbook:test joel$ git status
# On branch master
nothing to commit (working directory clean)
macbook:test joel$ git fetch origin
remote: Counting objects: 5, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
From /Users/joel/Desktop/test/test
5e335fa..2dae61c master -> origin/master
macbook:test joel$ git status
# On branch master
# Your branch is behind 'origin/master' by 1 commit, and can be fast-forwarded.
#
nothing to commit (working directory clean)
macbook:test joel$ git merge origin/master
Updating 5e335fa..2dae61c
Fast-forward
newfile.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
macbook:test joel$ git status
# On branch master
nothing to commit (working directory clean)
macbook:test joel$
Обычно я делаю выборку, а затемобъединить, потому что вы можете проверить наличие конфликтов перед тем, как сливаться, используя git diff.