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