github - 从错误的分支检出

时间:2017-09-18 11:48:26

标签: git github

我有两个分支,我的主人A,我的分期B,以及我的变化,C。

我从B分支C并做了各种提交,但是我现在需要将分支C上的所有更改合并到master中,而不是合并到B本身。

有一种简单的方法吗?我已经检查了堆栈溢出,显然git checkout只有在基本文件相同时才有效,在这种情况下它们不是......

2 个答案:

答案 0 :(得分:0)

您可以从master创建新分支。然后 cherry-pick C

的提交范围

C输出中复制git log分支的最旧和最新提交哈希值。

$ git checkout C
$ git log --oneline --decorate --all --graph

newC分支机构结帐到新分支(例如master),然后樱桃挑选提交范围。

$ git checkout master
$ git pull origin master
$ git checkout -b newC

$ git cherry-pick <oldest-commit>^..<newest-commit>

注意:如果oldest-commit = P且newest-commit = Z(P git cherry-pick P^..Z

答案 1 :(得分:0)

&#34;您使用cherry-pick命令从一个分支获得单独的提交。

如果您想要的更改不在单独提交中,则使用此处显示的方法将提交拆分为单个提交。粗略地说,你使用git rebase -i获取原始提交进行编辑,然后git reset HEAD ^选择性地还原更改,然后git commit将该位提交为历史记录中的新提交。

在Red Hat杂志中还有另一种不错的方法,他们使用git add --patch或者可能是git add --interactive,它允许你只添加一部分大块,如果你想将不同的变化分成个人文件(在该页面中搜索&#34;拆分&#34;)。

拆分更改后,您现在可以选择您想要的更改。&#34; - 来自How do you merge selective files with git-merge?的直接引用