在主远程分支上合并我的更改后,我想删除分支的名称并将分支保留在原来的位置。只删除它的名字(在我的团队中,他们不喜欢带名字的分支,除非它们是版本)。
所以我做了以下事情:
git branch -d branch_2b_deleted
error: The branch 'branch_2b_deleted' is not fully merged.
If you are sure you want to delete it, run 'git branch -D branch_2b_deleted'
git branch -D branch_deleted
git push origin :remoteHead
但是整个分支被移除了,并且在标题上变化消失了。可以撤消"分支-D"命令?
否则我必须重做工作并等待拉动请求。我也不知道为什么分支没有完全合并的消息,在我看来,所有的变化都在远程分支上。
--- ---编辑 我通过重新合并解决了问题(现在很难用树解释树的样子)。 之后,我遇到了另一个问题,因为当我想为branchA分配一个标签时,这个标签被分配给了branchB。我的控制台告诉我,我在branchA上,但GIT指向branchB。所以我做了:
$ git pull
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream-to=origin/<branch> branchA
要解决,我做了:
git pull origin branchA
这就完成了工作。即使在控制台上我写的是我在branchA(之后:git checkout branchA),我也不在branchA上。在我认为这种情况下,系统应该提供建议,而不是说我只是&#34;简单地说#34;在分支A ...
答案 0 :(得分:4)
是的,git中有一个名为git reflog的实用程序,其中记录了所有更改。如果你想要恢复该分支,请执行以下操作:
执行git reflog并在已删除分支的尖端找到提交的SHA1,然后只需
git checkout -b <branch> <sha>
答案 1 :(得分:0)
您将is not fully merged
与is not pushed
混为一谈
如果你e。 G。在本地分支master
上,您尝试删除未合并到foo
的分支master
,您收到此消息。
如果您在本地分支机构bar
,并且您尝试删除相同的分支foo
,但 已合并到bar
,则表示您没有收到该消息。<登记/>
这是为了确保您不删除尚未合并但希望将来合并的分支,因为您可能会松开提交。
要找到您的分支,只需执行reflog
即可查看HEAD
的{{1}},并在您检出该分支时搜索最后一次。这应该是你在该分支上的最后一次提交。如果没有,您可能会发现git reflog
为悬空物体。
如果您在分支上找到了最新的提交,只需使用git fsck --lost-found
或git branch your-branch <found commit-ish>
重新创建。
要删除远程端的分支而不删除本地分支,只需使用最后一个命令即可。即git checkout -b your-branch <found commit-ish>
表示“在原点上不向远程分支推送”,因此在原点上删除它而不触及本地分支。