Ubah nama direktori dalam repositori Github dari jarak jauh, langsung dari Linux Git lokal?

10

Ini adalah repositori Git saya:

https://github.com/benqzq/ulcwe

Ini memiliki nama dir localdan saya ingin mengubah namanya menjadi nama lain (katakanlah, dari localke xyz).

Mengubahnya melalui GitHub GUI secara manual adalah mimpi buruk karena saya harus mengubah nama direktori untuk setiap file secara terpisah (GitHub belum menyertakan fungsionalitas "Ganti nama direktori", percaya atau tidak).

Setelah menginstal Git, saya mencoba perintah ini:

git remote https://github.com/benqzq/ulcwe && git mv local xyz && exit

Meskipun saya tidak mendapatkan prompt untuk kata sandi GitHub saya, saya memang mendapatkan kesalahan ini:

fatal: Not a git repository (or any parent up to mount point /mnt/c)
Stopping at filesystem boundary (GIT_DISCOVERY_ACROSS_FILESYSTEM not set).

Saya tahu inti dari Git adalah mengunduh proyek, mengubah, menguji, dan kemudian mendorong ke penyedia hosting (GitHub dalam kasus ini), tetapi untuk hanya mengubah direktori, saya ingin operasi langsung. Apakah mungkin dengan Git?

Haruskah saya menggunakan program lain?

pengguna9303970
sumber
2
Tidak, operasi jarak jauh langsung tidak dimungkinkan di Git. Anda harus mengkloning (mengunduh) proyek, mengubahnya, lalu mendorong kembali ke penyedia hosting. Tetapi bagaimana Anda bahkan menggunakan Github tanpa memiliki proyek di komputer Anda? Apakah Anda melakukan semua perubahan melalui antarmuka web Github - kedengarannya tidak nyaman atau tidak efisien.
user253751
Dalam kasus khusus ini menggunakan UI biasanya cukup nyaman dan efisien bagi saya, hal utama yang saya lewatkan adalah perubahan nama dir langsung ...
user9303970

Jawaban:

28

Pesan kesalahan fatal menunjukkan Anda bekerja dari suatu tempat yang bukan tiruan dari repositori git Anda. Jadi mari kita mulai dengan mengkloning repositori git terlebih dahulu:

git clone https://github.com/benqzq/ulcwe.git

Lalu masukkan:

cd ulcwe

dan ganti nama direktori:

git mv local xyz

Agar perubahan dapat dibagikan, Anda harus berkomitmen:

git commit -m "Rename local to xyz"

Sekarang Anda dapat mendorongnya ke repositori remote git Anda:

git push

dan Anda akan melihat perubahan di antarmuka GitHub.

Stephen Kitt
sumber
14
Dengan kata lain, ini sama seperti operasi lainnya pada file di repositori Git Anda.
Lightness Races dalam Orbit
2
@LightnessRacesinOrbit si penanya tampaknya telah menggunakan UI web untuk semua perubahannya sejauh ini.
user253751
5

Tidak, tidak ada cara untuk melakukan ini sebagai operasi langsung karena cara git terstruktur.

Cara git bekerja adalah ia menyimpan salinan seluruh repositori, termasuk semua riwayat, ke setiap lokasi.

Github, atau Bitbucket, atau penyedia hosting lainnya pada dasarnya hanyalah salinan repositori git Anda, dengan antarmuka web yang cantik di atasnya, yang diperlakukan sebagai sumber kebenaran utama dalam sebagian besar alur kerja, namun utilitas git tidak mengetahui hal ini.

Perubahan dilacak sebagai komit. Saya menduga direct operation, maksud Anda adalah cara mengubah nama folder tanpa membuat komit. Walaupun ini dimungkinkan dengan menulis ulang sejarah, saya tidak akan merekomendasikannya, terutama jika ada banyak orang / mesin dengan salinan git repo, karena ini dapat menyebabkan ketidakkonsistenan.

Cara termudah untuk mengganti nama folder dalam repo git adalah dengan mengkloningnya secara lokal

git clone [url]
cd [git-folder]

Jika Anda sudah memiliki salinan repo lokal, tarik untuk memastikan Anda mendapatkan repo jarak jauh

git pull

Buat perubahan yang Anda butuhkan secara lokal

git mv local xyz

Yang secara otomatis ditambahkan ke area pementasan oleh github. Maka Anda harus melakukan dan mendorong perubahan ini.

git commit -m 'Renamed local to xyz'
git push

Ini akan melakukan perubahan pada repositori lokal Anda, lalu dorong perubahan ini ke salinan repositori jarak jauh, dalam hal ini, Github.

Mat
sumber
8
Tidak, riwayat tidak disimpan karena perubahan antar komit, setiap komit bersifat swadaya. Perubahan antar komit dihitung ulang berdasarkan permintaan setiap kali dibutuhkan.
Stephen Kitt
3
"semua riwayat diunduh ke setiap lokasi" - tidak dengangit clone --depth
user11153
2
Penulisan ulang riwayat tidak diperlukan untuk ini - GitHub hanya dapat menghasilkan komit yang melakukan itu. (Seperti yang sudah terjadi ketika mengedit file langsung di situs web.)
user1686