我知道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
多田!不是不可能!只需要写这个脚本...
这个答案是一个社区维基,请随意充实伪代码
可能有更好的方法来做到这一点 - 因为 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 ...
...