我的上一次提交已删除。 我的命令:
git branch
* (detached from a96f277)
help
master
omid
reza
rezalocal
git commit
is commited
git push
cant push
git checkout master
git merge master a96f277
: a96f277 is not found!
git checkout a96f277
git log
: my last commit not found;
这显示了我的上一次提交,所有我所做的编辑和添加的文件都已删除!
答案 0 :(得分:1)
您不能进行推送,因为当您进行提交时,您不在任何分支上。您所做的提交以a96f277
作为其父提交,但在任何地方都没有引用,因此可以进行垃圾回收。
实际上,当您在独立的HEAD状态下执行 提交操作时,git会提示这一点:
警告:您将留下1个提交,但未连接到 您的任何分支机构:
abcdef123 HEAD测试
如果您想通过创建新分支来保留它,这可能是个好时机 可以这样做:
git分支abcdef123
您应该已经预先签出要提交的分支,但是现在还不算太晚,因为您现在可以在此提交中创建一个分支并将其合并到master中:
git checkout -b temp <commitHash>
git checkout master
git merge temp
(在<commitHash>
之后提交时,在您最近的输出中将找到a96f277
)(如果不在输出中,请在您的引用日志中获取它)
然后,您将可以照常按下master
。
答案 1 :(得分:1)
您在a96f277的顶部提交了[让我们说哈希为xyz123],然后切换为master。如果现在通过git checkout a96f277
返回a96f277,则您的最后一次提交xyz123将不存在,因为您指向的是先前的提交。
现在,提交xyz123悬空了,因为没有分支指向它。要获取此提交的ID,您可以执行git reflog
。它将为您提供您所做的所有操作的历史记录(只要不运行git的垃圾回收周期)。
然后您可以找到xyz123的实际提交ID,然后从中检出,创建一个新分支并将其推送到远程。
希望这会有所帮助!
答案 2 :(得分:1)
a96f277
是分离的HEAD的起点,而您的提交在它之前。
要找出提交的哈希值,可以搜索已运行的git commit
的输出,也可以使用git reflog
。
找到它后,假设它是abc123
,
git checkout master
git cherry-pick abc123
# or
git merge abc123