Khi tôi thử 'git push origin master' đến kho lưu trữ từ xa trên đĩa ngoài của tôi, cảnh báo git xảy ra cho biết rằng việc truy vấn kho lưu trữ sẽ trong các phiên bản tiếp theo của git bị từ chối theo mặc định. Trên đĩa ngoài tôi đã kiểm tra dự án và tôi muốn gửi các thay đổi mà tôi đã thực hiện trên máy tính của mình cho các reposiotry này. Có phải 'git push origin master' không đúng cách không? Tôi có phải 'git pull ...' trên kho lưu trữ trên đĩa ngoài của tôi không? Vì vậy, tôi không thể đẩy những thay đổi mà chỉ kéo chúng? Chỉ làm việc với kho 'bare' là khác nhau? Vì vậy, nếu kho lưu trữ trên đĩa bên ngoài của tôi là một kho lưu trữ trần tôi có thể đẩy những thay đổi cho nó? Tôi có hiểu đúng không?Git chỉ áp dụng cho các kho lưu trữ trống?
Trả lời
Bạn không nên đẩy tới kho lưu trữ không trống vì việc đẩy sẽ chỉ cập nhật trạng thái nội bộ của repo và sẽ không ảnh hưởng đến các bản sao đã sao lưu trên đĩa của tệp. Do đó, bạn có thể gặp sự cố nếu bạn bắt đầu làm việc trong repo đó mà không cập nhật lần đầu (qua git checkout
) các bản sao trên đĩa của trạng thái của các tệp trong repo.
Đọc kỹ cảnh báo. Lệnh cấm mặc định mới chỉ được đẩy vào nhánh hiện đã được kiểm tra trong một kho lưu trữ không phải là trần. Nó là hoàn toàn OK để đẩy đến bất kỳ chi nhánh khác trong một kho không trần.
Lý do cho điều này là quá trình đẩy không có quyền truy cập trực tiếp vào cây làm việc để chỉ mục và đầu nhánh được thay đổi dưới gốc cây đang hoạt động. Khi bạn sau đó đi đến cây làm việc có vẻ như cây làm việc đã hoàn tác các thay đổi được đẩy lẫn lộn với bất kỳ thay đổi nào thực sự đang phát triển. Điều này làm cho nó rất khó khăn để tách hai bộ thay đổi.
Đẩy tới các nhánh khác không có những nhược điểm như vậy. Sau đó, bạn có thể đi đến kho lưu trữ đó và hợp nhất các thay đổi đó vào chi nhánh đã thanh toán nếu muốn.
Tôi không hiểu câu trả lời này cho đến khi tôi đọc [git ready »push to only bare repositories] (http://gitready.com/advanced/2009/02/01/push-to-only-bare-repositories.html) và [tất cả về repos "trần" - những gì, tại sao, và làm thế nào để sửa chữa một push không trần] (http://sitaramc.github.com/concepts/bare.html) (đặc biệt là "yeah yeah, nhưng tại sao Tôi cần một repo trần? "phần). Bây giờ, tuy nhiên, tôi làm! –
Chúng ta có khả năng đẩy chi nhánh không được kiểm tra ra ngoài và sau đó sử dụng barnch móc hợp nhất móc sau khi nhận với nhánh đã được cập nhật không? –
- 1. Tạo kho lưu trữ git chứa một kho git khác
- 2. Các kho lưu trữ git lồng nhau?
- 3. git kho lưu trữ nhân bản kho
- 4. Git, xóa kho lưu trữ
- 5. Biểu tượng kho lưu trữ Git
- 6. git chỉ đẩy một phần của kho lưu trữ
- 7. Sử dụng kho lưu trữ Git cục bộ với kho lưu trữ Subversion chính
- 8. git khi thay đổi kho lưu trữ
- 9. Git kho lưu trữ tương thích ngược
- 10. Xóa kho lưu trữ git trên Bitbucket?
- 11. Jenkins: Nhiều kho lưu trữ Git cho một dự án
- 12. grep cho nội dung trong nhiều kho lưu trữ git
- 13. Quản lý nhiều kho lưu trữ git
- 14. git hợp nhất các kho lưu trữ khác nhau?
- 15. Nhiều kho lưu trữ Git cho từng dự án Eclipse hoặc một kho Git
- 16. đặt kho lưu trữ ftp bằng git
- 17. Cách chia sẻ tệp trên các kho lưu trữ git?
- 18. Cách tạo chi nhánh trong kho lưu trữ trống trong Git
- 19. Git "dường như không phải là kho lưu trữ git"
- 20. áp dụng bản vá svn cho kho git
- 21. Làm cách nào để kéo/tìm nạp với Git * INTO * một kho lưu trữ trống?
- 22. Git: Cách đúng để thay đổi Active Branch trong kho lưu trữ trống?
- 23. Ghi đè kho lưu trữ git từ xa với kho lưu trữ của tôi
- 24. Git: Bỏ qua các tệp cho kho lưu trữ công cộng, nhưng không dành cho riêng
- 25. Git subtree: Chỉ sử dụng subrepository thay vì toàn bộ kho lưu trữ
- 26. Các phương pháp hay nhất cho kho lưu trữ git trên các dự án nguồn mở
- 27. Làm cách nào để đẩy tới kho lưu trữ Git không trống?
- 28. Lưu trữ Git của kho lưu trữ với các thay đổi không được cam kết
- 29. Git vô hiệu đẩy từ kho lưu trữ cục bộ
- 30. Git hooks - tuyên truyền từ kho lưu trữ từ xa?
Vì vậy, việc đẩy đến repo không chính xác là một sự lôi kéo từ repo? –
trở thànhGuru: Đúng; một cú đẩy có hiệu quả ngược lại với việc tìm nạp. Pull = fetch + merge vào nhánh hiện tại. – ebneter
Điều quan trọng là việc kéo cũng cập nhật các tệp trong cây đang hoạt động (các tệp "trên đĩa"), mà không phải thao tác đẩy cũng không tìm nạp. – mipadi