Dưới đây là một ví dụ đoạn ngắn (mà bạn có thể dán vào thiết bị đầu cuối Linux của bạn), tạo ra một kho lưu trữ mới git
và thêm một số tập tin vào nó (sử dụng git phiên bản 1.7.9.5):Làm cho trạng thái git hiển thị các tệp được theo dõi chưa sửa đổi/không thay đổi?
cd /tmp/
mkdir myrepo_git
cd myrepo_git/
git init
git config user.name "Your Name"
git config user.email [email protected]
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"
Bây giờ, sau khi cam kết ban đầu, tôi muốn thay đổi các tệp file_tracked_changed.txt
và giữ các tệp khác (ở đây, chỉ file_tracked_unchanged.txt
) không thay đổi cho lần commit tiếp theo. Dưới đây là một đoạn trong đó chứng minh rằng, kết quả đầu ra và đa dạng của git status
vs git ls-files
(git
sản lượng vỏ được bắt đầu bằng #
):
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
Những gì tôi đang tìm kiếm, là một lệnh mà sẽ hiển thị tất cả các file được theo dõi trong một thư mục (trong đó git ls-files -v
hiện), với trạng thái lưu trữ chính xác của chúng (mà git ls-files
không hiển thị, vì nó hiển thị H
làm trạng thái cho tất cả các tệp được theo dõi). Ví dụ, tôi muốn để có được một cái gì đó giống như giả:
git status-tracked
# M file_tracked_changed.txt
# . file_tracked_unchanged.txt
... nơi dot .
sẽ là biểu tượng cho thấy một sự theo dõi, nhưng tập tin không thay đổi (nếu tôi nhớ chính xác, SVN có thể sử dụng một nhân vật U
cho những cái này).
Cuối cùng, tôi muốn cũng hiển thị trạng thái của tất cả các tập tin trong một thư mục, như trong giả:
git status-tracked-and-untracked
# M file_tracked_changed.txt
# . file_tracked_unchanged.txt
# ?? file_untracked.txt
... nhưng điều quan trọng hơn đối với tôi để có được tình trạng của tất cả các tệp được theo dõi, như trong pseudo git status-tracked
ở trên.
Bất kỳ lệnh nào trong git
, đã thực hiện điều gì đó như thế này?
Hãy thử 'status git -sb' – Kartik
Rất cám ơn những nhận xét @Kartik - nhưng lệnh đó hiển thị theo dõi được sửa đổi + không được theo dõi; Tôi đang tìm một lệnh cho thấy theo dõi sửa đổi + theo dõi chưa được sửa đổi. Chúc mừng! – sdaau