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

问题描述 投票:11回答:3

我了解git pull会将工作分支更新到它跟踪的远程分支的顶端。所以,让我们说如果我做git pull,它将引入所有最新的变化。在我的情况下,它将在我的树顶上进行5次更改。

有没有办法让git pull只有下一个变化?也就是说,如果git pull将更改03,04,05,06和07更改为我的树顶,我该如何仅更改03?在此命令时,我不知道它将引入的下一个更改的提交ID。

我的树的尖端是完全不变的,不会有任何合并冲突等。

git git-pull
3个回答
11
投票

也许是这样的?

git fetch
git merge <commit to merge>

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


0
投票

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

  1. 在某种程度上,检查有多少新提交(git status工作)
  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!不是不可能!只需写这个脚本......

这个答案是一个社区维基,可以随意充实伪代码

可能有更好的方法来实现这一点 - 因为git pull merge可能存在问题,所以最好从这里的第一个答案中获取灵感。但不知何故,以编程方式找到下一个提交哈希。


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 ...
...
© www.soinside.com 2019 - 2024. All rights reserved.