是否有可能'git pull'只有下一次提交?

时间:2012-04-10 22:50:11

标签: git git-pull

我理解git pull会将工作分支更新到它跟踪的远程分支的顶端。所以,如果我做git pull,它会引入所有最新的变化。就我而言,它将在我的树顶上进行5次更改。

git pull只有下一次更改的方法吗?即,如果git pull将03,04,05,06和07更改为我的树顶,我该如何仅更改03?在执行此命令时,我不知道它将引入的下一个更改的提交ID。

我的树的尖端完全没有改变,并且不会发生任何合并冲突等。

3 个答案:

答案 0 :(得分:11)

也许是这样的?

git fetch
git merge <commit to merge>

要查找要合并的提交的ID,请在运行fetch后在gitk中查找。

答案 1 :(得分:0)

理论上这应该是可能的。 git status显示,如果脚本可以解析出“ 8”并接受输入(默认为1)以获取所需的下一个提交数,则有8个提交要提取。您可以运行git-pull-next 2,它可以这样做:

  1. 以某种方式,检查有多少个新提交(git状态有效)
  2. 设置为变量newCommits
  3. 还设置变量pullNextNCommits,等于cli输入,默认为1
  4. 运行git pull
  5. 运行git log
  6. 获取newCommits之前的提交哈希值,减去pullNextNCommits
  7. 存储变量current_git_branch作为git rev-parse --abbrev-ref HEAD的结果
  8. 运行git checkout <hash>
  9. 在本地删除current_git_branch
  10. 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 ...
...
相关问题