26

リポジトリ内のいくつかのファイルを変更しましたが、それらを公開したり、一時的なブランチを作成して保存したりしたくありません。これらの変更をどこかに保存したいだけです。したがって、どちらのコマンドが優れているか:

git stash save "save message" 

また

git commit -am "save message"

?

を使用すると、すべてのローカル コミットが 1 つのコマンドgit commitでパブリックにプッシュされるというのは本当ですか? git pushそれらの中で特定のコミットを 1 つだけプッシュしたい場合はどうすればよいですか?

4

4 に答える 4

5

個人的には、プライベート (ローカル) ブランチに直行することを好みますが、stash は機能します。stash については、次の 2 つの点に注意してください。

  • それらは独自のコミットです。ラベルを除いて、「stash」コミットとブランチまたはタグ ラベルに関連付けられたコミットの間に基本的な違いはありません。(タグ ラベルの形式はrefs/tags/tag-fooです。ブランチの形式はrefs/tags/branch-fooです。単一のラベルの付いた stash コミットは、ラベルが付いてrefs/stashいます。もちろん、ブランチ ラベルにも「コミットを追加すると自動的に移動する」機能がありますが、それ以上コミットを追加しない場合は、そこでは決して動かないので、単一のコミットを保存するのと同じように機能します。)
  • 隠し場所の「スタック」1は、reflog を使用して実装されます。reflog期限切れになる可能性があります — デフォルトではほとんどの場合 (30 日または 90 日後) 期限が切れますが、そうでrefs/stashはありませんが、構成エントリでこれを変更できます — そのため、スタックされた stash コミットも "期限切れ" になる可能性があります (同時に reflog エントリの期限が切れます)。 . (より正確には、それらは「収集可能になります」が、なくなった場合、この区別は役に立ちません。:-))

スタッシュの目的は、何かを短期的に保存することです。リポジトリに遅れて戻ってきて、すべて「ブランチ上の WIP」という名前の隠し場所を見つけた場合、それらを理解しようとするのは楽しいことではありません。

その他の機能/バグ :-)stashは次のとおりです。

  • git stash branch事後に気が変わって、スタッシュをブランチに変えることができます。したがって、「短期間」が問題であることが判明した場合 (今日の午後に修正する予定でしたが、現在は少なくとも 1 か月間延期されています)、結局のところ、スタッシュをブランチに変えることができます。
  • git stash apply [--index]現在のブランチに適用された変更を「再作成」するために最善を尽くします。--indexステージングされた変更とステージングされていない変更の両方を個別に復元しようとします。(ただし、これが不可能な場合もあります。)
  • git stash popstash 参照を自動的に破棄します。git stash pop --index残念ながら、使用するつもりでその部分を省略した場合でも、これが行われます--index。を使用すると、状態の一部 (ステージングとステージングなし) が簡単に失われますpop。を使用applyし、後でdropすべてが元の状態に戻ったことを確認すると、この問題を回避できます。

git stash branchを意味することに注意してください--index。新しく作成されたブランチには、ステージングされた変更とステージングされていない変更が、実行したときの状態に復元されますgit stash。(ブランチは、 を行ったときに行っていたコミットからも分岐しますgit stash。) 変更をコミットし (git add必要に応じてさらに -ing するか、2 つの別々のコミットとして、または何でも)、プライベート ブランチを作成したかのように続行します。そもそも。


1stash@{0}スタックの有効期限が切れる部分は、出力の ,以外のすべてのスタッシュで構成されgit stash listます。

于 2013-09-11T18:46:34.327 に答える
1

stashing ツールを使用することをお勧めします。それがここにある理由です。変更を隠しておき、後でコードに追加することができます。git stash で使用できる機能は他にもたくさんあります。ここにリンクがあります http://git-scm.com/book/en/Git-Tools-Stashing

git hereのドキュメントを一度確認することをお勧めします。ツールについてもお読みください。この後、あなたは確実に git の達人になります。

于 2013-09-11T13:27:47.053 に答える