我做了一个git commit -am
,紧接着git stash
,得到了消息
No local changes to save
当我跑git status
时,我得到了
Your branch is ahead of 'origin/master' by 3 commits.
这是对的吗?
我正在研究一些东西并做了一些提交,但没有推动变化。现在我想隐藏'他们并回到一个干净的版本(我最近的pushed
更改 - 不知道如何参考这个)
如何将我尚未推送的工作藏匿到最新推出的主分支?
答案 0 :(得分:11)
如果我理解是对的,你需要:
1)保存您当地的更改。
git add -A
git stash
2)备份你的提交
git branch my_master_backup
3)将HEAD重置回原点/主控
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:您可以避免创建备份分支并使用reflog。如果要恢复提交,则需要执行git merge HEAD@{X}
,其中X是reflog所需提交的编号。
答案 1 :(得分:5)
感谢大家的帮助。我做的是什么
git reset --soft origin/master
git stash save 'stashing my unfinished changes'
这解除了我的所有提交,但保留了所有已更改的文件。然后我就能够隐藏这些变化,因为它们还没有被提交。在我藏起来之后,它会自动将我的本地文件重置为origin / master。
答案 2 :(得分:1)
从您的问题和评论中,您想要做的就是返回到远程存储库的主分支提交,但保留您所做的更改因为你已经完成了这个。
您可以做的只是创建一个新的本地分支,其中远程(假设它被称为origin
)分支是(假设您正在使用master
)。
$ git checkout -b original-master origin/master
这将创建一个名为original-master
的新分支(并检查此分支,将您的工作目录恢复到origin/master
指向的位置),该分支将与远程{{ 1}}' s origin
分支。
此时,您将保留从master
到(本地)origin/master
的3次提交,但您可以使用master
的父级启动不同的开发分支(通过一个名为origin/master
)的新分支。