我理解git pull
会将工作分支更新到它跟踪的远程分支的顶端。所以,如果我做git pull
,它会引入所有最新的变化。就我而言,它将在我的树顶上进行5次更改。
有git pull
只有下一次更改的方法吗?即,如果git pull
将03,04,05,06和07更改为我的树顶,我该如何仅更改03?在执行此命令时,我不知道它将引入的下一个更改的提交ID。
我的树的尖端完全没有改变,并且不会发生任何合并冲突等。
答案 0 :(得分:11)
也许是这样的?
git fetch
git merge <commit to merge>
要查找要合并的提交的ID,请在运行fetch后在gitk中查找。
答案 1 :(得分:0)
理论上这应该是可能的。 git status
显示,如果脚本可以解析出“ 8”并接受输入(默认为1)以获取所需的下一个提交数,则有8个提交要提取。您可以运行git-pull-next 2
,它可以这样做:
newCommits
pullNextNCommits
,等于cli输入,默认为1 newCommits
之前的提交哈希值,减去pullNextNCommits
current_git_branch
作为git rev-parse --abbrev-ref HEAD
的结果git checkout <hash>
git checkout -b current_git_branch
TADA!不是不可能!只需编写此脚本...
此答案是社区Wiki,您可以随时充实伪代码
可能有一个更好的方法-由于git pull merge可能会有问题,因此最好从这里的第一个答案中汲取灵感。但是以某种方式,以编程方式找到下一个提交哈希。
答案 2 :(得分:0)
可以。很简单:
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 ...
...