Saya ingin menyinkronkan repositori lokal saya dengan repositori jarak jauh sehingga repositori lokal saya menjadi 100% salinan repositori jarak jauh - artinya jika file tertentu berbeda dalam repositori ini, kami menimpa repositori lokal dengan repositori jarak jauh, dan jika ada file dalam repositori lokal yang tidak ada di remote, file lokal bisa dihapus.
Apakah ada cara untuk mencapai itu selain dengan melakukan klon baru repositori jarak jauh?
Pertanyaan serupa sebagai Sinkronisasi git repo lokal dengan remote dalam satu kesempatan yang membuang perubahan / commit lokal .
git fetch --prune
Jawaban:
sumber
git pull -p
apakah hal yang sama - 'git pull menjalankan git mengambil dengan parameter yang diberikan dan memanggil git menggabungkan untuk menggabungkan kepala cabang yang diambil ke cabang saat ini' - git-scm.com/docs/git-pullgit fetch <remote> --prune
, jika seseorang hanya perlu--prune
remote tertentu. misalnya.git fetch upstream --prune
.git fetch origin --prune
untuk menyinkronkan repo lokal Anda dengan garpuupstream
proyek AndaLangkah-langkah ini akan melakukannya:
lalu tanpa
-n
Ini akan menangani semua perubahan lokal. Sekarang komit ...
dan perhatikan baris seperti:
Catat angka 'N' sekarang:
dan akhirnya:
seharusnya tidak menunjukkan apa pun untuk ditambahkan / dikomit. Semua bersih.
Namun, klon baru dapat melakukan hal yang sama (tetapi jauh lebih lambat).
=== Diperbarui ===
Saat pengetahuan git saya sedikit meningkat dari waktu ke waktu, saya telah menemukan cara lain yang lebih sederhana untuk melakukan hal yang sama. Begini caranya (#dengan penjelasan). Saat berada di cabang kerja Anda:
Meskipun komit dan perubahan lokal Anda akan menghilang dari pandangan setelah ini, dimungkinkan untuk memulihkan perubahan yang dilakukan, jika perlu.
sumber
Anda perlu memahami bahwa repositori Git bukan hanya pohon direktori dan file, tetapi juga menyimpan sejarah pohon-pohon tersebut - yang mungkin berisi cabang dan gabungan.
Saat mengambil dari repositori, Anda akan menyalin semua atau beberapa cabang di sana ke repositori Anda. Ini kemudian di repositori Anda sebagai "cabang pelacakan jarak jauh", misalnya cabang bernama like
remotes/origin/master
atau semacamnya.Mengambil komit baru dari repositori jarak jauh tidak akan mengubah apa pun tentang copy pekerjaan lokal Anda.
Salinan kerja Anda biasanya memiliki komit yang diperiksa, dipanggil
HEAD
. Komit ini biasanya merupakan ujung dari salah satu cabang lokal Anda.Saya pikir Anda ingin memperbarui cabang lokal Anda (atau mungkin semua cabang lokal?) Ke cabang jarak jauh yang sesuai, dan kemudian memeriksa cabang terbaru.
Untuk menghindari konflik dengan copy pekerjaan Anda (yang mungkin memiliki perubahan lokal), Anda terlebih dahulu membersihkan segala sesuatu yang tidak versi (menggunakan
git clean
). Kemudian Anda memeriksa cabang lokal yang sesuai dengan cabang jarak jauh yang ingin Anda perbarui, dan gunakangit reset
untuk beralih ke cabang jarak jauh yang diambil. (git pull
akan memasukkan semua pembaruan cabang jarak jauh di cabang lokal Anda, yang mungkin melakukan hal yang sama, atau membuat komit gabungan jika Anda memiliki komit lokal.)(Tapi kemudian Anda benar-benar akan kehilangan perubahan lokal - baik dalam copy pekerjaan dan komit lokal. Pastikan Anda benar-benar menginginkan ini - jika tidak lebih baik gunakan cabang baru, ini menyimpan komit lokal Anda. Dan gunakan
git stash
untuk menyimpan perubahan yang belum dilakukan. .)Sunting: Jika Anda hanya memiliki satu cabang lokal dan melacak satu cabang jarak jauh, yang perlu Anda lakukan adalah
dari dalam direktori kerja.
Ini akan mengambil versi saat ini dari semua cabang jarak jauh yang dilacak dan memperbarui cabang saat ini (dan direktori kerja) ke versi saat ini dari cabang jarak jauh yang dilacaknya.
sumber
git pull
seharusnya sudah cukup, saya pikir. (Saya memperbarui jawabannya.)Anda ingin melakukannya
Ini membuat repo lokal Anda persis seperti repo jarak jauh Anda.
Ingatlah untuk mengganti asal dan master dengan remote dan cabang yang ingin Anda sinkronkan.
sumber
node_modules
, itu berfungsi persis seperti yang saya inginkan.Atur ulang dan sinkronkan repositori lokal dengan cabang jarak jauh
Perintah: Ingatlah untuk mengganti asal dan master dengan remote dan cabang yang ingin Anda sinkronkan.
Atau langkah demi langkah:
Cabang lokal Anda sekarang adalah salinan persis (melakukan dan semua) dari cabang jarak jauh.
Output perintah:
Berikut adalah contoh menjalankan perintah pada klon lokal dari Forge a git repository.
sumber
(Info ini dari Manual Pengguna Git )
Saya juga belajar, jadi ini mungkin bukan jawaban yang tepat untuk pertanyaan itu tetapi mungkin membantu seseorang:
git branch -r
)git fetch
. Ini tidak akan memengaruhi Anda yang ada, cabang yang dibuat khusus.git add origin /path/to/repository
) gunakangit checkout origin/branch_name
, ini akan menimpa perubahan penduduk lokal Anda pada cabangbranch_name
sumber
Kedengarannya seperti Anda ingin mirror dari repositori jarak jauh:
Perintah itu menciptakan repositori kosong. Jika Anda tidak ingin repositori kosong, segalanya menjadi lebih rumit.
sumber
Jika Anda berbicara tentang menyinkronkan repo bercabang maka Anda dapat mengikuti langkah-langkah ini.
Cara menyinkronkan repositori garpu dari git
periksa cabang git Anda saat ini
git branch
checkout untuk menguasai jika Anda tidak menguasai
git checkout master
Ambil repositori hulu jika Anda memiliki hak akses yang benar
git fetch upstream
Jika Anda mendapatkan kesalahan di bawah ini maka jalankan
git remote add upstream [email protected]:upstream_clone_repo_url/xyz.git
Sekarang jalankan perintah di bawah ini.
git fetch upstream
Sekarang jika Anda berada di master lalu gabungkan upstream / master ke cabang master
git merge upstream/master
Itu dia!!
Periksa kembali melalui
git remote
perintah, lebih spesifikgit remote -v
Jika saya juga memiliki hak komitmen untuk repo hulu, saya dapat membuat cabang hulu lokal dan melakukan pekerjaan yang akan hulu di sana.
sumber
Anda dapat menggunakan kait git untuk itu. Cukup buat kait yang mendorong diubah ke repo lain setelah pembaruan.
Tentu saja Anda mungkin mendapatkan konflik penggabungan sehingga Anda harus mencari cara untuk mengatasinya.
sumber