A-B-C-D-E-F master
\
H-I-J feature
|
tag v1.0
如果我reabse master feature
怎么办? tag1.0是否会丢失?
答案 0 :(得分:3)
该标签不会丢失,但可能不会执行您想要的操作。这就是标记将保留在I
上:
A-B-C-D-E-F master
| \
\ H'-I'-J' feature
H-I-J
|
tag v1.0
尝试一下:
$ git init
$ for c in {A..F}; do touch $c; git add $c; git commit -m $c; done
$ git checkout -b feature HEAD^{/C}
$ for c in {H..J}; do touch $c; git add $c; git commit -m $c; done
$ git tag 'tag-v1.0' feature^{/I}
$ git log --graph --decorate --all --oneline
* d782b9d (HEAD -> feature) J
* c0df2db (tag: tag-v1.0) I
* 2a9fb01 H
| * 3018edf (master) F
| * e0eabe0 E
| * daab573 D
|/
* 8ebf4bb C
* 82be26d B
* 8379c01 A
$ git rebase master feature
$ git log --graph --decorate --all --oneline
* 091cf03 (HEAD -> feature) J
* 6327f84 I
* 69123dd H
* 3018edf (master) F
* e0eabe0 E
* daab573 D
| * c0df2db (tag: tag-v1.0) I
| * 2a9fb01 H
|/
* 8ebf4bb C
* 82be26d B
* 8379c01 A
注意:
HEAD^{/C}
引用了消息匹配C
的HEAD可以访问的最新提交,请参见gitrevisions:
<rev>^{/<text>}
,例如HEAD^{/fix nasty bug}
修订参数的后缀
^
后跟一个包含斜杠的文本的括号对,与下面的:/fix nasty bug
语法相同,不同之处在于它返回的是最年轻的匹配提交,即可以从<rev>
之前的^
到达。