時々、私はブランチを変更してからVisual Studio Codeを使ってコードを変更するのを忘れてしまいます。私は変更が行われた後に私の枝を変更しようとしましたが、「Git:以下のファイルのあなたのローカル変更はチェックアウトによって上書きされます。私が作業する必要があるブランチに変更をコミットするにはどうすればよいですか?必要があります:変更後にGitブランチを変更する
答えて
git stash
git checkout <existing branch>
git stash apply
これは、元のブランチで行った変更を受け取り、作成した新しいブランチに入れます。 -b
フラグはすぐに新しいブランチに切り替えます。
編集:新しいブランチを作成する場合(git checkout -b <new branch>
を使用)は、git stash/apply
は不要です。あなたは隠しておくと適用されたときに、あなたの中に同様の編集がある場合は、マージ競合で終わる可能性があるため、
error: Your local changes to the following files would be overwritten by checkout:
README.md
Please, commit your changes or stash them before you can switch branches.
Aborting
は注意してください:あなたはスタッシュせずに既存のブランチをチェックアウトしようとする場合は、次のようなメッセージが表示されますターゲットブランチ。
'-b'オプションは、新しいブランチを作成する*ことを意味します。追加の引数がなければ、 'HEAD'にブランチを作成し、stashingは必要ありません。 OPには既存のブランチがあると思われるので、stash-and-no-'-b'バージョンが必要です。 – torek
訂正していただき、ありがとうございました。 – McGlothlin
ここにはいくつかのメカニズムがあります。
ここで接線を外しましょう。関連性はさらに明らかになります。
チェリーピックを行うと、gitはあなたがチェリーピッキングしているコミットの変化を分析し、それらの変更を現在のコミットの上に適用します。
例として、あなたがチェリーピッキングしているコミットが、ファイルの下部または中央にいくつかの行を追加している場合、gitはコミットの上に全く同じことをしようとします。変更前のファイルが異なっていても、再起動します。
今、あなたがしようとしているところに戻ってみましょう。いくつかのファイルを変更しましたが、まだコミットしていないので、コミットする前にどのブランチを変更しようとしています。
孤立していると、gitが上記と同じことをする可能性があります。 gitはあなたが行った変更を特定し、それらをあなたがしたいブランチに持っていくことができます。
しかし、違いがあります。チェリー・ピックが変更をきれいに適用できない場合、マージの競合が発生します。このマージの競合を修正しようとして失敗した場合、中止できます。再起動して、やり直してください。
ただし、まだ変更をコミットしていないため、このようなマージの競合は、ジャムになった時点までの変更内容に深刻な影響を与える可能性があります。変更を失うことになるので、単にあなたが行ったことを放棄することはできません.gitは、マージ競合をあるポイントまで修正しようとすることによってファイルを真剣に妥協させました。
だから、gitはそれをしません。
コミットされていない変更があり、ブランチを切り替えようとすると、変更したファイルが2つのブランチ間で同じである場合にのみ実行できます。そうでない場合、gitは新しいブランチに切り替えることを単に拒否します。マージの競合が発生すると、ファイルに重大な損害を与える可能性があるからです。
- あなたは
git stash
を行うことができますが、実際には、その後、変更のコミットブランチを切り替えて行い、その後、git stash pop
を行います。解決策は単純です、あなたは選択肢のカップルを持っています。これは
git cherry-pick
とまったく同じことを行います。マージを再開することができます。再試行することができます。変更が失われないように問題が残っていることを知っているので、再試行できます。 - 実際のコミットを行い、ブランチを切り替えてから
git cherry-pick
を実行してコミットを引き継ぐことができます。これは上記と同じことを行いますが、他のブランチもクリーンアップする必要があります。最終的な結果は同じでもかまいませんが、途中で正しいことをするためにあなたに負担がかかります。
'git stash pop'は、' git stash apply'と 'git stash drop'の組み合わせと同じことをしますか? –
@JacobRoberts:はい、 'pop' =' apply && drop':適用し、* Git *が結果が良いと思ったら、落としてください。それは大丈夫ですが、個人的には、結果が良いと思うようになるまで個人的に分けておくことを好みます。なぜならGitはうんざりだからです。 :-) – torek
- 1. 'git add'の後に鍵ペアを変更する必要がありますか?
- 2. Git:他の変更を加えてブランチをアップグレードする必要があるときに、ブランチに変更をマージするには?
- 3. VS2013とTFS2015でブランチを使用する場合、ブランチのプロジェクトファイルを変更する必要があります。
- 4. Git(ハブ):ブランチを変更しますか?
- 5. テキストをwoocommerfceチェックアウトページテーブルに変更する必要があります
- 6. コンパイラをVSに変更する必要があります
- 7. GIT GUIのブランチを変更
- 8. 変更する前にモデルを更新する必要があります
- 9. プログラムカウンタは常に変更する必要がありますか?
- 10. Jenkinsパイプラインスクリプト - gitブランチを変更する
- 11. web.configの変更後にコンパイルする必要がありますか?
- 12. C++コードを変更する必要があります
- 13. Sharepointドキュメントライブラリのレイアウトを変更する必要があります
- 14. 抽選を変更する必要がありますか?
- 15. このクエリを変更する必要があります
- 16. JSONP、JSONファイルを変更する必要がありますか?
- 17. your.package.namespace - 何を変更する必要がありますか?
- 18. rdlcレポートでソースを変更する必要があります
- 19. Stringのプロトタイプを変更する必要がありますか?
- 20. デフォルトのデータベースプレフィックスを変更する必要がありますか?
- 21. 軽いデータベース/ストレージソリューションを変更する必要があります
- 22. ラジオボタンのレイアウトを変更する必要があります
- 23. 一時パスワードを変更する必要があります
- 24. リポジトリ構造を変更する必要があります
- 25. ユニットテスト、メソッドパラメータを変更する必要があります
- 26. ブランチの名前を変更した後に "git branch"のgit-orderが変更されました
- 27. シェルスクリプトで$ 1値を$ 1変数に変更する必要があります
- 28. 本当にGitにブランチする必要はありますか?
- 29. ウィンドウのサイズを変更するには、正確にサイズを変更する必要があります
- 30. エラー:スーパーユーザを変更するにはスーパーユーザである必要があります
'git stash'、ブランチをチェックアウトし、' git stash apply'を実行して、最後に通常のgitワークフローを実行します。 – t0mm13b
適用された変更が正しいことが証明されたら、stashを 'git stash drop 'することを忘れないでください。 – torek
@ t0mm13bそのトリックをした!ありがとう! –