Почему Git «source» изменился с «refs /heads / qux» на «refs / remotes / origin / qux»? - PullRequest
1 голос
/ 25 сентября 2011

Следующие команды показывают, что я только что сделал:

Z:\www\gg\web\tests\sample-repo-cloned>git log --all --source --graph
* commit ce7ae79a2b993b780002dbc5eac650fa49427df0       refs/heads/qux
| Author: myname <myemail@gmail.com>
| Date:   Sun Sep 25 00:24:42 2011 +0300
|
|     qux another
|
* commit ef2ea79f40d8e77e47cba31954ef2093c534cc17       refs/heads/qux
| Author: myname <myemail@gmail.com>
| Date:   Sun Sep 25 00:15:56 2011 +0300
|
|     qux
|

Z:\www\gg\web\tests\sample-repo-cloned>git branch
* master
  qux

Z:\www\gg\web\tests\sample-repo-cloned>git checkout qux
Switched to branch 'qux'

Z:\www\gg\web\tests\sample-repo-cloned>notepad2 qux.txt

Z:\www\gg\web\tests\sample-repo-cloned>git add qux.txt

Z:\www\gg\web\tests\sample-repo-cloned>git commit -m "qux more stuff"
[qux 1d18327] qux more
 1 files changed, 2 insertions(+), 1 deletions(-)

Z:\www\gg\web\tests\sample-repo-cloned>git log --all --source --graph
* commit 1d183278e78b8896d882822dacb4aad5bb8cf1bd       refs/heads/qux
| Author: myname <myemail@gmail.com>
| Date:   Sun Sep 25 00:39:06 2011 +0300
|
|     qux more
|
* commit ce7ae79a2b993b780002dbc5eac650fa49427df0       refs/remotes/origin/qux
| Author: myname <myemail@gmail.com>
| Date:   Sun Sep 25 00:24:42 2011 +0300
|
|     qux another
|
* commit ef2ea79f40d8e77e47cba31954ef2093c534cc17       refs/remotes/origin/qux
| Author: myname <myemail@gmail.com>
| Date:   Sun Sep 25 00:15:56 2011 +0300
|
|     qux
|

Мой вопрос таков: почему первые два коммита изменили свой «источник» с refs/heads/qux на refs/remotes/origin/qux?Они сделали это после третьего коммита.Я не понимаю этого.Какая логика стоит за этим «источником»?Кажется, он меняется случайным образом.

1 Ответ

2 голосов
/ 25 сентября 2011

Параметр --source для git log немного сбивает с толку, я боюсь. Это означает, что каждый коммит будет отображаться с ссылкой, по которой он был найден - это не значит, что он будет перечислять все ссылки, содержащие этот коммит. В вашем случае, гипотетический вывод аналогичного параметра, который включал бы все ссылки, содержащие этот коммит, был бы:

* commit 1d1832       refs/heads/qux
| Author: myname <myemail@gmail.com>
| Date:   Sun Sep 25 00:39:06 2011 +0300
|
|     qux more
|
* commit ce7ae7       refs/heads/qux refs/remotes/origin/qux
| Author: myname <myemail@gmail.com>
| Date:   Sun Sep 25 00:24:42 2011 +0300
|
|     qux another
|
* commit ef2ea7       refs/heads/qux refs/remotes/origin/qux
| Author: myname <myemail@gmail.com>
| Date:   Sun Sep 25 00:15:56 2011 +0300
|
|     qux

... и вы можете подтвердить это, просматривая историю с помощью gitk --all, или пытаясь git branch -a --contains ef2ea7 и т. Д.

Итак, все, что происходит, это то, что когда вы запустили git log во второй раз, он сначала проверил ветвь удаленного отслеживания origin/qux, а затем ветвь qux, над которой вы работаете. Что касается того, почему этот порядок должен отличаться между двумя вызовами, я боюсь, я не уверен.

Отрасль удаленного слежения отстает, поскольку вы не обновили ее с помощью git push или git fetch.

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