2011-10-19 32 views

Trả lời

9

Bạn có thể thực hiện mọi thứ bằng cách đẩy mạnh. Thay đổi cây địa phương của bạn để chính xác những gì bạn muốn và git push -f và nó sẽ thay thế cây trên máy chủ với những gì bạn có tại địa phương. Cần lưu ý rằng điều này sẽ gây ra rắc rối với bất kỳ repos khác đã kéo cây bạn chỉ cần thay thế.

7

Nếu bạn muốn chỉnh sửa lịch sử của nhánh từ xa một cách triệt để (ví dụ: rebase/amend), hãy thực hiện thay đổi cục bộ và sau đó thực hiện git push --force. Đôi khi nó không hoạt động (quản trị viên kho lưu trữ có thể vô hiệu hóa tính năng này); trong trường hợp đó, bạn có thể thử xóa chi nhánh từ xa bằng git push origin :my_branch và sau đó đẩy nó lại với git push origin my_branch. Nếu không, bạn có thể sử dụng git revert, đây là cách được khuyến nghị nếu bạn làm việc trong một nhóm (quy tắc chung là lịch sử được xuất bản không được sửa đổi).

Dưới đây là một ví dụ (sử dụng this Github repository):

$ touch SOMETHING 
$ emacs SOMETHING 
$ git add SOMETHING 
$ git ci -m SOMETHING 
[master d14aaa0] SOMETHING 
1 files changed, 1 insertions(+), 0 deletions(-) 
create mode 100644 SOMETHING 
$ git push 
Counting objects: 8, done. 
Compressing objects: 100% (5/5), done. 
Writing objects: 100% (6/6), 611 bytes, done. 
Total 6 (delta 3), reused 0 (delta 0) 
To [email protected]:23Skidoo/ghc-parmake.git 
    53f836a..d14aaa0 master -> master 
$ git reset --hard "HEAD~" 
HEAD is now at 7b2dc96 TODO update. 
$ git push --force 
Total 0 (delta 0), reused 0 (delta 0) 
To [email protected]:23Skidoo/ghc-parmake.git 
+ d14aaa0...7b2dc96 master -> master (forced update) 

Nhìn vào commit history, bạn có thể thấy rằng cam kết d14aaa0 vắng mặt.

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