从签出的存储到分支的git

时间:2014-11-27 14:59:13

标签: git version-control git-branch git-stash

我希望在我的主分支下面有100%的藏匿4aa0f82

问题是,stash apply / pop不会应用所有更改。我可以解决一些冲突,但是我更改并保存在存储中的一些重要内容不会出现在冲突中(可能是因为在它们之间存在一个分离的HEAD的提交)。

我希望100%的藏匿在我的分支上。当我结帐存货@ {0}时,它就在那里。如何在我的分支上移动完整的存储提交?

git log --graph --decorate --oneline stash输出:

*-.   6872ac5 (refs/stash) WIP on (no branch): d5da51e
|\ \
| | * 52db257 untracked files on (no branch): d5da51e
| * fb1c947 index on (no branch): d5da51e
|/
*   d5da51e bug removed
|\
| * 3096570 index on master: 89f11dd
|/
* 89f11dd (HEAD, master)

git log --graph --decorate --oneline输出:

*   4aa0f82 (HEAD)
|\
| * bb34a5b index on HEAD: d5da51e
|/
*   d5da51e
|\
| * 3096570 index on master: 89f11dd
|/
* 89f11dd (master)

1 个答案:

答案 0 :(得分:1)

无论如何,

4aa0f82不是隐藏提交,或者不再是隐藏提交。看起来你已经在签出的存储提交上做了你的工作,无论如何,从这里得到你想要的最简单的方法,如果我理解正确,将会是

# if you want all the changes from master through 4aa0f82 (i.e. also the d5da51e work)
git checkout master
git merge --squash 4aa0f82   # HEAD@{1}, "where HEAD was 1 checkout ago" works too

# if you want just the 4aa0f82 changes, not the d5da51e ones:
git checkout master
git cherry-pick --no-commit 4aa0f82   # edit: might need `bb34a5b` here instead
git commit

但我很确定它是你想要的第一套,d5da51e更改。