2008-10-02 25 views
41

Về cơ bản tôi muốn làm một cái gì đó giống như git push mybranch to repo1, repo2, repo3Tôi có thể đẩy vào nhiều hơn một kho lưu trữ trong một lệnh duy nhất trong git không?

ngay bây giờ tôi chỉ cần gõ đẩy nhiều lần, và nếu tôi đang vội đến sự thúc đẩy thực hiện, tôi chỉ cần gửi cho họ tất cả để nền git push repo1 & git push repo2 &

Tôi chỉ tự hỏi nếu git hỗ trợ những gì tôi muốn làm, hoặc nếu có thể có một kịch bản thông minh, hoặc có thể là cách chỉnh sửa tệp cấu hình repo cục bộ để nói nhánh cần được đẩy tới nhiều điều khiển từ xa.

Trả lời

79

Bạn có thể có một vài URL mỗi từ xa trong git, mặc dù lệnh git remote đã không xuất hiện để lộ này cuối cùng tôi đã kiểm tra. Trong .git/config, đặt một cái gì đó như thế này:

[remote "public"] 
    url = [email protected]:kch/inheritable_templates.git 
    url = [email protected]:projects/inheritable_templates.git 

Bây giờ bạn có thể nói “git push public” để thúc đẩy cho cả hai Repos cùng một lúc.

+2

Mẹo hay. Lưu ý, điều này chỉ hoạt động để đẩy. Để tìm nạp, dường như chỉ sử dụng mục nhập url đầu tiên. Nó cũng có vẻ như bạn có thể nhắm mục tiêu một chi nhánh trên đa xa này. Vì vậy, bạn chỉ có thể làm "git pull" mà không có tên từ xa nếu bạn thêm một cái gì đó như thế này để cấu hình của bạn '[branch" master "] remote = public' – studgeek

+0

Cảm ơn bạn, tiết kiệm cuộc sống meh! –

10

Những gì tôi làm là có một kho lưu trữ trống duy nhất nằm trong thư mục chính mà tôi nhấn vào. Móc sau khi cập nhật trong kho lưu trữ đó sau đó đẩy hoặc rsyncs đến một số vị trí hiển thị công khai khác.

Đây là móc tôi/post-update:

#!/bin/sh 
# 
# An example hook script to prepare a packed repository for use over 
# dumb transports. 
# 
# To enable this hook, make this file executable by "chmod +x post-update". 

# Update static info that will be used by git clients accessing 
# the git directory over HTTP rather than the git protocol. 
git-update-server-info 

# Copy git repository files to my web server for HTTP serving. 
rsync -av --delete -e ssh /home/afranco/repositories/public/ [email protected]:/srv/www/htdocs/git/ 

# Upload to github 
git-push --mirror github 
+0

tốt. quan tâm để chia sẻ hoặc giải thích git-update-server-info? – kch

+0

Như tôi đã thêm vào câu trả lời: git-update-server-info viết một số tệp thông tin tĩnh sẽ được các khách hàng git sử dụng truy cập thư mục git qua HTTP thay vì giao thức git. Xem phần sau để biết thêm thông tin: http://www.kernel.org/pub/software/scm/git/docs/git-update-server-info.html –

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