Katakanlah saya memiliki pc desktop dan laptop, dan terkadang saya bekerja di desktop dan terkadang saya bekerja di laptop.
Apa cara termudah untuk memindahkan repositori git bolak-balik?
Saya ingin repositori git identik, sehingga saya dapat melanjutkan tempat yang saya tinggalkan di komputer lain.
Saya ingin memastikan bahwa saya memiliki cabang dan tag yang sama di kedua komputer.
Terima kasih Johan
Catatan: Saya tahu bagaimana melakukan ini dengan SubVersion, tapi saya penasaran bagaimana ini akan bekerja dengan git. Jika lebih mudah, saya dapat menggunakan pc ketiga sebagai server klasik yang dapat disinkronkan oleh dua pc: s.
Catatan: Kedua komputer menjalankan Linux.
Pembaruan :
Jadi mari kita coba ide XANI: s dengan repo git kosong di server, dan sintaks perintah push dari KingCrunch. Dalam contoh ini ada dua klien dan satu server.
Jadi mari kita buat bagian server dulu.
ssh user@server
mkdir -p ~/git_test/workspace
cd ~/git_test/workspace
git --bare init
Jadi dari salah satu komputer lain saya mencoba mendapatkan salinan repo dengan klon:
git clone user@server:~/git_test/workspace/
Initialized empty Git repository in /home/user/git_test/repo1/workspace/.git/
warning: You appear to have cloned an empty repository.
Lalu masuk ke repo itu dan tambahkan file:
cd workspace/
echo "test1" > testfile1.txt
git add testfile1.txt
git commit testfile1.txt -m "Added file testfile1.txt"
git push origin master
Sekarang server diperbarui dengan testfile1.txt.
Bagaimanapun, mari kita lihat apakah kita bisa mendapatkan file ini dari komputer lain.
mkdir -p ~/git_test/repo2
cd ~/git_test/repo2
git clone user@server:~/git_test/workspace/
cd workspace/
git pull
Dan sekarang kita bisa melihat testfile.
Pada titik ini kita dapat mengeditnya dengan lebih banyak konten dan memperbarui server lagi.
echo "test2" >> testfile1.txt
git add testfile1.txt
git commit -m "Test2"
git push origin master
Kemudian kita kembali ke klien pertama dan melakukan git pull untuk melihat file yang diperbarui. Dan sekarang saya dapat berpindah-pindah antara dua komputer, dan menambahkan komputer ketiga jika saya mau.
sumber
Jawaban:
Menurut saya, ada beberapa pendekatan. Saya hanya akan menjelaskan, bagaimana saya menangani ini
Saya memiliki satu netbook sebagai server 24/7, yang menampung beberapa git-repositories. Dari / Ke sana saya mendorong dan menarik perubahan melalui SSH. Untuk akses dari luar saya menggunakan dyndns.org. Ini berfungsi dengan baik, terutama karena saya memiliki lebih dari dua sistem, yang memerlukan akses ke beberapa repositori.
Pembaruan: Sebuah contoh kecil. Katakanlah netbook saya disebut "netbook". Saya membuat repositori di sana
Pada desktop saya, saya akan membuat tiruannya. Mungkin saya akan menambahkan beberapa file juga
Pada portabel saya, saya akan (pertama) melakukan hal yang sama, tetapi untuk akses jarak jauh (dari luar LAN saya), saya juga akan menambahkan alamat eksternal.
Ini hanya cara kerja git (/ git workflows). Anda dapat menambahkan repositori jarak jauh sebanyak yang Anda suka. Tidak masalah, jika dua atau lebih mengacu pada repositori "fisik" yang sama. Anda tidak memerlukan "server" lokal sendiri, Anda dapat menggunakan server publik mana pun, yang Anda miliki akses sshnya. Dan tentu saja Anda tidak membutuhkan server publik sama sekali, jika Anda tidak membutuhkan akses dari luar. Repositori telanjang juga dapat berada di sistem desktop dan Anda kemudian dapat membuat repositori-copy-kerja dalam sistem file lokal.
Inilah caranya, bagaimana saya menangani ini, dan bagi saya itu bekerja dengan cukup baik (jika tidak sempurna;))
Sesuatu untuk dibaca: http://progit.org/ Buku yang sangat bagus.-
sumber
Saya akan mengkloning repo dari satu kotak ke kotak lainnya, dan kemudian mengatur dua repo sehingga saya bisa
git fetch
dari kotak lainnya.Mengganti nama remote dari
origin
ke nama kotak lain membuat cabang remote lebih mudah dibaca.Perhatikan bahwa dengan hanya menggunakan
git fetch
(dan tidakgit push
), ini berfungsi dengan baik dengan repositori non-telanjang:sumber
Cara termudah: repo pusat dibuat dengan
--bare
(jadi tidak ada file yang diperiksa, hanya file .git), atau github"Didistribusikan" akan terlihat seperti itu:
Mendirikan:
git remote add desktop ssh://user@desktop/home/user/repo/path
git remote add laptop ssh://user@laptop/home/user/repo/path
Menyinkronkan:
git pull laptop/desktop
(push tidak akan berfungsi dengan baik pada repo non-bare karena git tidak akan mengubah file yang diperiksa saat mendorong ke repo jarak jauh)Atau, buat repo di flashdisk;)
sumber
user
? Untuk github, saya hanya perlu menambahkan kunci rsa-pub. Saya sudah mencoba menambahkan rsa-pub untuk komputer pemohon klon ke known_hosts, tetapi itu tidak berhasil ...Bagaimana kalau hanya menggunakan
rsync
?sumber
Tidak bisakah Anda membuat repositori jarak jauh di GitHub, BitBucket atau GitLab? (Dua perusahaan terakhir menawarkan repositori pribadi gratis tanpa batas). Ketika Anda menyelesaikan hari di tempat kerja, cukup gunakan
git push
untuk mendorong perubahan Anda ke repo jarak jauh. Saat Anda tiba di rumah, lakukan sajagit pull
untuk menarik perubahan dari pekerjaan ke mesin rumah Anda. Demikian juga, ketika Anda selesai di rumah, lakukangit push
dan kemudian ketika Anda kembali bekerja, lakukangit pull
.sumber
Skenario 1: Saya bekerja (mengedit kode dan file) secara eksklusif di PC1 tetapi ingin memiliki salinan duplikat file (mis: untuk membangun seluruh basis kode) juga di PC2.
Sinkronkan dari PC1 ke PC2 dalam <1 menit melalui hotspot wifi sambil menggunakan <25 MB data:
Saya bekerja pada satu komputer lemah yang saya bawa (laptop), tetapi membangun di atas komputer yang lebih kuat yang terletak di tempat lain. Saya menggunakan git sepanjang waktu untuk melakukan sinkronisasi dari laptop saya ke komputer lain menggunakan skrip. Saya hanya mengetik perintah ini untuk menjalankannya:
Itu dia! Biasanya membutuhkan sekitar 25 MB data dan ~ 30 detik hingga 1 menit, bahkan saat menggunakan hotspot wifi ponsel dan bekerja pada repo yang berukuran puluhan gigabyte . Saya ssh'ed ke PC2, jadi saya lakukan
git log -1
di PC2 untuk memverifikasi bahwa sinkronisasi berfungsi, lalu saya menjalankan perintah build. Bekerja dengan sempurna. Cobalah. Lihat tautan di bawah untuk detailnya.Catatan: repo kloning pada PC2 akan berada di cabang git bernama
somename_SYNC
. Ubah skrip dengan tepat jika Anda ingin memiliki nama cabang yang sama daripada selalu menggunakan "cabang SYNC". Dimungkinkan untuk memodifikasi skrip untuk mendapatkan efek yang lebih seperti Skenario 2 di bawah jika diinginkan. Namun demikian, melakukan Skenario 2 secara manual tidaklah sulit, jadi Anda mungkin ingin terus melakukan Skenario 2 secara manual. Ini Skenario 1 di mana skrip otomatis adalah yang paling bermanfaat dan menghemat waktu, karena memungkinkan alur kerja "ubah, sinkronkan, bangun" yang mudah dan cepat di mana "modifikasi" terjadi di PC1, "sinkronisasi" dijalankan dari PC1 tetapi juga memengaruhi PC2, dan "build" dilakukan di PC2.Tautan:
Bekerja pada proyek jarak jauh dengan Eclipse melalui SSH
https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles/blob/master/useful_scripts/sync_git_repo_from_pc1_to_pc2.sh
Skenario 2: Saya bekerja (mengedit kode dan file) di banyak komputer, dan ingin dapat mengedit repositori kode yang sama dari komputer mana pun di dunia:
Buka https://github.com dan buat akun dan secara opsional (disarankan) siapkan kunci ssh .
Sekarang gunakan antarmuka web mereka untuk membuat repositori baru.
Temukan repositori baru ssh atau https clone URL. Contoh: [email protected]: ElectricRCAircraftGuy / eRCaGuy_dotfiles.git atau https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles.git .
Clone proyek ke PC1. Ex:
[email protected]:ElectricRCAircraftGuy/eRCaGuy_dotfiles.git cd eRCaGuy_dotfiles
Dan ulangi perintah klon yang sama persis di PC2.
Sekarang di PC1, buat beberapa perubahan, lakukan, dan dorong ke repositori "jarak jauh" Anda di github:
# edit some files, then do the following git add -A # stage ("add") all changed files to be committed git commit # commit them git push # push them to your remote github repo
Sekarang di PC2, lakukan perubahan Anda:
# pull all changes from github (which includes the changes # you just pushed from PC1) to PC2 git pull
Sekarang Anda dapat mengedit file di PC2, menjalankannya, dan mendorongnya ke github menggunakan perintah yang ditunjukkan hanya 2 langkah di atas, lalu dari PC1 Anda dapat menjalankan
git pull
untuk menarik perubahan tersebut dari PC2.Terus lakukan proses ini, sesuai kebutuhan, bekerja pada PC1 ATAU PC2, dan dengan mudah berbagi file dan membagi pekerjaan Anda antara dua komputer. Ingatlah bahwa semua perubahan Anda harus dilakukan dan didorong ke github di satu PC sebelum Anda dapat memeriksanya (menariknya) dan melanjutkan bekerja di PC lain.
Jika Anda pernah mengalami situasi di mana file agak tidak sinkron antara dua PC, Anda mungkin harus menggunakan beberapa cabang tambahan, melakukan beberapa penggabungan, menyelesaikan konflik, dll. Kemudian, ini menjadi lebih mirip dengan bekerja dengan tim kecil tempat Anda semua mengerjakan repo yang sama. Google adalah teman Anda. Git sangat sangat kuat, dan memiliki perintah, sekumpulan perintah, atau alur kerja untuk hampir semua hal.
sumber
Nah, Anda dapat mendorong dan menarik (melalui Git) ke server yang berpotensi Anda siapkan. Atau Anda dapat menyimpan repo Anda di GitHub dan menggunakannya sebagai jembatan sinkronisasi.
sumber
Anda dapat membuat repositori di komputer mana pun, mungkin di desktop dan mendorong / menariknya dari laptop dan dirinya sendiri.
sumber