Ubah lokasi direktori repositori Git.

200

Dengan Git / Github untuk Windows, jika saya memiliki repositori dengan direktori ini:, C:\dir1\dir2apa yang harus saya lakukan untuk memindahkan file repo C:\dir1? Saya jelas dapat menyalin dan menempelkan file secara fisik, tetapi apa yang harus saya lakukan di sisi Git?

Saya memiliki repo ini di GitHub dan saya menggunakan Git Bash dan GitHub untuk Windows.

Mikael Engver
sumber
1
Lihat jawaban ini , sama untuk pindah ke folder lain atau komputer lain.
rekenerd

Jawaban:

234

Cukup salin seluruh isi direktori kerja (termasuk .gitdirektori tersembunyi ). Ini akan memindahkan seluruh direktori kerja ke direktori baru dan tidak akan memengaruhi repositori jarak jauh di GitHub.

Jika Anda menggunakan GitHub untuk Windows, Anda dapat memindahkan repositori menggunakan metode seperti di atas. Namun, ketika Anda mengklik repositori di dalam aplikasi, ia tidak akan dapat menemukannya. Untuk menyelesaikan ini cukup klik pada lingkaran biru dengan !, pilih Find It dan kemudian browse ke direktori baru.

aktor
sumber
3
Tapi bagaimana dengan bagaimana GitHub Untuk Windows melacak repo lokal? Pasti ada konfigurasi di sana.
3
Ketika saya melakukan ini pada Windows itu memaksa saya untuk membuat repo baru.
472084
1
@ John, Mereka mungkin telah mengubahnya sejak jawaban ini diposting. Saya akan melihat dan memperbarui jawaban saya jika perlu.
aktor
2
Seharusnya tidak meminta Anda untuk membuat repo baru: jika itu terjadi, Anda jelas melewatkan file git (mungkin yang tersembunyi). Terjadi pada saya, dan ketika saya mencoba lagi saya perhatikan saya telah melewatkan beberapa.
Juan
1
Saya menang. Setelah saya memindahkan folder secara manual ke lokasi baru maka saya membuka kembali Aplikasi Git GUI dan memindahkan folder proyek secara manual di sana juga. Cara ini bekerja untuk saya.
kuncevic.dev
42

Saya tidak yakin dengan pertanyaan itu, jadi inilah dua jawaban:

Jika Anda ingin memindahkan repositori Anda:

Cukup salin seluruh repositori (dengan .gitdirektori).

Tidak ada jalur absolut dalam .gitstruktur dan tidak ada yang mencegahnya untuk dipindahkan sehingga Anda tidak perlu melakukan apa pun setelah pindah. Semua tautan ke github (lihat di .git/config) akan berfungsi seperti sebelumnya.

Jika Anda ingin memindahkan file di dalam repositori:

Cukup pindahkan file. Kemudian tambahkan perubahan yang tercantum di git status. Selanjutnya commitakan melakukan yang diperlukan. Anda akan senang mengetahui bahwa tidak ada file yang akan diduplikasi: memindahkan file di git hampir tanpa biaya.

Denys Séguret
sumber
1
Tapi bagaimana dengan bagaimana GitHub Untuk Windows melacak repo lokal? Pasti ada konfigurasi di sana.
@ user596075 ada di .gitdirektori.
OrangeDog
24

Jika Anda menggunakan GitHub Desktop, maka lakukan saja langkah-langkah berikut:

  1. Tutup GitHub Desktopdan semua aplikasi lain dengan file terbuka ke jalur direktori Anda saat ini.
  2. Pindahkan seluruh direktori seperti yang disebutkan di atas ke lokasi direktori baru.
  3. Buka GitHub Desktopdan klik ikon biru (!) "Repositori tidak ditemukan". Kemudian dialog akan terbuka dan Anda akan melihat tombol "Temukan ..." yang akan membuka jendela sembulan yang memungkinkan Anda untuk mengarahkan jalurnya ke lokasi baru.
Mikael Engver
sumber
8

Sementara pertanyaannya melibatkan Git untuk Windows, ini tampaknya menjadi hasil teratas bahkan ketika mencari Alat Studio Visual Untuk Git (ekstensi dalam VS 2012, dukungan asli di VS 2013).

Menggunakan solusi di atas sebagai panduan, saya menentukan bahwa Visual Studio Git Tools membuat repo bergerak (atau bahkan seluruh struktur direktori untuk semua repo) secara lokal sangat mudah.

1) Tutup Visual Studio. 2) Pindahkan folder Repo ke lokasi baru. 3) Buka Visual Studio. Buka Penjelajah Tim. Beralih ke tampilan "Sambungkan" (ikon colok di atas). 3a) Jika Repos masih menampilkan jalur lama, klik Refresh untuk memaksa pembaruan. 4) Repo yang dipindahkan secara lokal seharusnya tidak lagi ditampilkan di " Repositori Local Git ". 5) Klik Tambah (bukan yang baru atau klon) dan pilih folder repo untuk ditambahkan.

Pada langkah 5 Anda benar-benar hanya menyediakan jalur pencarian dan pencarian secara otomatis mencakup semua subfolder. Jika Anda memiliki beberapa repo yang dikelola di bawah satu root (repo independen hanya memiliki folder induk yang sama) maka memilih induk akan mencakup semua repo yang ditemukan di bawahnya.

Contoh: E: \ Repos \ RepoA E: \ Repos \ RepoB E: \ Repos \ RepoC

Dalam Visual Studio Team Explorer [Tambah]> "E: \ Repos \"> [Tambah] akan mengembalikan ketiganya ke Gudang Lokal.

Gerald Davis
sumber
6

Meskipun semua jawaban sebelumnya sepertinya mengatakan bahwa Anda hanya dapat memindahkan direktori dan tidak ada jalur absolut dalam struktur .git. Saya menemukan ini tidak benar ketika menggunakan git dari Cygwin.

Ketika saya memindahkan repo git saya (sebenarnya saya mengembalikannya dari cadangan, tetapi ke drive yang berbeda karena struktur drive saya berubah pada sistem baru saya). Saya mendapat pesan kesalahan seperti

fatal: Invalid path '<part_of_the_original_repo_path>': No such file or directory

Saya menggunakan grep untuk menemukan bahwa di file .git / config saya di bagian [core] adalah variabel worktree yang memegang path absolut dari repo git saya. Mengubah ini memperbaiki masalah bagi saya.

Phil Rosenberg
sumber
4

Saya menggunakan plugin Visual Studio git, dan saya memiliki beberapa situs web yang berjalan di IIS yang ingin saya pindahkan. Cara sederhana yang berhasil untuk saya:

  1. Tutup Visual Studio.

  2. Pindahkan kode (termasuk folder git, dll)

  3. Klik pada file solusi dari lokasi baru

Ini menyegarkan pemetaan ke lokasi baru, menggunakan file git lokal yang sudah ada yang dipindahkan. Setelah saya kembali di Visual Studio, jendela Team Explorer saya menunjukkan repo di lokasi baru.

Ben
sumber
2

Saya menggunakan Github Desktop untuk Windows dan saya ingin memindahkan lokasi repositori. Tidak masalah jika Anda memindahkan direktori dan memilih lokasi baru dalam perangkat lunak. Tetapi jika Anda menetapkan direktori yang buruk, Anda mendapatkan kesalahan fatal dan tidak ada kesempatan kedua untuk melakukan relokasi ke direktori yang baik. Jadi untuk memperbaikinya. Anda harus menyalin file proyek di direktori yang buruk, membuatnya direkrut oleh Github Desktop, setelah itu, Anda dapat memindahkan lagi proyek Anda di folder lain dan membuat relokasi dalam perangkat lunak. Tidak perlu menutup Github Desktop untuk itu, itu akan memeriksa folder secara langsung.

Berharap ini akan membantu seseorang.

Shim-Sao
sumber
1

Ini tidak berhasil untuk saya. Saya memindahkan repo dari (misalnya) c: \ project1 \ ke c: \ repo \ project1 \ dan Git for windows tidak menunjukkan perubahan.

status git menunjukkan kesalahan karena salah satu submodul "bukan repositori git" dan menunjukkan path lama. mis. (nama diubah untuk melindungi IP)

fatal: Bukan repositori git: C: /project1/.git/modules/subproject/subproject2 fatal: 'git status --porcelain' gagal dalam subproyek submodule

Saya harus secara manual mengedit file .git dalam submodules untuk menunjuk ke jalur relatif yang benar ke repo submodule (dalam direktori .git / modules direktori repo utama)

Chris Oates
sumber
1

Laporan dari masa depan: April 2018.

Saya ingin menormalkan repo lokal saya di Mac dan Windows saya, yang berakhir di folder lokal yang berbeda.

Klien Windows 10 membuat saya melalui rutinitas "Tidak Dapat Menemukan"> "Temukan", membosankan tetapi tidak mengerikan. Juga perlu memperbarui "Jalur klon" lokal di Opsi untuk penggunaan di masa mendatang.

Ketika saya mengkonsolidasikan folder mac, klien Github baru saja menemukannya lagi - saya tidak melakukan apa-apa!

charles ross
sumber
0

Untuk mengatur path lokal default ke repositori Anda untuk setiap kali Anda mengkloning salah satu dari mereka, Anda hanya harus mengkloning repositori sekali dan mengatur Localpath: / your-path, lalu github secara otomatis mendeteksi path itu sebagai default Anda.

BOjack
sumber
Ini sepertinya tidak menjawab pertanyaan awal - mungkin Anda bisa mengklarifikasi bagaimana jawaban Anda menambahkan sesuatu ke jawaban yang sudah diterima? Terima kasih.
rwp
0

Pendekatan yang lebih berbasis Git adalah membuat perubahan pada salinan lokal Anda menggunakan cdatau menyalin dan menempel lalu mendorong perubahan ini dari repositori lokal ke jauh.

Jika Anda mencoba memeriksa status repo lokal Anda, itu mungkin menunjukkan "perubahan tidak terlacak" yang sebenarnya merupakan file yang dipindahkan. Untuk mendorong perubahan ini dengan paksa, Anda perlu mengatur file / direktori ini dengan menggunakan

$ git add -A
#And commiting them
$ git commit -m "Relocating image demo files"
#And finally, push
$ git push -u local_repo -f HEAD:master

Semoga ini bisa membantu.

Pe Dro
sumber