2

通常、作業ディレクトリがクリーンな場合は、「git status」を使用できます。出力は次のようになります。

# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)

ただし、作業ディレクトリが変更された場合、「git status」は次のように出力します。

# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   body/chap1.tex
#
no changes added to commit (use "git add" and/or "git commit -a")

すべての変更をリモート ブランチにプッシュした場合、2 番目の結果は表示されません。作業ディレクトリが変更されたときに、最初の結果が必要な場合があります。そんな状態でどうやって手に入れるの?

4

2 に答える 2

1

これがステージング ツリーの目的です。コミットしたい作業をステージングして、次のようにリポジトリに送信できます。

git add path/to/your/file.php

これにより、ファイルがステージング ツリーに格納されるようにファイルがステージングされ (コミットされた作業またはコミットされていない作業とは別に)、その後のgit status呼び出しでは、ステージングされた作業がコミットされていない作業とは別に表示されます。これは git の標準的な方法であり、コミットする内容を追跡できます。ステージングは​​、選択的なコミットを許可する方法ですが、目的を果たす必要があります。

ステージング領域をよりよく説明するリンクは次のとおりです: http://git-scm.com/book/ch1-3.html

于 2013-07-10T13:48:52.357 に答える
1

おそらく最も簡単な方法は、現在の変更をスタッシュし、チェックしてからスタッシュをポップすることです。そのような、

git stash
git status
git stash pop

これは、新しいファイルなどのすべての変更に対して機能するわけでgit stashはありません (それらを隠していないため)。ただし、私はあなたの問題を再現していないと言わざるを得ません:

ebg@taiyo(14)$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
ebg@taiyo(15)$ ed .gitignore 
1165
...
q
ebg@taiyo(16)$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   .gitignore
#
no changes added to commit (use "git add" and/or "git commit -a")

上記では、相対的なステータスがoriginまだ表示されています。それでも、私の提案はうまくいきます:

ebg@taiyo(17)$ git stash
Saved working directory and index state WIP on master: b541ae8 Ignore 'SPOT Lang*' files
HEAD is now at b541ae8 Ignore 'SPOT Lang*' files
ebg@taiyo(18)$ git status
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
nothing to commit (working directory clean)
ebg@taiyo(19)$ git stash pop
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   .gitignore
#
no changes added to commit (use "git add" and/or "git commit -a")
Dropped refs/stash@{0} (8ff02f7a27053ca7680b0a98048542fcbe2bb440)
于 2013-07-10T14:02:43.887 に答える