如何使已签出的分支成为主分支

时间:2019-02-23 17:22:14

标签: git

我运行了命令git checkout {previousCommit},并从那里继续工作。原因是HEAD版本有些混乱,我希望回到以前的状态并重新做。

因此,现在我创建了一个分支previousCommit,并完成了更新,我希望将所有内容重新纳入master。在分支previousCommit上,我赚了2 commit

现在,当我运行命令git checkout master时,出现以下消息,我不确定该怎么做

git checkout master
Warning: you are leaving 2 commits behind, not connected to
any of your branches:

  70a95ef someCommitMessage
  05ebd0f someCommitMessage

If you want to keep them by creating a new branch, this may be a good time
to do so with:

 git branch <new-branch-name> 70a95ef

Switched to branch 'master'
Your branch is up to date with 'origin/master'.

可能我应该给出一个清晰的图片:

基本上,我在master分支上总共有10个提交,可以称之为commit 1 ... commit 10

现在master是最新的commit 10,我执行了一个命令git checkout commit 7,因此git为我创建了一个分支commit 7,我从commit 7开始了我的工作。 ,并在该分支上进行了2次提交。

现在我的目标是让这2次提交替换主服务器上的commit 8,9,10,这可能吗?

我知道我应该早一点git reset hard commit 7,但是我想知道在当前状态下我能做些什么?

2 个答案:

答案 0 :(得分:2)

如果您执行git checkout {previousCommit},则表示您处于独立状态。这意味着您当时不在任何分支上。因此,您提交的提交不会在任何分支中,并且切换到master分支后就无法访问。

Git实际上告诉您如何创建一个包含那些提交的分支:

git branch <new-branch-name> 70a95ef

然后,您可以使用新分支并在以后继续工作,或者将其合并到master。

请注意,根本无法到达的提交(因为它们不属于任何分支/标签)可能会在一段时间后被垃圾回收删除。您可以立即解决此问题,但是这种情况可能在一个月内(例如)无法解决。最好现在创建一个分支,如果您决定不再需要该分支,则可以随时将其删除。

答案 1 :(得分:0)

在主机上,执行:

git rebase 70a95ef

这将为您cherry-pick为70a95ef以上的大师提交

也就是说,您可能会注意到您没有按照自己的想法去做,因为git告诉您,当您创建两个新的commit时,您不在上一个Commit分支上。