当我完成工作时,我每天都使用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帐户,我找不到'小修复'提交。看来,在我签出之前的提交并进行一些更改之后,我无法再次向我的远程服务器进行新的提交。
如何在结帐后进行新的提交?
答案 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的其他几点说明:
我建议你commit early, commit often,而不是每天完成一次工作。
不要手动检查特定提交以追踪错误,而是查看git bisect,为您自动完成此过程。