git存储“无本地更改”,但git状态“比原始/主服务器提前3次提交”`
我做了一个git存储“无本地更改”,但git状态“比原始/主服务器提前3次提交”`,git,Git,我做了一个git提交-am,紧接着是git stash,得到了消息 无需保存的本地更改 当我运行git status时,我得到 您的分支比“原始/主分支”提前3次提交。 是这样吗 我在做一些事情,做了一些承诺,但没有推动更改。现在我想“隐藏”它们并返回到一个干净的版本(我最新推出的更改-不知道如何引用) 如何隐藏我尚未推送的工作,并恢复到最新推送的主分支?如果我理解正确,您需要: 1) 保存本地更改 git add -A git stash 2) 备份您的提交 git branch my_ma
git提交-am
,紧接着是git stash
,得到了消息无需保存的本地更改
当我运行git status
时,我得到您的分支比“原始/主分支”提前3次提交。
是这样吗
我在做一些事情,做了一些承诺,但没有推动更改。现在我想“隐藏”它们并返回到一个干净的版本(我最新推出的更改-不知道如何引用)
如何隐藏我尚未推送的工作,并恢复到最新推送的主分支?如果我理解正确,您需要:
1) 保存本地更改
git add -A
git stash
2) 备份您的提交
git branch my_master_backup
3) 将您的头重置回原点/主位置
git reset --hard origin/master
4) 用“干净版本”做一些你想做的工作
5) 还原您在提交时所做的更改。修复冲突(如果有)
git merge my_master_backup
6) 删除备份分支。如果无法删除,则表示尚未完全合并备份分支和主分支
git branch -d my_master_backup
6) 从步骤1还原本地更改:
git stash pop
PS:您可以避免创建备份分支并使用。当您想要恢复提交时,您需要执行git merge HEAD@{X}
,其中X是来自reflog的所需提交数。从您的问题和评论中,听起来您想要做的是返回到远程存储库的主分支提交,但是保留你做过的改变
您可以做的只是创建一个新的本地分支,其中远程分支(假设它被称为origin
)分支(假设您正在使用master
)
这将创建一个名为original master
的新分支(并签出该分支,将您的工作目录带回origin/master
指向的位置),该分支将与远程origin
的master
分支处于同一提交位置
此时,您从origin/master
到(local)master
的3次提交将被保留,但您可以使用origin/master
的父级启动另一个开发分支(通过创建名为original master
的新分支)。感谢大家的帮助。我所做的是
git重置——软源/主
git stash save“隐藏未完成的更改”
这取消了我所有的提交,但保留了我所有更改的文件。然后我就可以隐藏更改,因为它们还没有提交。在我隐藏后,它会自动将我的本地文件重置为原始/主文件。没错,你在前面,而不是后面。你说的是什么意思?我如何把我的作品藏起来,然后去找大师?您是否不在master
分支中?显示输出git分支
你在问什么?你到底想做什么?我想你所做的是把树枝和储藏物弄糊涂了。你想把本地的零钱藏起来。如果您想在保存工作时返回到origin/master所在的位置,可以git checkout origin/master
。您也可以使用git push origin master
将您的提交推送到master,或者您可以将您的工作保存到一个新的分支中,然后签出origin/master。@Andy,是的,您是对的,我认为git stash
会将尚未推送的提交更改隐藏起来。我需要删除提交,然后隐藏?看看这个答案,它解释了如何进行软重置,这是你想要的。我不相信OP有任何东西要隐藏。他想保留他的工作,所以硬重置不会给他想要的。我建议OP在硬重置之前隐藏他们的本地(未限制)更改并进行备份分支。因此,这些更改/提交将始终对他们可用。我发现这有点令人困惑,因为远程主机现在跟踪两个不同的本地分支(master
和original master
)@Zaratutra OP希望保留其本地master
分支上的更改。如果没有这些“孤儿”的话,我看不出有什么办法可以解决这个问题。至于命名,OP可以根据自己的选择更改分支的名称。好主意,让我们看看哪个解决方案更适合:)
$ git checkout -b original-master origin/master