我运行了命令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
,但是我想知道在当前状态下我能做些什么?
答案 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分支上。