359

単一のファイルからの変更だけを隠せるようにしたいと思います。

git stash save -- just_my_file.txt

ただし、上記は機能しません。代替案はありますか?

4

5 に答える 5

321

変更を隠したメッセージを指定したくない場合は、ファイル名を二重ダッシュの後に渡します。

$ git stash -- filename.ext

追跡されていない/新しいファイルの場合は、最初にステージングする必要があります。

ただし、メッセージを指定する場合push、を使用してください。

git stash push -m "describe changes to filename.ext" filename.ext

どちらの方法もgitバージョン2.13以降で機能します

于 2019-03-09T03:59:45.490 に答える
246

おそらくあなたが望む選択だと思いますstash -pが、将来さらに厄介なことに遭遇した場合に備えて、次のことを覚えておいてください。

Stashこれは、実際には、ほんの少し複雑なbranchセットの非常に単純な代替手段です。Stashは、物事をすばやく移動するのに非常に便利ですが、それほど多くの頭痛や作業をすることなく、ブランチを使用してより複雑なことを実行できます。

# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout master

行って、やりたいことを実行してから、後で単純rebaseにおよび/またはmergetmpbranchを実行します。stashで許可されるよりも注意深い追跡を行う必要がある場合は、それほど余分な作業は必要ありません

于 2012-09-14T13:15:28.143 に答える
64

git stash -p(に類似した)を使用して、1行をインタラクティブに隠しておくことができますgit add -p

dファイル名は必要ありませんが、隠したいファイルに到達し、そこにあるすべての変更を。で隠しておくまで、他のファイルをスキップすることができますa

于 2012-09-14T09:25:29.430 に答える
26

最良のオプションは、このファイル以外のすべてをステージングし、stashにインデックスを保持するように指示して、ステージングされていgit stash save --keep-indexないファイルをstashすることです。

$ git add .
$ git reset thefiletostash
$ git stash save --keep-index

ダンが指摘するように、thefiletostashスタッシュによってリセットされるのは1つだけですが、他のファイルもスタッシュするため、正確には必要なものではありません。

于 2012-09-14T08:45:33.717 に答える
18

「gitstash」を使用するたびに「変更を破棄する」という意味の場合に備えて(実際にはgit stashを使用して一時的に隠してはいけません)、その場合は次のように使用できます。

git checkout -- <file>

git stashは、分岐して処理を行う代わりに、より迅速で簡単な方法であることに注意してください。

于 2014-12-19T12:14:32.267 に答える