web-dev-qa-db-ja.com

単一のファイルを別のブランチにコミットする

別のブランチhotfixで本当に解決すべき問題に突然遭遇したときに、ブランチfeature-xで作業をしています。

私はその変更でコミットを作成したいのですが、hotfixブランチ上にあります。

この質問 から、私は標準的な手順が

# 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 に記載されているように、スタッシュから1つのファイルしか抽出できないと考えていました。したがって、手順は次のようになります。

# 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

方法があります tobringfiles from another branch from直接、send別のブランチへのファイル、このすべての面倒なし。 実際の変更は数文字のみです。

16
Jorjon

次のように、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

次のように、 git-worktree を使用するために、@ torekコメントに従って回答を拡張します。

git worktree add -b hotfix ../hotfix Origin/master
cd ../hotfix/
git add <file>
git commit -m "Fixed issue #562"
git Push Origin hotfix
7
Arpit

ファイルをfeature-xからhotfixにコミットするには、簡単な方法があります(feature-xブランチに追加したコミットが4712df727f7303bc95545d0f6a024129be97c5c2であると仮定します):

# on branch hotfix
git checkout 4712d filename
git commit
3
Marina Liu