回答:
以下を使用します。
git checkout -b <new-branch>
これにより、現在のブランチがそのまま残り、新しいブランチを作成してチェックアウトし、すべての変更を保持します。次に、ファイルの変更をステージングして、コミットします。
git add <files>
そしてあなたの新しいブランチにコミットします:
git commit -m "<Brief description of this commit>"
作業ディレクトリの変更とインデックスにステージングされた変更は、まだどのブランチにも属していません。これにより、変更が終了するブランチが変更されます。
元のブランチはリセットせず、そのままです。最後のコミット<old-branch>
は同じままです。したがって、あなたはcheckout -b
それからコミットします。
Git 2.23は、(ブランチの切り替え、ファイルの復元、HEADのデタッチなど)switch
の過負荷使用による混乱を解消するために、新しいサブコマンドを追加していcheckout
ます。
このバージョンのGit以降、上記のコマンドを次のように置き換えます。
git switch -c <new-branch>
動作は同じで、変更されません。
git checkout -b <new branch>
これらの変更が終了する変更
git checkout .
/ git reset --hard
回復不能にそれらを削除します
または:
現在の変更を一時的な隠し場所に保存します。
$ git stash
このスタッシュに基づいて新しいブランチを作成し、新しいブランチに切り替えます。
$ git stash branch <new-branch> stash@{0}
ヒント:スタッシュ名の入力を減らすには、タブキーを使用します。
git stash apply
。
git checkout -b <new branch name>
git add -A
隠しておく前に必要はありません。
コーディング中にメインブランチでコミットを行っていたが、それらのコミットを別のブランチに移動したい場合、これは簡単な方法です。
現在の履歴を新しいブランチにコピーし、コミットされていない変更もすべて持ち込みます。
git checkout -b <new-feature-branch>
ここで、元の「乱雑な」ブランチを強制的にロールバックします((それに切り替えずに)。
git branch -f <previous-branch> <earlier-commit-id>
例えば:
git branch -f master origin/master
または、4つのコミットを行った場合:
git branch -f master HEAD~4
警告: git branch -f master origin/master
はそのブランチの追跡情報をリセットします。したがって、master
ブランチをそれ以外の場所にプッシュするorigin/master
ように構成した場合、その構成は失われます。
警告:ここで説明されているように、分岐後にリベースする場合にも危険があります。これを回避する唯一の方法は、チェリーピックを使用して新しい履歴を作成することです。そのリンクは、最も安全で簡単な方法を説明しています。コミットされていない変更がある場合はgit stash
、最初とgit stash pop
最後に変更することをお勧めします。
コミットする場合は、単一のコミットIDを選択することもできます。masterで作業を開始し、自分のorigin /にプッシュアップする前にローカルブランチを作成するときに、これを頻繁に行います。
git cherry-pick <commitID>
ここで説明するように、チェリーピックでできることはたくさんありますが、これはユースケースになる可能性があります。
これは、GITのツールを使用するすべてのユーザーに役立つ場合があります
コマンド
ブランチを切り替える-変更を新しいブランチに移動します。その後、変更をコミットできます。
$ git checkout -b <new-branch>
TortoiseGIT
リポジトリを右クリックして、TortoiseGit-> Switch / Checkoutを使用します
SourceTree
「チェックアウト」ボタンを使用してブランチを切り替えます。ブランチをクリックすると、上部に「チェックアウト」ボタンが表示されます。現在のブランチからの変更は自動的に適用されます。その後、それらをコミットできます。
私は@Robinの回答を使用し、自分がしたことをすべてリストしました
git status <-- review/list uncommitted changes
git stash <-- stash uncommitted changes
git stash branch <new-branch> stash@{1} <-- create a branch from stash
git add . <-- add local changes
git status <-- review the status; ready to commit
git commit -m "local changes ..." <-- commit the changes
git branch --list <-- see list of branches incl the one created above
git status <-- nothing to commit, working tree (new-branch) is clean
git checkout <old-branch> <-- switch back
! リポジトリに複数のスタッシュがある場合は、新しいブランチに適用するスタッシュを確認します。
git stash list
stash@{0}: WIP on ...
stash@{1}: WIP on ...
個々の隠し場所を調べます
git stash show stash@{1}
または、すべてのスタッシュを一度に検査します。
git stash list -p
GitHubデスクトップでこれを行うには本当に簡単な方法がありますが、今までの機能とは思えません。
GitHubデスクトップで新しいブランチに切り替えるだけで、現在のブランチに変更を残しておくか(隠しておく)、新しいブランチに変更を持ち込むように求められます。2番目のオプションを選択するだけで、変更が新しいブランチに反映されます。その後、通常どおりコミットできます。