На одном компьютере git log show не получает последние коммиты из удаленного репо (после запуска git pull)
git log --oneline -n 3 origin/develop
5a8e6eb xxx
7547c8a xxx
53294b6 xxx
На другом компьютере, правильном, он получает последний коммит 4b45d4b
git log --oneline -n 4 origin/develop
4b45d4b (origin/gq_dev, origin/develop) xxx
5a8e6eb (tag: dev_12) xxx
7547c8a xxx
53294b6 (origin/zsf) xxx
Что странно на проблемной машине, так это то, что мой парень сказал, что он на самом деле использовал git pull origin pull
, чтобы получить последний коммит 4b45d4b из источника.Поэтому, когда запускается git status, он показывает: «Ваша ветвь опережает« происхождение / развитие »на 1 коммит».
git status
# On branch develop
# Your branch is ahead of 'origin/develop' by 1 commit.
...
git show
commit 4b45d4bfff7c54169fea7343c5b4f020be556d0a
Так что же произошло и как мне это исправить?
------- update -----------
Я случайно исправил это, не зная, почему, поэтому я добавил разрешение на запись для всех в .git / logs / refs / remotes/ origin / development file
Первоначально это было
ls .git/logs/refs/remotes/origin/develop
-rw-rw-r-- 1 gongqiang gongqiang 2103 Jan 30 19:07 develop
После добавления разрешения на запись и запуска git pull снова проблема исправлена!Но я до сих пор не знаю, почему.
----- обновление 2 ------
Ответ, который я получил от VonC, пролил свет на эту проблему, но все еще естьвопросы остались без ответа.
- ls .git / logs / refs / remotes / origin /velop показывают, что только у парня gongqiang изначально было разрешение на запись (б / к именно он запустил git checkout в ветви разработки),Именно он запустил git pull для получения последнего коммита 4b45d4b.
- После того, как я запустил git status, он сказал: «Ваша ветвь опережает« origin / development »на 1 коммит».Это НЕ записывало последнюю тягу.Но так как этот парень владеет файлом и запускает этот мерзавец.Почему git не удалось его записать?
- Я изменяю этот файл, чтобы разрешить кому-либо запись, и снова запускаю git pull, чтобы это исправить.Но я действительно сомневаюсь, что это «правильное» исправление.
Еще один вопрос, поднятый здесь, заключается в том, что это ветвь, которую может потянуть один человек (ветвь интеграции для тестирования).Лучше использовать sudo git pull
или изменить разрешение на запись, чтобы другие запускались git pull
без sudo
---- обновление 3 -----
Я принял VonC ответ иссылка, которую он предоставил в коммитах https://serverfault.com/questions/26954/how-do-i-share-a-git-repository-with-multiple-users-on-a-machine/27040#27040, полезна.
Но мне также нужно было указать, что, вероятно, невозможно (или не стоит затраченных усилий) выяснить, почему тот, кто владел .git/logs/refs/remotes/origin/develop
, не позволил git обновить его при запуске git pull.
Итак, урок, который я усвоил здесь, когда обнаружил, что git status
сказал что-то странное, проверьте с помощью .git/logs/refs/remotes/origin/develop/branch
, чтобы подтвердить