我想签出分支并删除当前退出的分支。
例如git checkout -b --by-force $branch
,因此分支将基于当前的checkout分支;我总是得到$ branch名称存在。
我不想合并,我只想使用已有的名称进行清晰的结帐。
我不想采取几个步骤来完成此操作。 aka,我不想删除/合并分支并签出分支。
检出和删除/合并应该是一条命令语句。
我该怎么办?
答案 0 :(得分:0)
我想你想要
git checkout -B <branch-name>
为清楚起见,请记住,git checkout
从未进行任何新的提交,但它可以创建或重置分支名称。也就是说,假设您有:
C--D--E <-- branch1 (HEAD)
/
...--A--B
\
F--G--H <-- branch2
您现在可以使用以下命令将名称branch1
指向提交H
,并实际上检出提交H
:
git reset --hard branch2
通过将其替换为提交H
中的内容来丢弃当前的工作树和索引内容,并为您提供:
C--D--E [abandoned]
/
...--A--B
\
F--G--H <-- branch1 (HEAD), branch2
但是我想您想让名称branch2
指向现有的提交E
,放弃提交F-G-H
,并将HEAD
附加到名称{{1 }}。那是什么:
branch2
会这样做,导致:
git checkout -B branch2
此操作将使您的索引和工作树不受干扰,因此,如果您更改了各种文件以使其与提交 C--D--E <-- branch1, branch2 (HEAD)
/
...--A--B
\
F--G--H [abandoned]
中存储的内容不匹配,它们将在您的工作树中保持更改(并且如果在索引,它们在索引中也保持不变)。