別のブランチ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別のブランチへのファイル、このすべての面倒なし。 実際の変更は数文字のみです。
次のように、feature-x
と cherry-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
ファイルをfeature-x
からhotfix
にコミットするには、簡単な方法があります(feature-x
ブランチに追加したコミットが4712df727f7303bc95545d0f6a024129be97c5c2
であると仮定します):
# on branch hotfix
git checkout 4712d filename
git commit