web-dev-qa-db-ja.com

個々のファイルをgitstash / unstashするグラフィカルな方法はありますか?

GitでファイルをスタッシュおよびスタッシュポップするためのGUIを探しています。これは、個々の変更されたファイルに対して行うことができます。私はそうするためのコマンドラインの方法があることを知っています、見られる ここ 、しかし私はグラフィカルな方法を探しています。個々のファイルを隠しておくことはあまり気にしませんが、ポップ/適用についてはもっと気にします。私はWindows7で実行しています。

12
Chance

git stash 言う:

使用する git stash作業ディレクトリとインデックスの現在の状態を記録したいが、クリーンな作業ディレクトリに戻りたい場合。このコマンドは、ローカルの変更を保存し、作業ディレクトリをHEADコミットに一致するように戻します。

サポートはほとんどありません1 個々のファイルを処理する目的は、現在の変更を安全に保存し、作業ツリーをクリーンな状態にすばやく戻すことです(つまり、現在のブランチで最後にコミットした直後の状態)。

新しいブランチを作成し、必要なステータスに到達するまで(任意の量または組み合わせで)変更をコミットすると、必要なことを(そしてスタッシングよりも柔軟な方法で)実行できます。次に、前のブランチをチェックアウトするだけで完了です。

このアプローチにより、変更を後で現在のブランチにマージして、一部のコミットのみ、またはそれらから一部のファイルを選択することができます。


1git stash saveはオプションを提供します--patchこれにより、ユーザーはHEADと隠しておく作業ツリーの違いからハンクをインタラクティブに選択できます。これにより、スタッシュに追加される内容を細かく制御できます。

追加の議論

あなたは言う:

gitからのPerforceを使用しているので、スタッシュを「棚」型に合わせようとしていますが、分岐がより良い方法だと思います。これに関連しているのは、 gitextensions ある種、自分のスタッシュからブランチを作成するため、個々のファイルを取得するときに、スタッシュはできるかもしれませんが、ブランチのように扱うことができます。

内部的には、各スタッシュは コミットとして保存されます スタッシュが作成された時点でHEADであったコミットにリンクされていますが、前のスタッシュ(存在する場合)にはリンクされていません。隠し場所のリストはメタデータとして保存されます。隠し場所は(非表示の)ブランチではリンクされていません

もっと、 git stash createスタッシュのリストに追加せずに、スタッシュを作成できます。これはスクリプト用に提供されており、「おそらく使用したいコマンドではありません」(ドキュメントから引用しました)。

3
axiac

<USER HOME directory>\.gitconfigの「GitGUI」にメニューとしてStashコマンドを追加するという推奨事項を見ました ここ

[guitool "Stash/show"]
  cmd = git stash show -p
[guitool "Stash/list"]
  cmd = git stash list
[guitool "Stash/pop"]
  cmd = git stash pop
[guitool "Stash/drop"]
  cmd = git stash drop
  confirm = yes

また、スタッシングを実行するコマンドをもう1つ追加しました(使用するには、Gitが必要な「追加」を実行するために、スタッシュしたいファイルを最初にステージングする必要がありますが、コミットする必要はありません)。

[guitool "Stash"]
  cmd = git stash

(「スタッシュ」をサブメニューとして表示しないように選択したことに注意してください。ただし、表示することはできます。)

[ツール]-> [追加]からGitGUI自体からコマンドを追加することもできます。

ブランチ名を気にせずにファイルをすぐに頭に入れたい場合は、スタッシングが役立ちます。

9
Brett Zamir

Sourcetreeを試しましたか: http://www.sourcetreeapp.com/

それはあなたの問題を解決するかもしれません。

3
Anshul Mengi