2012-04-12 35 views
9

Tôi đã đẩy một cam kết vào một repo nơi tôi vô tình thêm tệp. Không ai khác đã sáp nhập từ repo từ xa để tôi có thể viết lại lịch sử. Nhưng khi tôi loại bỏ tập tin (unstage, không loại bỏ từ kiểm soát nguồn, hoặc đĩa) từ cam kết địa phương, tôi không thể đẩy thay đổi. git push lãm Everything up-to-dateXóa tệp khỏi cam kết đã sửa đổi

Trả lời

3

Trong khi tôi đã làm một cái gì đó tương tự như những gì Colin và ydroneaud đã gợi ý,

Câu trả lời là sử dụng

git push +sa1:sa1 

trong đó sa1 là chi nhánh của tôi. Lực này đẩy thậm chí 'không có gì'.

4

Hãy thử:

git rm --cached <yourfile> 
git commit --amend 
git push -f 
+0

Tôi không muốn xóa tệp khỏi theo dõi, chỉ từ cam kết. – sa1

+0

@ sa1 không có khái niệm theo dõi trong git, tệp của bạn có hoặc không nằm trong cam kết cuối cùng của bạn, đó là tất cả. Các tùy chọn khác là chỉ để lại các tập tin đó nhưng không có nội dung hoặc một phần loại bỏ. Git chỉ là một "trình theo dõi nội dung ngu ngốc" được tạo bởi "anh chàng hệ thống tập tin". ;) – KurzedMetal

+0

@KurzedMetal Có một khái niệm về các tệp được theo dõi. Những gì bạn làm ở đây là xóa tệp khỏi các tệp được theo dõi, những gì anh ta muốn làm là xóa các thay đổi được thực hiện trên một tệp trong một cam kết. –

5

Nếu bạn cần phải viết lại đầy đủ cam kết, cố gắng sử dụng

git reset HEAD^ 
git add <files to be part of the commit> 
# or git add -pu 
git commit -C <previous commit number> 

Trước khi làm điều này, bạn sẽ cần phải giữ số cam kết cuối cùng để có thể sử dụng lại thông điệp/ngày/tác giả cam kết.

+0

Tôi đã làm một cái gì đó tương tự. Vấn đề là tôi không thể đẩy những thay đổi đó vào repo từ xa. – sa1

9

Ở đây bạn đi:

git checkout HEAD~ -- path/to/your/file 
git add path/to/your/file 
git commit --amend -C HEAD 

git diff -p HEAD~ -- path/to/your/file | git apply -R 
git commit --amend -C HEAD 

git reset HEAD~ -- path/to/your/file 
git commit --amend -C HEAD 
+0

Tôi đã làm điều này. Vấn đề là các thay đổi không được đẩy đến repo từ xa. – sa1

+0

Bạn phải "đẩy -f' chúng. –

+0

push --force là một trong những điều tôi đã thử. – sa1

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