0

これらは2つの異なるHEADSである必要があると思うので、なぜそれらが同じsha値、つまり2aad8cbに対応するのか...

git reflog
2aad8cb HEAD@{0}: checkout: moving from master to xxx_master   
2aad8cb HEAD@{1}: clone: from git@github.com:xxx/xxx.git
4

2 に答える 2

2

git branch newbranchまたはを介して最初に新しいブランチを作成するときgit checkout -b newbranch masternewbranchはブランチポイントとまったく同じコミットを指します(最初の例またはmaster2番目の例のHEADが何であれ)。したがって、たとえば、両方が同じSHAを持っていることを確認するのは正常masterですnewbranch。いずれかのブランチで新しいコミットを作成すると、そのブランチは新しいコミットを指します。新しいコミットは、前の値を親として持ちます(マージなどの説明を避けるために単純化しすぎています)。

于 2012-09-19T19:14:08.597 に答える
1

これは通常の動作です。reflogは、頭がどこにあったか、枝がどこにあったかを追跡します。そうやって

git checkout master
git checkout experiment
git checkout master
git checkout experiment
git checkout master
git checkout experiment

で終わる

2aad8cb HEAD@{0}: checkout: moving from master to experiment
d8cbf4b HEAD@{1}: checkout: moving from experiment to master
2aad8cb HEAD@{2}: checkout: moving from master to experiment
d8cbf4b HEAD@{3}: checkout: moving from experiment to master
2aad8cb HEAD@{4}: checkout: moving from master to experiment
d8cbf4b HEAD@{5}: checkout: moving from experiment to master

reflogで。値が繰り返されているのがわかります。

ここではgit checkout -、SHA-1(取り外したヘッド)とマスターのチェックアウトを切り替えるために数回使用しました。

5016d9e (HEAD, origin/master, master) HEAD@{0}: checkout: moving from 5016d9e82379923c21268e73e4dad3122a5639ac to master
5016d9e (HEAD, origin/master, master) HEAD@{1}: checkout: moving from master to 5016d9e82379923c21268e73e4dad3122a5639ac
5016d9e (HEAD, origin/master, master) HEAD@{2}: checkout: moving from 5016d9e82379923c21268e73e4dad3122a5639ac to master
5016d9e (HEAD, origin/master, master) HEAD@{3}: checkout: moving from master to 5016d9e82379923c21268e73e4dad3122a5639ac
5016d9e (HEAD, origin/master, master) HEAD@{4}: checkout: moving from 5016d9e82379923c21268e73e4dad3122a5639ac to master

同じSHA1エントリが繰り返されていることがわかります。

于 2012-09-19T17:01:52.900 に答える