git - 如何在两次提交之间签出所有已更改的文件

时间:2016-12-23 10:54:42

标签: git merge commit git-branch git-checkout

我有一个分支A和一个分支B.分支B是在A之前的三个提交。

我可以使用git diff列出A和B之间的已更改文件。

但我的问题是:当我在A上时,如何检查A和B之间所有已更改的文件,然后将它们一起提交到A作为一次提交?

4 个答案:

答案 0 :(得分:1)

只需将B分支拉入A,然后将最后三个提交合并为一个。

$ git checkout A
$ git pull origin B
$ git log
# Now top 3 commits are B's commit

# now back to 3 commits but exists all changes of that 3 commits (soft reset)
$ git log
# copy the last commit-hash of A (before pulled)                    

$ git reset --soft <commit-hash>

# now do one commit with all changes
$ git add .
$ git commit -m 'add last 3 commits of B as one in A'
$ git push origin HEAD         # push the changes to remote

答案 1 :(得分:1)

如果B严格地位于A之前(而不是git merge --squash B git commit 之后),那么您只需运行&#34; merge --squash&#34;:

extends ArrayAdapter

答案 2 :(得分:0)

将提交重新引导到A上,然后将它们用“

”压缩到一次提交
git rebase -i HEAD~3

答案 3 :(得分:0)

从B到rebase获取提交

  
    

git rebase B

  

现在将三个提交压缩为一个

  
    

git rebase -i HEAD~3