Pertanyaan git dorong ke beberapa repositori secara bersamaan [duplikat]


Pertanyaan ini sudah memiliki jawaban di sini:

Bagaimana saya bisa membuatnya git push untuk mendorong tidak hanya untuk origin tetapi juga repositori jarak jauh lainnya?

sebagai git push hanya alias untuk git push origin, dapatkah saya alias git push untuk mendorong ke 2 repositori jarak jauh sekaligus (hanya dengan satu perintah)?

Saya tidak mencari skrip non-git di sini tetapi ingin menyiapkan ini untuk repositori lokal saya di git.

Ketika saya mencoba dengan skrip pasca-push saya gagal.


76
2017-11-23 12:10


asal


Jawaban:


Saya tidak berpikir Anda dapat melakukannya hanya dengan menyetel bendera di git, tetapi Anda dapat memodifikasi file konfigurasi yang memungkinkan Anda untuk mendorong ke beberapa repositori jarak jauh tanpa mengetiknya secara manual (baik hanya mengetiknya dalam waktu pertama dan tidak setelah)

Dalam .git/config file Anda dapat menambahkan beberapa url ke remote yang ditentukan:

[remote "all"]
    url=ssh://user@server/repos/g0.git
    url=ssh://user@server/repos/g1.git

Jika kamu git push all sekarang Anda mendorong ke semua url remote.


119
2017-11-23 12:18



Tidak ada pengeditan manual

Anda dapat menambahkan beberapa URL ke cabang jarak jauh (mis. all) langsung dari baris perintah dengan menggunakan git config --add remote.xyz.url dengan URL differents:

git config --add remote.all.url ssh://user@server/repos/g0.git
git config --add remote.all.url ssh://user@server/repos/g1.git

Sepenuhnya otomatis

Jika kamu super malas dan jangan sanggup menyalin / menyisipkan URL beberapa kali, ini untuk Anda:

function git-add-push-all() {
  while read -r name url method; do
    git config --add remote.all.url "$url"
  done < <(git remote -v | awk '!/^all/ && /push/')
}

git-add-push-all # from git (sub)directory

Skrip bashy penuh dimungkinkan (uji $name dan $method), tapi awk manis dan ada cinta untuk semua orang.

Dorong

Kemudian Anda dapat mendorong ke semua remote dengan

git push all

Referensi


51
2017-09-05 13:24



Anda juga bisa mendapatkan url dari remote yang dikonfigurasi:

for repo in g0 g1 ...
do
    git config --add remote.all.url `git config remote.$repo.url`
done

di mana g0, g1, ... adalah nama-nama dari remote Anda.


0
2018-03-03 15:15