将单个文件提交到另一个分支

时间:2017-02-26 09:58:24

标签: git version-control git-branch

我正在分支feature-x做一些工作,当我突然遇到一个应该在另一个分支hotfix上真正解决的问题时。

我想创建一个包含该更改的提交,但是在hotfix分支上。

this question我明白标准程序是

# On branch feature-x
git stash
git checkout hotfix
git stash pop
git add -A
git commit -m "Fixed issue #562"

如果我在正在进行的分支feature-x上没有很多更改,那将会有效,这会与分支hotfix发生冲突。我想避免必须解决不必要的冲突。

为了避免这种情况,我想我只能从存储中提取单个文件,如this answer所述。所以程序将是:

# On branch feature-x
git stash
git checkout hotfix
git checkout stash@{0} -- <src/buggyfile.xxx>
git add -A
git commit -m "Fixed issue #562"

然后我应该回到feature-x

git checkout feature-x
git stash pop

虽然there's a way 直接带来来自另一个分支的文件,但我想知道是否有办法将发送文件发送到另一个分支,没有这一切麻烦。 实际修改只有几个字符。

2 个答案:

答案 0 :(得分:7)

您可以在feature-x中的hotfixcherry-pick中提交更改,如下所示:

# On branch feature-x
git add <file>
git commit -m "Fixed issue #562" // Note commit-id
git checkout hotfix
git cherry-pick <commit-id>
git push origin hotfix

根据@torek评论扩展答案,使用git-worktree,如下所示:

git worktree add -b hotfix ../hotfix origin/master
cd ../hotfix/
git add <file>
git commit -m "Fixed issue #562"
git push origin hotfix

答案 1 :(得分:3)

要将文件从feature-x提交到hotfix,有一种简单的方法(假设您刚刚在feature-x分支上添加的提交为4712df727f7303bc95545d0f6a024129be97c5c2):

# on branch hotfix
git checkout 4712d filename
git commit