Saya telah membuat folder common
dengan banyak file sumber dan folder.
Sekarang saya ingin memindahkan common
folder ke include
folder sehingga terlihat sepertiinclude/common
Saya mencoba ini:
git add include
git mv common/ include/
tetapi gagal dengan kesalahan ini
fatal: sumber buruk, sumber = myrepo / common, destination = myrepo / include
Saya mencoba
git mv common/ include/common
tetapi saya mendapatkan kesalahan yang sama
Adakah yang tahu bagaimana mencapainya?
git mv
setara.harus bekerja.
Dari
git mv
halaman manual :"
git add
" Tidak harus dilakukan sebelum pindah.Catatan: "
git mv A B/
", saatB
tidak ada sebagai direktori, seharusnya kesalahan keluar, tetapi tidak ada.Lihat commit c57f628 oleh Matthieu Moy (
moy
) untuk Git 1.9 / 2.0 (Q1 2014):sumber
git mv
tampilan seperti pendekatan yang jauh lebih baik!Perintah:
Biasanya berfungsi dengan baik.
Kesalahan "sumber buruk ..." biasanya menunjukkan bahwa setelah komit terakhir ada beberapa nama baru di direktori sumber dan karenanya
git mv
tidak dapat menemukan file yang diharapkan.Solusinya sederhana - cukup komit sebelum mendaftar
git mv
.sumber
Pastikan Anda telah menambahkan semua perubahan Anda ke area pementasan sebelum berjalan
git gagal dengan kesalahan
jika ada file yang belum ditambahkan, jadi saya baru tahu.
sumber
Cara lain untuk memindahkan semua file dalam direktori ke sub direktori (membuat sejarah git):
$ for file in $(ls | grep -v 'subDir'); do git mv $file subDir; done;
sumber
Saya memiliki masalah yang serupa dengan di
git mv
mana saya ingin memindahkan konten dari satu folder ke folder yang ada, dan berakhir dengan skrip "sederhana" ini:Penjelasan
git ls-files
: Temukan semua file (dalamcommon
folder) diperiksa ke gitnewdir="../include/$(dirname $f)"; mkdir -p $newdir;
: Buat folder baru di dalaminclude
folder, dengan struktur direktori yang sama dengancommon
git mv $f $newdir/$(basename "$f")
: Pindahkan file ke folder yang baru dibuatAlasan untuk melakukan ini adalah bahwa git tampaknya memiliki masalah memindahkan file ke folder yang ada, dan itu juga akan gagal jika Anda mencoba untuk memindahkan file ke folder yang tidak ada (karenanya
mkdir -p
).Yang menyenangkan tentang pendekatan ini adalah hanya menyentuh file yang sudah diperiksa untuk git. Dengan hanya menggunakan
git mv
untuk memindahkan seluruh folder, dan folder tersebut berisi perubahan yang tidak dipentaskan, git tidak akan tahu apa yang harus dilakukan.Setelah memindahkan file, Anda mungkin ingin membersihkan repositori untuk menghapus perubahan yang belum dipentaskan yang tersisa - ingat untuk mengeringkan dulu!
sumber
Maaf saya tidak memiliki reputasi yang cukup untuk mengomentari "jawaban" dari "Andres Jaan Tack".
Saya pikir messege saya akan dihapus ((Tapi saya hanya ingin memperingatkan "lurscher" dan orang lain yang mendapat kesalahan yang sama: hati-hati melakukan
Ini dapat menyebabkan Anda tidak akan melihat riwayat git proyek Anda di folder baru.
Saya mencoba
dapatkan
aku melakukannya
dan
dan saya tidak melihat sejarah git tua di proyek saya. Setidaknya proyek saya tidak hilang. Sekarang saya memiliki proyek saya di newFolderName, tetapi tanpa sejarah (
Hanya ingin memperingatkan, hati-hati menggunakan saran "Andres Jaan Tack", jika Anda tidak ingin kehilangan git hsitory Anda.
sumber
Saya memiliki masalah yang sama, tetapi dalam folder yang ingin saya pindahkan saya memiliki file yang tidak saya lacak.
katakanlah saya punya file
Dan saya ingin memindahkan hanya file yang dilacak ke subfolder
subdir
, jadi tujuannya adalah:apa yang telah saya lakukan adalah:
mkdir tmpdir && mv a b tmpdir
git checkout a b
mkdir subdir && mv a b subdir
git add --update
perubahan direktori ): (biasanya ini akan menambahkan file yang bahkan tidak terlacak - ini akan membutuhkan pembuatan file)git add subdir
.gitignore
git status
menunjukkan sekarang hanya memindahkan filemv tmpdir/* subdir
git status
Sepertinya kita dieksekusigit mv
:)sumber
Saya memecahkan ini di windows dengan melakukan ini:
(.*)
dengangit mv ".\\\1" ".\\<New_Folder_Here>\"
sumber