lựa chọn tốt nhất
Có lẽ sạch, ít nhất là khó hiểu, và cách an toàn nhất để đẩy vào kho lưu trữ từ xa phi trần của bạn, là để thúc đẩy cho các chi nhánh chuyên dụng trong điều khiển từ xa mà đại diện cho chi nhánh máy tính xách tay của bạn.
Hãy xem xét trường hợp đơn giản nhất và giả sử bạn chỉ có một nhánh trong mỗi repo: master. Khi bạn đẩy đến repo từ xa từ máy tính xách tay của bạn, thay vì đẩy master -> master, push master -> laptop-master (hoặc tên tương tự). Bằng cách này, việc đẩy không ảnh hưởng đến nhánh chính hiện đã được kiểm tra trong repo từ xa. Để làm điều này từ máy tính xách tay, lệnh là khá đơn giản:
git push origin master:laptop-master
Điều này có nghĩa rằng các chi nhánh tổng thể địa phương sẽ được đẩy đến chi nhánh có tên là "máy tính xách tay bị Thạc sỹ" trong kho lưu trữ từ xa. Trong repo từ xa của bạn, bạn sẽ có một chi nhánh mới có tên là "máy tính xách tay-master" mà sau đó bạn có thể hợp nhất vào chủ từ xa của bạn khi bạn đã sẵn sàng.
thay thế Lựa chọn
Nó cũng có thể chỉ đẩy master -> bậc thầy, nhưng đẩy đến chi nhánh hiện check-out của một repo phi trần thường không được khuyến khích, bởi vì nó có thể gây nhầm lẫn nếu bạn không hiểu chuyện gì đang diễn ra. Điều này là do việc đẩy vào một chi nhánh đã kiểm tra không cập nhật cây công việc, vì vậy việc kiểm tra git status
trong chi nhánh đã được kiểm tra đã được đẩy vào sẽ cho thấy chính xác sự khác biệt đối nghịch với những gì gần đây nhất được đẩy. Nó sẽ trở nên đặc biệt khó hiểu nếu cây công việc bị bẩn trước khi đẩy được thực hiện, đó là một lý do lớn tại sao điều này không được khuyến khích.
Nếu bạn muốn thử chỉ đẩy master -> tổng thể, sau đó lệnh chỉ là:
git push origin
Nhưng khi bạn quay trở lại repo từ xa, bạn sẽ rất có thể muốn làm một git reset --hard HEAD
để làm cho cây công việc đồng bộ với nội dung đã được đẩy. Điều này có thể nguy hiểm, bởi vì nếu có bất kỳ các thay đổi không cam kết nào trong cây làm việc từ xa mà bạn muốn giữ nó sẽ xóa chúng. Hãy chắc chắn rằng bạn biết hậu quả của điều này là gì trước khi bạn thử nó, hoặc ít nhất là tạo một bản sao lưu trước!
EDIT Kể từ Git 2.3, bạn có thể sử dụng lệnh "push-to-deploy" git push: https://github.com/blog/1957-git-2-3-has-been-released. Nhưng đẩy vào một nhánh riêng biệt và sau đó hợp nhất thường tốt hơn vì nó thực sự hợp nhất (do đó làm việc với những thay đổi không được cam kết giống như việc hợp nhất).
liên quan: http://stackoverflow.com/questions/12265729/git-config-receive-denycurrentbranch – prusswan
có 2 từ xa repos, một trần và bình thường, và sử dụng móc. có vẻ như một rắc rối, nhưng theo [git ready] (http://gitready.com/advanced/2009/02/01/push-to-only-bare-repositories.html) và [wiki chính thức] (https : //git.wiki.kernel.org/index.php? title = Git_FAQ & oldid = 23811 # Why_won.27t_I_see_changes_in_the_remote_repo_after_.22git_push.22.3F), bạn nên ** chỉ đẩy đến một repo trần **. điều này có lẽ là lý do tại sao hầu hết các host git repo (ví dụ GitHub, Bitbucket) bao gồm các móc sau khi nhận, vì vậy bạn có thể POST tới một URL trên máy chủ của bạn chạy một kịch bản thực thi ví dụ 'git pull github master'. –