2010-09-07 40 views
5

Tôi đang sử dụng hộp làm repo được chia sẻ và nhóm của tôi kết nối với nó qua ssh.Cách tốt nhất để chia sẻ git repo qua ssh

Những gì tôi làm là:

  1. Tạo một kho git trống trên máy trung tâm git init

  2. Sau đó từ mỗi máy trạm làm một cái gì đó giống như git clone ssh://[email protected]/Users/user/Projects/my-project/.git/

này hoạt động tốt đẹp, nhưng git cứ hét vào mặt tôi mỗi khi tôi đẩy một cái gì đó như thế này:

alt text

Có cách nào tốt hơn để chia sẻ một repo qua ssh.

QUAN TRỌNG: Tôi biết rõ về sự tồn tại của gitosis và các công cụ như thế, tôi không muốn bất cứ điều gì ưa thích. Chỉ cần chia sẻ một .git repo trên ssh.

Cảm ơn

Trả lời

8

Trên máy chủ bạn nên làm

git init --bare 

Bởi vì bạn không cần các tập tin thực tế, chỉ là repo.

Nếu thông điệp cảnh báo là một sự thúc đẩy FIRST đến một repo, và không ai đã chạm vào nó, làm một

git push -f 

Nếu không, lỗi này có nghĩa là chương trình chi nhánh của bạn là không đúng. Bạn KHÔNG nên chỉnh sửa nhánh gốc/tên chi nhánh. Bạn muốn chi nhánh địa phương của bạn được gọi là BRANCHNAME, sau đó khi bạn đã sẵn sàng để kiểm tra trong mã của bạn, bạn làm

git commit 
git pull 
git push 

Và bạn sẽ đẩy từ BRANCHNAME địa phương để origin/BRANCHNAME.

Sửa

Tôi muốn nhìn thấy đầu ra của lệnh này trong repo địa phương của bạn:

git branch 

Bạn không nên xem nguồn gốc từ hoặc tên máy chủ của bạn bất cứ nơi nào trong đầu ra

+0

Không, 'git branch' trên máy của tôi (không phải là" trần "repo) sản lượng * master –

+0

Có cách nào để" sửa "hộp trung tâm bây giờ mà tôi đã tạo ra repo mà không qua đi - như là một cuộc tranh cãi? : S –

+0

Repo địa phương của bạn nên có mọi thứ repo từ xa. Kéo nó xuống để chắc chắn, sau đó chỉ cần thổi đi repo, làm cho một trần, và đẩy tất cả mọi thứ trở lại. – bwawok

3

Ngoài giải pháp của bwawok, bạn cần xem các vấn đề về quyền. Theo mặc định, khi git tạo tệp trên danh nghĩa của người dùng, quyền của họ được lấy từ umask của người dùng và nhóm của họ được đặt thành nhóm mặc định của người dùng. Đối với các umask thông thường và các nhóm mặc định, điều này sẽ phá vỡ một repo được chia sẻ, vì các tệp như vậy sẽ không thể sửa đổi được bởi những người dùng khác.

May mắn thay, git có thể được định cấu hình để làm điều đúng trong trường hợp này: Hãy xem tùy chọn --shared để git init (hoặc cài đặt core.sharedRepository).Tùy chọn đơn giản nhất có lẽ là --shared=group, cho phép ghi quyền truy cập vào tất cả người dùng trong nhóm "git".

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