私はブランチAで作業していますが、緊急に修正する必要があります。どのブランチを作成するにはどうすればよいですか?変更?別のブランチに移動して現在の変更を保存する
ブランチAのすべてのファイルをチェックアウトする必要はありません。ブランチBの作業が完了したら、続行したいと思っています。
未完成のため、ブランチAをプッシュしたくありません。
私はブランチAで作業していますが、緊急に修正する必要があります。どのブランチを作成するにはどうすればよいですか?変更?別のブランチに移動して現在の変更を保存する
ブランチAのすべてのファイルをチェックアウトする必要はありません。ブランチBの作業が完了したら、続行したいと思っています。
未完成のため、ブランチAをプッシュしたくありません。
オプション1:あなたが支店Aの変化がある場合は、変更内容
を隠しておくことができます。 分岐Aにいる間、変更を取得するには
git stash save "hint_to_what_stash_contains"
を行い、
git stash apply
複数のスタッシュがある場合は、それらをリストし、適用するスタッシュを選択することができます。
git stash list
git stash apply [email protected]\{<STASH_NUMBER>\}
オプション2:変更を確定します。
まず、branchAのすべての変更をコミットしますが、起点にプッシュしないようにしてから、作業を行うブランチbを作成します。 branchBが完了すると、ブランチAをチェックアウトして作業を再開できます。
オプション3
branchA
git checkout brancha
edit files
git add <file(s)>
git commit --amend # You can also change the commit message if you want.
に作業を再開するために:私はお勧めしませんが、パッチのことですが..私は何人かの人々がそれを使用し見てきました。 git diffを実行してファイルに保存してください。例えば、 "branch_a_changes.patch"と作業を再開したい場合は、 git apply branch_a_changes.patch
A
で変更をコミットできます。その後、チェックアウトB
。 B
が完了したら、A
に戻り、続行します。
または、「A」の変更をコミットしたくない場合は、stash(別の場所に保存)に変更を加えます。チェックアウトをB
にして、A
に戻ると、(stash pop
)の変更がstash
になります。
Stashing
は、作業ディレクトリのダーティな状態になります - つまり、あなたの変更は、ファイルを追跡し、変更を上演 - あなたはいつでも
オプション-1:スタッシュ
:$ git checkout A # chekcout A
$ git commit -am 'tmp commit' # add & commit
$ git checkout B # checkout B
// fix your urgent changes here
$ git checkout A
// continue A
オプション-2をコミット
$ git checkout A
$ git add .
$ git stash # save unfinished changes
$ git checkout B # checkout B
// fix your urgent changes here
$ git checkout A # checkout A
$ git stash apply # retrieve the changes from stash
// you can clear the stash
$ git stash drop # remove the changes from stash
単一分岐のコミット。隠れている間に複数の支店で変更を適用できますか? –
@ Jamie Andersonはい、どのブランチでも、単に 'git stash apply'コマンドで変更を取り戻すことができます。 –
git worktree --help
(https://git-scm.com/docs/git-worktree)からは、リファクタリングのセッションの途中であり、あなたの上司は に来て、あなたはすぐに何かを修正要求。あなたは disarray(新しいファイル、移動されたファイル、削除されたファイル、その他のビットとピースが混在しています)の状態になっています。 は通常、git-stash(1)を使って一時的に変更を保存します。あなたはそれを邪魔しないように を危険にさらしたくありません。代わりに、一時的にリンクされた作業ツリーを作成して緊急修正を行い、完了したらそれを削除して、 にして、以前のリファクタリングセッションを再開します。$ git worktree add -b emergency-fix ../temp master $ pushd ../temp # ... hack hack hack ... $ git commit -a -m 'emergency fix for boss' $ popd $ rm -rf ../temp $ git worktree prune
'git worktree add'はGit 2.5で新しくなりました。2.6以降の重要な修正が加えられました。私は2.9以降でそれを使用し始め、それを今推奨しています。 – torek
マスターの分岐Bを作成するだけです。 –
@ DanielA.WhiteブランチAのすべてのファイルをチェックアウトする必要はありません。ブランチBの作業が完了していれば続行できるようにしたいからです。 gitで –
を実行すると、一度にすべてのファイルをチェックアウトしますが、ブランチ間を簡単に切り替えることができます。 –