我了解git pull
会将工作分支更新到它跟踪的远程分支的顶端。所以,让我们说如果我做git pull
,它将引入所有最新的变化。在我的情况下,它将在我的树顶上进行5次更改。
有没有办法让git pull
只有下一个变化?也就是说,如果git pull
将更改03,04,05,06和07更改为我的树顶,我该如何仅更改03?在此命令时,我不知道它将引入的下一个更改的提交ID。
我的树的尖端是完全不变的,不会有任何合并冲突等。
也许是这样的?
git fetch
git merge <commit to merge>
要查找要合并的提交的ID,请在运行fetch后在gitk中查找。
这在理论上应该是可能的。 git status
显示有8个提交,如果一个脚本可以解析出“8”并输入一个输入(默认为1)来获取你想要的下一个提交的数量。你可以运行git-pull-next 2
,它可以这样做:
newCommits
pullNextNCommits
,等于cli输入,默认为1newCommits
前的提交哈希,减去pullNextNCommits
current_git_branch
作为git rev-parse --abbrev-ref HEAD
的结果git checkout <hash>
git checkout -b current_git_branch
TADA!不是不可能!只需写这个脚本......
这个答案是一个社区维基,可以随意充实伪代码
可能有更好的方法来实现这一点 - 因为git pull merge可能存在问题,所以最好从这里的第一个答案中获取灵感。但不知何故,以编程方式找到下一个提交哈希。
您可以。非常简单:
git fetch
git log --oneline --decorate --graph --all
git merge <some-commit-id>
#Repeat last line as often as you wish
#to incorporate upstream changes piecemeal.
标志与git log
的组合对于快速概述已发生的事情非常有用,以至于我总是定义一个shell别名来使用这个精确的组合:
alias gitlog='git log --oneline --decorate --graph'
使用该别名,上述序列变为
git fetch
gitlog --all
git merge ...
...