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

标签 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直接从另一个分支带来文件,我想知道是否有办法将文件发送到另一个分支,而无需所有这些麻烦。 实际修改的只是几个字符。

最佳答案

您可以在 feature-xcherry-pick 中提交更改它在 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

根据@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

关于git - 将单个文件提交到另一个分支,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42467062/

相关文章:

ios - 初学者-将终端连接到我的Github“找不到开发人员工具...?”

visual-studio - TFS checkout 特定版本,进行更改, checkin

Git 日志范围修订包括范围边缘

git - 如何在保留历史和文件结构的同时将 git 存储库的一部分提取到它自己的存储库中?

git - 缺少 .git 目录

version-control - Perforce:我可以在文件上放置 'watch',以便在文件更改时收到通知吗?

version-control - IIS 的最佳版本控制系统?

Git 从现有的远程分支添加一个工作树

Git,当我正在跟踪的远程分支被删除时告诉我

git - 如何管理github上过时的分支