Đây là kịch bản: Tôi chia sẻ một số kho lưu trữ từ Github và sao chép nó vào một thư mục cục bộ. Tôi thực hiện một thay đổi, cam kết và đẩy nó vào kho lưu trữ của tôi. Sau đó tôi gửi yêu cầu kéo đến kho lưu trữ ban đầu, nhưng nó bị từ chối vì bất kỳ lý do gì. Kho lưu trữ ban đầu sau đó nhận được một số cam kết từ những người khác, để lại phiên bản chia tay của tôi lỗi thời. Bây giờ, làm thế nào để tôi nhận được phiên bản mới nhất của repo gốc (vào repo chia đôi của tôi và tại địa phương)? Và ngoài ra, làm cách nào để xóa lịch sử cam kết của tôi khỏi Github cho cam kết bị từ chối của tôi?Làm cách nào để lấy lại một repo Git được chia nhỏ mà không xóa và bỏ lại?
Trả lời
Không bao giờ thực hiện các thay đổi của riêng bạn trong nhánh chính, bạn nên tạo nhánh mới thực hiện các thay đổi và đẩy nó. Dù sao nếu bạn muốn làm cho chi nhánh của bạn tương đương với một điều khiển từ xa làm:
Giả sử bạn có thượng lưu như một điều khiển từ xa git fetch upstream
git checkout -f -B master upstream/master
Lệnh thanh toán trên sẽ được nếu chi nhánh tổng thể là có đi trước và ghi đè lên nó với thượng nguồn/chủ nếu nó không có nó tạo ra từ thượng nguồn/chủ.
Nếu bạn không có thượng nguồn thêm vào như là một sử dụng từ xa git remote add upstream repositoryurl
EDIT: nó phải được -B
EDIT: git reset --hard upstream/master
là thích hợp hơn thực
Giữ kho lưu trữ được chia đôi trên GitHub đồng bộ hóa là một quy trình gồm hai bước.
Giữ repo địa phương của bạn đồng bộ với:
git fetch thượng nguồn; git merge thượng nguồn/master
Giữ ngã ba của bạn trên GitHub đồng bộ với repo địa phương của bạn
git push nguồn gốc chủ
Xem GitHub Fork A Repo đối với một số lời giải thích. Bạn cần phải thiết lập 'ngược dòng' như một điều khiển từ xa đến kho lưu trữ mà bạn đã chia đôi.
Đối với 'các cam kết bị từ chối' của bạn, nếu bạn đã thực hiện chúng trên một nhánh địa phương thì bạn chỉ có thể xóa chi nhánh. Nếu nó không thuộc nhánh địa phương, thì bạn sẽ cần phải đặt lại HEAD của nhánh trở lại cam kết bạn chọn. Giống như:
# Assume you are on master and need to go back to commit BeadBabe
git checkout -b temp
git branch -f master BeadBabe
git checkout master
git branch -d temp
Đã qua rồi.
Tôi thấy điều này hơi rõ ràng hơn câu trả lời được chấp nhận. Cảm ơn lời giải thích! – Tim
- 1. Chia nhỏ git repo
- 2. Làm cách nào để lấy lại không gian đã xóa mà không có `db.repairDatabase()`?
- 3. matplotlib lô ảnh nhỏ mà không cần lấy lại mẫu
- 4. Đối diện với `git push --mirror`? Làm thế nào để lấy lại repo của tôi?
- 5. Git: Làm thế nào để bỏ qua một tập tin từ một repo và thêm nó vào một repo khác?
- 6. làm thế nào để khởi động lại kho git
- 7. Git, Làm thế nào để thay đổi một trần để một repo chia sẻ?
- 8. Chia chuỗi chia nhỏ lại theo từng chữ
- 9. Cách tốt nhất để chia sẻ git repo qua ssh
- 10. Làm thế nào để lấy lại mẫu/làm lại phổ?
- 11. Làm cách nào để tạo một repo git trên máy chủ chia sẻ của tôi?
- 12. Làm cách nào để sử dụng lại một truy vấn lớn mà không lặp lại nó?
- 13. Làm cách nào để "mở lại" một cam kết git?
- 14. Làm cách nào để lấy lại không gian từ "Grip"
- 15. Làm thế nào để loại bỏ một repo Git địa phương từ TortoiseGit?
- 16. Làm cách nào để xóa tất cả các tệp trong repo git của tôi và cập nhật/đẩy từ repo git cục bộ của tôi?
- 17. Đặt lại repo cục bộ giống hệt repo từ xa
- 18. Xóa thư mục '.git' khỏi git repo?
- 19. Từ SVN đến GIT và ngược lại
- 20. Tại sao git pull không mang lại các thư mục mà tôi đã xóa?
- 21. Cách lấy lại bộ nhớ cho các LOB đã xóa
- 22. Lỗi bỏ qua Bash và lấy mã trả lại
- 23. Git bỏ qua các file đang được theo dõi mà không xóa chúng
- 24. Plugin Eclipse Git - xóa tệp khỏi repo mà không xóa cục bộ
- 25. Tôi làm cách nào để chia sẻ một dịch vụ giữa các hoạt động mà không cần khởi động lại?
- 26. Xóa một Tệp Hiện tại khỏi một Repo Git
- 27. Làm thế nào để cập nhật GitHub chia nhỏ repo khi yêu cầu kéo bị từ chối?
- 28. Làm cách nào để đóng nhánh mà KHÔNG loại bỏ nó khỏi lịch sử trong git?
- 29. mang lại git repo lên đến một sửa đổi nhất định
- 30. Cập nhật nhóm phát triển với lịch sử repo Git được viết lại, xóa các tệp lớn
thể trùng lặp của [Từ bỏ Git cam kết trên Github cho yêu cầu kéo bị từ chối] (http://stackoverflow.com/questions/9538320/abandoning-git-commits-on-github-for-rejected-pull-requests) – CharlesB