Git Checkout后Git无法提交

时间:2016-03-26 17:48:00

标签: git

当我完成工作时,我每天都使用Git来存储我的更改:

git add --all
git commit -m 'some comments'
git push origin master

但是今天,我需要我的Git还原一些文件以跟踪一些错误。所以,我决定在3天前使用这个命令返回:

git checkout 203914

然后,在找到错误原因后,我使用checkout更改回最新提交:

git checkout 981291 << this is my latest commit, about 3 hours ago

现在,在我编辑981291提交之后,我想以与我每天相同的方式创建一个新提交:

git add --all
git commit -m 'minor fix'
git push origin master

它说:

HEAD detached from 981291
nothing to commit, working directory clean
Everything up-to-date

然后我检查了我的BitBucket帐户,我找不到'小修复'提交。看来,在我签出之前的提交并进行一些更改之后,我无法再次向我的远程服务器进行新的提交。

如何在结帐后进行新的提交?

1 个答案:

答案 0 :(得分:1)

通过执行git checkout 203914,您离开了分支master,现在处于所谓的“分离的HEAD”状态。

为了保留您的更改,您需要执行git checkout master,然后创建新的提交。

如果您已经在分支上创建了提交,那么您可以使用reflog子命令找到它:

$ git reflog
...
3aa60dd HEAD@{1}: commit: this commit is missing from master
...

如果您在reflog中找到提交,那么您可以直接将其应用于master

git checkout master
git cherry-pick 3aa60dd

关于你如何使用Git的其他几点说明:

  1. 我建议你commit early, commit often,而不是每天完成一次工作。

  2. 不要手动检查特定提交以追踪错误,而是查看git bisect,为您自动完成此过程。