2012-06-06 33 views
25

Thường thì tôi di chuyển các tệp trong một kho lưu trữ git bằng cách sử dụng IDE của tôi hoặc thông qua dòng lệnh (không phải thông qua git mv).Cách dễ dàng để dọn dẹp các tệp đã xóa không được dàn dựng trong Git

Như một kết quả I và kết thúc với một số tập tin unstaged bị xóa trên của tôi bên cạnh cam kết như sau:

# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# modified: test.html 
# 
# Changes not staged for commit: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: css/bootstrap.css 
# deleted: css/bootstrap.min.css 
# deleted: img/glyphicons-halflings-white.png 
# deleted: img/glyphicons-halflings.png 
# deleted: js/bootstrap.js 
# deleted: js/bootstrap.min.js 

tôi thường sẽ chọn tất cả các tập tin bị xóa và chỉnh sửa chúng trong một trình soạn thảo văn bản để sản xuất như :

git rm css/bootstrap.css 
git rm css/bootstrap.min.css 
git rm img/glyphicons-halflings-white.png 
git rm img/glyphicons-halflings.png 
git rm js/bootstrap.js 
git rm js/bootstrap.min.js 

Tôi sau đó quay lại bảng điều khiển.

Có cách nào để thực hiện việc này mà không phải sao chép/dán không?

Trả lời

36

Nếu tôi hiểu đúng câu hỏi của bạn, bạn muốn thực hiện xóa ... nghĩa là bạn muốn thực hiện tương đương git rm cho tất cả của các tệp hiển thị là đã xóa. git clean sẽ không làm điều này.

Bạn có thể chạy git add -u:

Chỉ phù hợp chống lại đã theo dõi các tập tin trong chỉ mục chứ không phải là cây làm việc. Điều đó có nghĩa rằng nó sẽ không bao giờ giai đoạn mới tệp, nhưng nó sẽ giai đoạn sửa đổi nội dung mới của tệp được theo dõi và nó sẽ loại bỏ tệp khỏi chỉ mục nếu các tệp tương ứng trong cây đang hoạt động đã bị xóa.

Điều này sẽ nhận tất cả thay đổi đối với tệp được theo dõi, bao gồm cả xóa. Vì vậy, nếu bạn bắt đầu với điều này:

# Changes not staged for commit: 
# (use "git add/rm <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
# deleted: file2 
# deleted: file3 
# deleted: file4 
# deleted: file5 

Chạy git add -u sẽ giúp bạn có được điều này:

# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
# deleted: file2 
# deleted: file3 
# deleted: file4 
# deleted: file5 

Và một cam kết tại thời điểm này sẽ làm điều đúng.

+0

sẽ "git add -A" cũng phù hợp cho việc này? –

0

git add -u sẽ cập nhật trạng thái của tệp được theo dõi.

1

Tôi thường thực hiện cam kết của các tệp mà tôi đã thực hiện thay đổi.

Nếu tôi muốn đã xóa file không cần thiết, tôi sẽ làm như sau sau này:

git commit -a -m 'deleted redundant files' 
Các vấn đề liên quan