以下は簡単なスニペットの例です (Linux ターミナルに貼り付けることができます)。新しいgitリポジトリを作成し、いくつかのファイルを追加します (git バージョン 1.7.9.5 を使用):
cd /tmp/
mkdir myrepo_git
cd myrepo_git/
git init
git config user.name "Your Name"
git config user.email you@example.com
echo "test" > file_tracked_unchanged.txt
echo "test" > file_tracked_changed.txt
echo "test" > file_untracked.txt
git add file_tracked_unchanged.txt
git add file_tracked_changed.txt
git commit -m "initial commit"
ここで、最初のコミットの後、ファイルを変更し、次のコミットのためfile_tracked_changed.txtに他のファイル (ここでは のみfile_tracked_unchanged.txt) を変更しないようにします。以下はそれを示すスニペットで、git statusvsのさまざまな出力git ls-files(gitシェル出力の前に が付きます#):
echo "test more" >> file_tracked_changed.txt
git status -uno
# # 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: file_tracked_changed.txt
# #
# no changes added to commit (use "git add" and/or "git commit -a")
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: file_tracked_changed.txt
# #
# # Untracked files:
# # (use "git add <file>..." to include in what will be committed)
# #
# # file_untracked.txt
# no changes added to commit (use "git add" and/or "git commit -a")
git status -uno --short
# M file_tracked_changed.txt
git status --short
# M file_tracked_changed.txt
# ?? file_untracked.txt
git ls-files -v
# H file_tracked_changed.txt
# H file_tracked_unchanged.txt
git add file_tracked_changed.txt
git status -uno
# # On branch master
# # Changes to be committed:
# # (use "git reset HEAD <file>..." to unstage)
# #
# # modified: file_tracked_changed.txt
# #
# # Untracked files not listed (use -u option to show untracked files)
git status
# # On branch master
# # Changes to be committed:
# # (use "git reset HEAD <file>..." to unstage)
# #
# # modified: file_tracked_changed.txt
# #
# # Untracked files:
# # (use "git add <file>..." to include in what will be committed)
# #
# # file_untracked.txt
git status -uno --short
# M file_tracked_changed.txt
git status --short
# M file_tracked_changed.txt
# ?? file_untracked.txt
git ls-files -v
# H file_tracked_changed.txt
# H file_tracked_unchanged.txt
私が探しているのは、ディレクトリ内のすべての追跡ファイルを表示するコマンドです(これは表示されます)。git ls-files -v正確なリポジトリ ステータス (すべての追跡ファイルのステータスとして表示されるためgit ls-files、表示されませんH)。たとえば、擬似コードのようなものを取得したいと思います:
git status-tracked
# M file_tracked_changed.txt
# . file_tracked_unchanged.txt
...ここで、ドット.は追跡されているが変更されていないファイルを示す記号になります(正しく思い出せば、SVNはUこれらに文字を使用する場合があります)。
最終的に、擬似コードのように、ディレクトリ内のすべてのファイルのステータスも表示したいと思います。
git status-tracked-and-untracked
# M file_tracked_changed.txt
# . file_tracked_unchanged.txt
# ?? file_untracked.txt
...しかし、上記の擬似のように、追跡されているすべてのファイルのステータスを取得することがより重要ですgit status-tracked。
gitで、すでにこのようなことを行っているコマンドはありますか?