web-dev-qa-db-ja.com

Gitの現在の変更を中止した後にブランチを切り替える

Gitリポジトリのクローンを作成してから、そのmasterブランチで遊んでみました。しばらくして、変更を(コミットせずに)無視し、別のブランチに切り替えたいと思います。ただし、コミットされていない変更があるため、切り替えができません。それらを隠さずに無視するにはどうすればよいですか?これが起こることです:

$ git checkout gh-pages
error: Your local changes to the following files would be overwritten by checkout:
        somefile.txt
Please, commit your changes or stash them before you can switch branches.
Aborting
40
highBandWidth

オプション1

git checkout -f gh-pages

オプション2

git reset --hard     # beware: don't make that a habit
git checkout gh-pages
65
sehe

完全を期すため、および検索でここに上陸した人のために:OPは stashing なしで解決策を具体的に求めますが、stashは確かに非常に素晴らしいオプションであることに言及する価値があります。

このコマンドは、ローカルの変更を保存し、HEAD commitと一致するように作業ディレクトリを元に戻します。

だからあなたは簡単に

git stash

これはHEADにリセットするようなものです。これらのコミットされていない変更が実際に価値がないことを絶対に確実に確信している場合、単に

git stash drop

上記のドキュメントリンクに記載されているように、複数のスタッシュなどを持つこともできます。

大幅なコストをかけずにリセットする前に考え直す必要があるため、この方法をお勧めします。

12
Wtower

コミットされていない変更はすべて無視できます。

git reset --hard HEAD

5
Kit Ho

ステージングされていないファイルがある場合は、次を試してください。

git checkout -- .

または

git checkout -- filename
3
maoyang

本当にコミットされていない変更(つまり、ステージングされた変更と作業ツリーの変更)を破棄したい場合は、次のことができます:

git reset --hard

一般に、スタッシングは多くの場合より安全です

3
Mark Longair

git add -A git stash

これにより、行ったすべての変更がクリアされます(コミットされていない変更のみ)

0
Yoweli Kachala

特定のファイルで行った変更を破棄できます。

git checkout somefile.txt

そして、スムーズにブランチにジャンプします:

git checkout gh-pages
0
medik