Secara rekursif menambahkan seluruh folder ke repositori

250

Saya mencoba menambahkan cabang ke cabang master di GitHub dan mendorong folder ke cabang itu.

Struktur folder cabang terlihat seperti - SocialApp / SourceCode / DevTrunk / SocialApp dan semua file kode sumber ada di folder terakhir.

Saya menggunakan perintah Git berikut:

git add *
git commit -m with the message
git push

Ini hanya mendorong folder pertama "SocialApp" ke GitHub dan mengabaikan folder SourceCode yang ada di dalam folder. Bagaimana cara saya memperbaikinya?

Ashish Agarwal
sumber
4
apakah ada file di mana saja? tidakkah mereka diabaikan .gitignore?
CharlesB
This is pushing only the first folder- git tidak peduli dengan folder sama sekali, hanya file. tolong tunjukkan komit - Anda telah melakukan submodule, symlink atau sesuatu yang bukan folder
AD7six
Saya mengalami masalah yang sama. Saya tidak berpikir ini masalah tetapi hanya perilaku yang diharapkan. Yang mengejutkan ada banyak sekali solusi.
Catatan: ketika folder Anda kosong mereka tidak dilacak. itu praktik yang baik untuk meletakkan file .keep kosong di sana untuk menjaga direktori kosong
Dude

Jawaban:

356

Periksa .gitignorefile, jika subdirektori diabaikan.

Lalu coba lagi

git add --all
git commit -am "<commit message>"
git push
beyersdorfinger
sumber
4
Perhatikan bahwa ini tidak akan menyertakan file yang disebutkan dalam .gitignore. Saya biasanya menambahkannya dengan tangan atau menggunakan file batch seperti ini: for /R %%f in (*.*) do git add --force %%f(lihat bitbucket.org/jeroenp/besharp.net/src/tip/Scripts/GIT/… )
Jeroen Wiert Pluimers
10
Untuk secara rekursif menambahkan seluruh struktur pohon folder, perintahnya haruslahgit add --all :/
Jason Hartley
7
@JeroenWiertPluimers git add -f -allberfungsi untuk menambahkan file .gitignored
Orwellophile
3
@JasonHartley Komentar Anda bisa menjadi jawaban. Terima kasih!
ShutUpMagda
4
Bukankah ini menambahkan semua file yang tidak dipentaskan dalam git repo, bukan hanya folder saat ini? Saya pikir bukan itu pertanyaan awal.
Ted
31

Ini bekerja untuk saya:

git add . --force
ykay
sumber
1
Jawaban lain mengharuskan daftar file dihitung sebagai argumen terhadap perintah, yang ini tidak, karenanya merupakan pilihan yang lebih baik.
topkara
3
Pasti jawaban terbaik .. Satu suntingan akan menyebutkan bahwa Anda tidak perlu --forcejika Anda ingin mengabaikan tetap dihormati.
GrafikRobot
31

SETUP - repositori lokal di server lokal - klien terhubung ke server lokal melalui LAN

git add foldername/\\*

Untuk membuatnya ke server ...

git commit -m "comments..."
git push remote_server_name master

Sebagian besar, pengguna akan menetapkan remote_server_name sebagai asal ...

git remote add remote_server_name username@git_server_ip:/path/to/git_repo
Jake Bantug
sumber
9
Gagal sebagai fatal: pathspec 'foldername/\\*' did not match any files. Bekerja sebagai git add foldername/\*.
Tpojka
Apa perbedaan antara git add foldername/\\*dan git add --all?
Danijel
17

Baik "git add *" dan "git add SocialApp" yang dipanggil dari direktori teratas harus menambahkan semua direktori secara rekursif.

Mungkin Anda tidak memiliki file di SocialApp / SourceCode / DevTrunk / SocialApp dan inilah alasannya.

Coba panggil "sentuh SocialApp / SourceCode / DevTrunk / SocialApp / .tentara" (dan centang .gitignore) lalu coba git tambahkan lagi.

nopsoft
sumber
2
Saya rasa tidak, saya menggunakan git add * dan saya mengalami masalah yang sama.
16

Dalam kasus saya, ada folder .git di subdirektori karena saya sebelumnya menginisialisasi repo git di sana. Ketika saya menambahkan subdirektori, ia hanya menambahkannya sebagai sub-proyek tanpa menambahkan file yang ada.

Saya memecahkan masalah dengan menghapus repositori git dari subdirektori dan kemudian menambahkan kembali folder.

membubarkan
sumber
Ini menyelesaikannya untuk saya. Saya juga harus mengganti nama folder itu sendiri untuk perbaikan untuk menendang.
Totem
6

Saya hanya menggunakan ini:

git add app/src/release/*

Anda hanya perlu menentukan folder yang akan ditambahkan dan kemudian gunakan *untuk menambahkan semua yang ada di dalamnya secara rekursif.

Jaime Montoya
sumber
5

Saya mengalami masalah ini yang menghabiskan sedikit waktu, kemudian ingat bahwa git tidak akan menyimpan folder kosong. Ingat bahwa jika Anda memiliki pohon folder yang ingin disimpan, letakkan file di setidaknya folder terdalam dari pohon itu, sesuatu seperti file bernama ".gitkeep", hanya untuk memengaruhi penyimpanan oleh git.

pengguna2989397
sumber
5

Jika Anda ingin menambahkan direktori dan semua file yang berada di dalamnya secara rekursif, Pergi ke direktori di mana direktori yang ingin Anda tambahkan berada.

$ cd directory
$ git add directoryname
pengguna7205168
sumber
1
direktori cd git add *
François Richard
3

Saya juga punya masalah yang sama dan saya tidak punya file .gitignore. Masalah saya terpecahkan dengan cara berikut. Ini mengambil semua sub-direktori dan file.

git add <directory>/*
Suyash Jain
sumber
1

Ada saatnya saya ingin memasukkan kode sumber layanan web saya bersama dengan proyek sisi kliennya. Keduanya memiliki repositori git yang terpisah. Saya sebenarnya terbiasa menambahkan semua file menggunakan perintah:

git add -A

Tetapi untuk beberapa alasan, itu hanya menambah folder. Kemudian saya menemukan bahwa file server juga memiliki .gitfolder di dalamnya sehingga perintahnya tidak berfungsi.

tl; dr : Pastikan tidak ada .gitfolder di dalam folder yang ingin Anda panggung.

mr5
sumber
1
Bagaimana Anda bisa mengatasi ini jika Anda tidak ingin menghapus folder .git?
menggulung
@rolls, lihat submit git
mr5
1

Arahkan ke folder di mana Anda memiliki file
Anda jika Anda berada di mesin windows Anda harus mulai git bash dari mana Anda akan mendapatkan antarmuka baris perintah kemudian gunakan perintah ini

git init   //this initializes a .git  repository in your working directory

git remote add origin <URL_TO_YOUR_REPO.git> // this points to correct repository where files will be uploaded

git add *   // this adds all the files to the initialialized git repository

jika Anda membuat perubahan pada file sebelum menggabungkannya ke master Anda harus melakukan perubahan dengan mengeksekusi

git commit -m "applied some changes to the branch"

Setelah checkout ini cabang ke cabang master

Austine Gwa
sumber
Hanya jawab yang menyebutkaninit
Atul
1

Skenario / Solusi 1:
Pastikan Folder/ Anda Sub-foldertidak ada dalam .gitignorefile, kebetulan.


Skenario / Solusi 2:
Secara default, git add .bekerja secara rekursif.


Skenario / Solusi 3:
git add --all :/ bekerja dengan lancar, di mana git add .tidak (bekerja).
(@ JasonHartley berkomentar)


Skenario / Solusi 4:
Masalah yang saya hadapi secara pribadi bertambah Subfolders or Files, yang merupakan hal biasa di antara banyak orangFolders .

Sebagai contoh:
Folder/Subfolder-L1/Subfolder-L2/...file12.txt
Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt
Folder/Subfolder-L1/...file1.txt

Jadi Gitmerekomendasikan saya untuk menambahkan git submodule, yang saya coba tetapi menyusahkan.


Akhirnya yang berhasil bagi saya adalah:

1. git addsatu file yang ada di ujung / level terakhir dari a Folder.
Misalnya:
git add Folder/Subfolder-L1/Subfolder-L2/Subfolder-L3/...file123.txt

2. git add --all :/sekarang.
Ini akan dengan cepat menambahkan semua Folders, Subfoldersdan files.


Nayyar
sumber
-2

Ini berhasil untuk saya

git add -f *
Amine Sehaba
sumber