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

Jor*_*jon 17 git version-control git-branch

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

我想创建一个带有该更改的提交,但是在hotfix分支上.

这个问题我理解标准程序将是

# On branch feature-x
git stash
git checkout hotfix
git stash pop
git add -A
git commit -m "Fixed issue #562"
Run Code Online (Sandbox Code Playgroud)

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

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

# 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"
Run Code Online (Sandbox Code Playgroud)

然后我应该回去 feature-x

git checkout feature-x
git stash pop
Run Code Online (Sandbox Code Playgroud)

虽然有一种方法可以直接从另一个分支引入文件,但我想知道是否有办法文件发送到另一个分支,没有这一切麻烦.实际修改只有几个字符.

Mar*_*Liu 10

为了提交一个文件从feature-xhotfix,有一个简单的方法来做到这一点(假设提交您刚才添加的feature-x分支4712df727f7303bc95545d0f6a024129be97c5c2):

# on branch hotfix
git checkout 4712d filename
git commit
Run Code Online (Sandbox Code Playgroud)


Arp*_*wal 7

您可以提交变化feature-x樱桃采摘hotfix,如下所示:

# 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
Run Code Online (Sandbox Code Playgroud)

根据@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
Run Code Online (Sandbox Code Playgroud)

  • 它复制提交,是的,提交将同时存在于两个分支中。 (3认同)