Pertanyaan git repositori sync antar komputer, saat bergerak?


Katakanlah saya memiliki pc desktop dan laptop, dan terkadang saya bekerja di desktop dan kadang saya bekerja di laptop.

Apa cara termudah untuk memindahkan repositori git bolak-balik?

Saya ingin repositori git menjadi identik, sehingga saya bisa melanjutkan di mana saya meninggalkan di komputer lain.

Saya ingin memastikan bahwa saya memiliki cabang dan tag yang sama di kedua komputer.

Terima kasih Johan

Catatan: Saya tahu cara melakukan ini dengan SubVersion, tetapi saya ingin tahu 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.


Memperbarui:

Jadi mari coba ide XANI: dengan git repo kosong di server, dan sintaks perintah dorong dari KingCrunch. Dalam contoh ini ada dua klien dan satu server.

Jadi mari kita buat bagian server terlebih dahulu.

ssh user@server
mkdir -p ~/git_test/workspace
cd ~/git_test/workspace
git --bare init

Jadi dari salah satu komputer lain saya mencoba untuk 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 bisa mengeditnya dengan beberapa konten lagi dan memperbarui server lagi.

echo "test2" >> testfile1.txt
git add testfile1.txt
git commit -m "Test2"
git push origin master

Lalu kita kembali ke klien pertama dan melakukan git pull untuk melihat file yang diperbarui. Dan sekarang saya bisa bergerak maju mundur di antara dua komputer, dan tambahkan sepertiga jika saya suka.


76
2018-02-09 17:18


asal


Jawaban:


Saya pikir, ada beberapa pendekatan. Saya hanya akan menjelaskan, bagaimana saya menangani ini

Saya memiliki satu netbook sebagai server 24/7, yang menyimpan beberapa git-repositori. 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 membutuhkan akses ke beberapa repositori.

Pembaruan: Sedikit contoh. Katakanlah netbook saya disebut "netbook". Saya membuat repositori di sana

$ ssh username@netbook.local
$ cd ~/git
$ mkdir newThing
$ cd newThing
$ git init --bare

Pada desktop saya, saya akan membuat tiruan dari itu. Mungkin saya akan menambahkan beberapa file juga

$ git clone username@netbook.local:/home/username/git/newThing
$ git add .
$ git commit -m "Initial"
$ git push origin master

Pada portables saya, saya akan (pertama) melakukan hal yang sama, tetapi untuk akses jarak jauh (dari luar LAN saya), saya juga akan menambahkan alamat eksternal.

$ git clone username@netbook.local:/home/username/git/newThing
$ git remote add externalName username@mydyndns.home-ip.org:/home/username/git/newThing
$ git pull externalName master

Itu hanya cara git (/ git workflows) bekerja. Anda dapat menambahkan sebanyak repositori jarak jauh yang Anda inginkan. Itu tidak masalah, jika dua atau lebih mengacu pada repositori "fisik" yang sama. Anda tidak memerlukan "server" lokal sendiri, Anda dapat menggunakan server publik, yang Anda miliki akses ssh. Dan tentu saja Anda tidak memerlukan server publik sama sekali, jika Anda tidak memerlukan akses dari luar. Repositori kosong juga dapat berada di sistem desktop dan Anda kemudian dapat membuat copy-copy-kerja dalam sistem file lokal.

$ mkdir myRepo; cd myRepo
$ git init --bare
$ cd /path/to/myProject
$ git remote add origin /path/to/myRepo
$ git add .; git commit -m "Initial"; git push origin master

Ini adalah cara, bagaimana saya menangani ini, dan saya untuk saya itu bekerja dengan baik (jika tidak sempurna;))

Sesuatu untuk dibaca: http://progit.org/ Buku yang sangat bagus.-


23
2018-02-09 17:25



Saya akan mengkloning repo dari satu kotak ke yang lain, dan kemudian mengatur dua repo sehingga saya bisa saja git fetchdari kotak yang lain.

Mengganti nama remote dari origin untuk nama kotak lain membuat cabang jauh lebih mudah dibaca.

Perhatikan bahwa hanya dengan menggunakan git fetch (dan tidak git push), ini berfungsi dengan baik dengan repositori yang tidak telanjang:

[user@foo repo]$ git fetch -v bar

[user@bar repo]$ git fetch -v foo

6
2018-02-09 18:31



Cara termudah: repo pusat dibuat dengan --bare (jadi tidak memeriksa file, hanya. git stuff), atau github

"Didistribusikan" akan terlihat seperti itu:

Mempersiapkan:

  1. Di laptop: git remote add desktop ssh://user@desktop/home/user/repo/path
  2. Di desktop: git remote add laptop ssh://user@laptop/home/user/repo/path

Sinkronisasi:

git pull laptop/desktop (Push tidak akan berfungsi dengan baik pada repo non-bare karena git tidak akan memodifikasi file yang diperiksa ketika mendorong ke repo jarak jauh)

Atau, buat repo pada flashdisk;)


4
2018-02-09 22:10



Bagaimana dengan hanya menggunakan rsync?


1
2018-02-09 17:36



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 repositori jarak jauh. Ketika Anda tiba di rumah, lakukan saja git pull untuk menarik perubahan Anda dari bekerja ke mesin rumah Anda. Begitu juga ketika Anda selesai di rumah, lakukan git push dan kemudian ketika Anda kembali bekerja, lakukan git pull.


1
2018-03-28 16:43



Nah, Anda dapat mendorong dan menarik (via Git) ke server yang mungkin Anda siapkan. Atau Anda dapat menyimpan repos Anda di GitHub dan menggunakannya sebagai jembatan penyelarasan.


0
2018-02-09 17:23



Anda bisa membuat repositori di komputer mana pun, mungkin desktop dan mendorong / menariknya dari laptop dan dirinya sendiri.


0
2018-02-09 17:26