我知道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,它可以这样做:
newCommitspullNextNCommits等于 cli 输入,默认为 1newCommits,减去pullNextNCommitscurrent_git_branch作为结果git rev-parse --abbrev-ref HEADgit 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 ...
...