Git: git pull - 从特定提交开始直到最新提交跳过 1 次提交?
Git: git pull - start from specific commit until the latest commits skipping 1 commit?
如何从分支中拉取以开始获取特定提交?
假设,我有这些分支:
branch1
和 oldbranch1
branch1
是 oldbranch1
的回滚版本
假设,oldbranch1
有这些提交:
- commit_5
- commit_4
- commit_3(合并
somebranch
到 oldbranch1
)
- commit_2
- commit_1
在 branch1
上:
- commit_2
- commit_1
现在我想从 oldbranch1
获取更新,跳过 oldbranch1
的 commit_3
,因为它包含错误的合并,删除了 commit_2
和 [=24] 的更改=]
我该怎么做?有什么神奇的命令吗?
跳过提交主要意味着 git rebase --interactive
:
- 你在
oldbranch1
之上创建了一个 tmp
分支 (git branch
tmp oldbranch1
)
- 你
rebase -i branch1
那个 tmp
分支,重播每个提交,除了 commit3
你可以删除
- 你
reset --hard
branch1
到新的tmp
HEAD。
最后一步意味着:移动(强制)branch1
HEAD 到 tmp
,但是由于 rebase 只添加了新的(重写的)提交到 branch1
,你应该能够简单地做:
git checkout branch1
git merge tmp
这应该将 tmp
快进合并到 branch1
,只需将 branch1
HEAD 移动到 tmp
所在的位置。
那么一个简单的 git push
(或者 git push -u origin branch1
如果 branch1
之前从未被推送过)就足够了。
如何从分支中拉取以开始获取特定提交?
假设,我有这些分支:
branch1
和 oldbranch1
branch1
是 oldbranch1
假设,oldbranch1
有这些提交:
- commit_5
- commit_4
- commit_3(合并
somebranch
到oldbranch1
) - commit_2
- commit_1
在 branch1
上:
- commit_2
- commit_1
现在我想从 oldbranch1
获取更新,跳过 oldbranch1
的 commit_3
,因为它包含错误的合并,删除了 commit_2
和 [=24] 的更改=]
我该怎么做?有什么神奇的命令吗?
跳过提交主要意味着 git rebase --interactive
:
- 你在
oldbranch1
之上创建了一个tmp
分支 (git branch
tmp oldbranch1
) - 你
rebase -i branch1
那个tmp
分支,重播每个提交,除了commit3
你可以删除 - 你
reset --hard
branch1
到新的tmp
HEAD。
最后一步意味着:移动(强制)branch1
HEAD 到 tmp
,但是由于 rebase 只添加了新的(重写的)提交到 branch1
,你应该能够简单地做:
git checkout branch1
git merge tmp
这应该将 tmp
快进合并到 branch1
,只需将 branch1
HEAD 移动到 tmp
所在的位置。
那么一个简单的 git push
(或者 git push -u origin branch1
如果 branch1
之前从未被推送过)就足够了。