Bạn muốn kho lưu trữ trung tâm của bạn để trần. Nói máy mà nó sống được đặt tên static
:
$ ssh static git init --bare /git/myproject.git
Kho lưu trữ trần này là một điểm hẹn trung tâm: đó là để đẩy và kéo từ đó, không phát triển.
Phát triển của bạn trên bản sao của kho lưu trữ trung tâm:
$ cd ~/src
$ git clone static:/git/myproject.git
Ngay cả khi bạn đang ở trên static
, làm việc trong một bản sao:
$ git clone /git/myproject.git
Mặc dù bạn là người duy nhất làm việc trên kho lưu trữ này, hãy tập thói quen thực hiện công việc của bạn về những gì tài liệu git gọi là các nhánh chủ đề . Một lợi ích ngay lập tức của việc này là nó giữ một bản gốc sạch , đó là bạn luôn có thể kéo từ nhánh chính trung tâm của mình vào bản gốc của kho lưu trữ cục bộ hiện tại mà không cần hợp nhất.
Ví dụ:
$ git checkout -b fix-bug-in-foo
$ hack
$ git add file.c file.h
$ git commit -m "Fix ..."
Điều đó có vẻ không phải là một vấn đề lớn, nhưng nó cho phép bạn tự do rời khỏi dự án như được đại diện trên chi nhánh đó ở trạng thái chín một phần, hoặc nếu ý tưởng tuyệt vời của bạn hóa ra là một sự thất bại, bạn có thể dễ dàng vứt bỏ chi nhánh đó mà không cần phá vỡ bất cứ điều gì khác trong dự án của bạn đã làm việc trên các chi nhánh khác. Mulligans miễn phí vô hạn!
Có thể bạn về nhà tối hôm đó và thêm một tính năng mới. Sáng hôm sau, bạn
$ git checkout master
$ git pull
để cập nhật chủ địa phương của bạn để phản ánh những gì trong kho lưu trữ trung tâm.
Nhưng bây giờ hãy nói rằng bạn đã sửa lỗi foo và sẵn sàng đưa nó vào nhánh chính của bạn. Đầu tiên bạn muốn tích hợp nó với những thay đổi từ tối qua:
$ git checkout fix-bug-in-foo
$ git rebase master
Các rebase
lệnh làm cho cái nhìn kho của bạn như thể bạn sửa lỗi foo trên đầu trang của tính năng mới đêm qua. (Đây là loại tương tự svn update
, nhưng linh hoạt và mạnh mẽ hơn.)
Bây giờ để có được nó vào chủ trung tâm của bạn:
$ git checkout master
$ git merge fix-bug-in-foo
$ git push origin master
Chúng tôi đã coi chủ là đặc biệt, nhưng đó chỉ là thông thường. Bạn có thể chia sẻ công việc trên các nhánh khác nhau của các kho lưu trữ khác nhau thông qua kho git static
một cách dễ dàng.