Am 2 directoare de pe GitHub. Am'd place să ștergeți unul dintre ei. Cum aș putea face asta fără a șterge și re-crearea întregul depozit?
Ai putea checkout 'master' cu ambele directoare;
git rm -r one-of-the-directories
git commit -m "Remove duplicated directory"
git push origin <your-git-branch> (typically 'master', but not always)
După cum sa menționat în comentarii, ce vrei, de obicei, să faceți este de a elimina acest director de la git dar nu șterge întregime din sistemul de fișiere (locale)
În acest caz, utilizați:
git rm -r --cached myFolder
Pași pentru a elimina director
git rm -r --cached FolderName
git commit -m "Removed folder from repository"
git push origin master
Pași pentru a ignora faptul că dosarul în următoarea comite
Pentru a ignora că dosarul de la următoarea comite face un fisier in root pe nume .gitignore și a pus că foldere numele în ea. Puteți pune cât mai multe, după cum doriți
.gitignore fișierul va fi arata ca acest lucru
/FolderName
Dacă, pentru un motiv oarecare, ce karmakaze spus nu't de lucru, ai putea încerca ștergerea directorul dorit folosind sau cu sistemul de fișiere browser (ex. În Windows File Explorer). După ștergerea director, emiterea de comanda:
git add-O <br> și apoi <br>
git commit -m 'ștergerea director'<br> și apoi <br>
git push origin master.
Dacă eliminați fișierele în directorul (cu git rm
ca alte răspunsuri explica), apoi director nu mai există în măsura în git este în cauză. Nu poți comite un director gol, nici nu se poate elimina una.
Acest lucru este spre deosebire de subversiune în cazul în care aveți pentru a explicit svn rm emptyfolder/
, și este de altfel de ce " om " pagina pentru git se descrie pe sine ca "prost conținut tracker"
Un răspuns pe "Cum pot adăuga un director gol de la un depozit git" link FAQ pe acest subiect:
în Prezent, proiectarea de git index (zonă) permite numai fișiere pentru a a fi listate, și nimeni nu suficient de competent pentru a face schimbarea, pentru a permite gol directoare a păsat destul de această situație pentru a o remedia.
Directoarele sunt adăugate în mod automat atunci când adăugarea de fișiere în interiorul lor. Asta este, directoare nu trebuie să fie adăugat la depozit, și nu sunt urmărite pe cont propriu.
puteți spune "
git add <r>
" și va adăuga fișiere într-acolo.Dacă într-adevăr nevoie de un director de la există în case de marcat trebuie să creați o dosar în ea. .gitignore funcționează bine pentru în acest scop; puteți lăsa gol, sau completați în numele de fișiere se așteaptă să apară în directorul.
Du-te la git Director, apoi tastați următoarea comandă: rm-rf <_Directory degetul pana>
După Ștergerea directorul comite modificări prin: git commit -m "Ta Comite Mesaj"
Apoi, pur și Simplu împinge modificările pe GIT de la distanță director: git push origin <_Branch degetul pana>
Eu de obicei folosesc git add-toate pentru a elimina fișiere / foldere din depozitele de la distanță
rm -r folder_name
git add --all
git commit -m "some comment"
git push origin master
"maestrul" poate fi înlocuită cu orice altă ramură de depozit.
pentru șterge dosare Goale
am vrut sa sterg un gol directorul(folderul) am creat, git nu se poate șterge, după unele cercetări am aflat Git nu't urmări directoare goale. Dacă aveți un director gol în lucru copac ar trebui pur și simplu eliminat-o cu
rm -r folderName
Nu este nevoie de a implica Git.
Puteți utiliza Attlasian Sursă de Copac (Windows) (https://www.atlassian.com/software/sourcetree/overview). Doar selectați fișierele din copac și apăsați butonul "Eliminați" în partea de sus. Fișierele vor fi șterse din depozit local și locale git baza de date. Apoi a Comis-o, apoi apăsați.
Am avut deja comis folder înainte și doriți să eliminați director în istoria la fel de bine.
Am făcut următoarele:
Adăugați un dosar la .gitignore
:
echo Folder_Name/ >> .gitignore
Eliminați de la toate se angajează:
git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch Folder_Name/' --prune-empty --tag-name-filter cat -- --all
elimina arbitrii din vechi se angajează:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
Se asigura toate vechi arbitrii sunt complet eliminate
rm -Rf .git/logs .git/refs/original
A efectua o colectare a gunoiului
git gc --prune=all --aggressive
împinge modificări la depozit on-line:
git push
Ai terminat aici.
Dar puteți să-următoarele pentru a împinge toate modificările pentru toate ramurile cu: Dar fii atent cu aceasta comanda!
git push origin --all --force
git push origin --tags --force
După care dosarul a fost eliminat de la git, dar nu a fost șters de pe discul local.
Unul dintre colegul meu a sugerat BFG Repo-Cleaner care cred puternic. Acesta nu este doar ștergeți datele nedorite, dar, de asemenea, curat repository-ul dvs. de la orice legat comite informații.
Pentru a adăuga un nou director:
mkdir <YOUR-DIRECTORY>
Dar acum Git nu este conștient de acest nou director, deoarece Git păstreze piesele de fișier nu directoare DIRECTOR
git status
Git câștigat't să fie conștienți de schimbarea pe care am'am făcut, așa că am adăuga ascunse `.ține de fișiere pentru a face Git conștienți de această nouă schimbare.
touch /YOUR-directory/.keep
Acum, dacă te-a lovit git status
Git vor fi la curent cu schimbările.
Și Dacă doriți să ștergeți directorul, ar trebui să utilizați această comandă.
rm -r <YOUR-DIRECTORY>
Și Dacă ai verificat cu ajutorul git status
, veți vedea directorul a fost eliminat.