2015-03-17 12 views
10

Khi tôi làmGit hoàn nguyên tất cả những thay đổi đó sẽ được bỏ qua bởi diff git -w

git diff -w file_name 

Tôi thấy các đường chỉ thêm nhưng khi tôi loại bỏ -w Tôi thấy rất nhiều dòng loại bỏ và tái bổ sung quá.

Tôi muốn thay đổi tệp để tôi chỉ hiển thị các thay đổi không bị bỏ qua bởi tùy chọn -w.

Có lệnh nào không?

+0

Có thể sử dụng tập lệnh tương tự như móc trước khi commit mà tôi đã đề cập trong http://stackoverflow.com/a/592014/6309? – VonC

+0

@VonC: Tôi sẽ rất biết ơn nếu bạn có thể làm hài lòng kịch bản đó cho chúng tôi. –

+0

@Abhishek bạn có ý như thế này không? https://github.com/imoldman/config/blob/master/pre-commit.git.sh – VonC

Trả lời

0

Bạn có thể làm

git diff --no-color > stage.diff && git apply -R stage.diff && git apply --whitespace=fix stage.diff && rm -f stage.diff 

Nếu bạn chưa cam kết bất kỳ thay đổi nào.

+0

Điều này không hiệu quả đối với tôi. Tôi nhận được nhiều lỗi "vá lỗi". –

5

jupp0r đang đi đúng hướng. Trước tiên, cd vào thư mục gốc của kho lưu trữ của bạn. Sau đó:

git commit -a -m 'Backup commit.' 
git branch pre-patch 
git reset --hard HEAD~ 
git diff --patch -w HEAD pre-patch > patch.diff 
git apply patch.diff 

Tôi không chắc liệu điều này có hiệu quả đối với các thay đổi nhị phân hay không. Nếu không, bạn có thể cam kết riêng trước đó. Nếu quá trình này không thành công, mã của bạn nằm trong chi nhánh pre-patch.

Điều này không:

  • Tạo một cam kết và một chi nhánh để lưu trữ những thay đổi đầy đủ. Điều này cũng phục vụ như một bản sao lưu.
  • Quay lại một bước, trước khi thực hiện các thay đổi đó.
  • Lấy "diff-w" từ mã cũ sang mã mới, được định dạng dưới dạng bản vá.
  • Áp dụng bản vá.

Lưu ý: Nếu bạn đã cam kết thay đổi và muốn sửa đổi, chỉ cần bỏ qua bước đầu tiên.

Các vấn đề liên quan