http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file
投稿を見つけました。
しかし、それでも何が違うのか分かりません
git checkout <filename>
git checkout -- <filename>
どのような状況で、最初のものと2番目のものをそれぞれ使用する必要がありますか?
http://norbauer.com/notebooks/code/notes/git-revert-reset-a-single-file
投稿を見つけました。
しかし、それでも何が違うのか分かりません
git checkout <filename>
git checkout -- <filename>
どのような状況で、最初のものと2番目のものをそれぞれ使用する必要がありますか?
回答:
特別な「オプション」--
は、「この後のすべての引数を、それがどのように見えるかに関係なく、ファイル名として扱う」ことを意味します。これはGit固有ではなく、一般的なUnixコマンドラインの規則です。通常、これを使用して、引数がオプションではなくファイル名であることを明確にします。たとえば、
rm -f # does nothing
rm -- -f # deletes a file named "-f"
git checkout
1--
は、後続の引数が、必要なコミットを指定するオプションの「ツリー」パラメーターではないことも意味します。
したがって、この文脈でそれはだ、安全に使用するために--
、常に、しかし、あなたは必要とするあなたが元に戻したいファイルで始まる名前を持つ場合、それを-
、またはブランチの名前と同じです。ブランチ/ファイルの明確化の例:
git checkout README # would normally discard uncommitted changes
# to the _file_ "README"
git checkout master # would normally switch the working copy to
# the _branch_ "master"
git checkout -- master # discard uncommitted changes to the _file_ "master"
およびオプション/ファイルの明確化:
git checkout -p -- README # interactively discard uncommitted changes
# to the file "README"
git checkout -- -p README # unconditionally discard all uncommitted
# changes to the files "-p" and "README"
名前がで始まるブランチがある場合、どうすればよいかわかりません-
。おそらくそもそもそれをしないでください。
このモードでは1。「チェックアウト」は他にもいくつかのことができます。私がgitが他のほとんどのVCSのように「元に戻す」やgit独自の用語でより意味があると思われる「リセット」ではなく、「チェックアウト」サブコマンドのモードとして「コミットされていない変更の破棄」を実装することを選択した理由を理解していません。
--
、オプションと引数の間のセパレータとして広く実装されています。これは、POSIX getopt(3)
を使用してコマンドラインオプション(を参照man 3 getopt
)、を使用するシェルスクリプトgetopt(1)
、およびそれ自体を実装する一部のプログラムを処理するすべてのプログラム/ユーティリティで機能しますが、正常に動作することは保証されていません。
--
「変更を無効にする」ことを意味すると想定して、私は作業中の変更を破棄する方法の例を読み返し、それ以来ずっと考えていました。吹き飛ばされた心!