depozitul liber nu este un tip special de depozit. aceasta, de fapt, este depozitul.
Comanda git init-bare creează depozitul din directorul curent:
dar cu comanda git init (fără opțiunea -bare), repositoarea este creată în directorul .git:
astfel încât să puteți utiliza directorul curent ca (dir de lucru), directorul de lucru cu extrase din fișiere / directoare versiuni de depozitare, care sunt urmărite și, prin urmare, depozit (directorul general de lucru poate fi într-un loc complet diferit și programul specificat folosind gastrointestinală sau opțiuni --work -C -tree sau o combinație a acestora (aceste opțiuni nu sunt echivalente), sau un mediu GIT_WORK_TREE variabil. sau o core.worktree variabilă de configurare).
„Turn» goale în non-goale (și vice-versa) este foarte usor: schimba o valoare suficientă (adevărat sau fals) secțiunea goale [core] fișier de configurare variabilă. manual sau folosind comanda git config core.bare. și anume De fapt, acesta este un semn, în practică, înseamnă că „există un director de lucru pentru a urmări fișiere.“
De ce avem nevoie de această funcție?
atunci când încearcă să „împinge“ în ramura curentă (cel indicat de conținutul fișierului HEAD) „depozit din directorul de lucru“ (-repozitory non-goale), utilizatorul primește o eroare și o explicație detaliată:
remote: error: refs pentru a actualiza ramificația check out: refs / heads / master
Distanță: eroare: Implicit, actualizarea ramurii actuale într-un depozit non-gol
eroare: este respinsă, deoarece va face indicele și arborele de lucru inconsistente
la distanță: eroare: cu ceea ce ați împins și veți avea nevoie de "git reset --hard" pentru a se potrivi
la distanță: eroare: arborele de lucru pentru HEAD.
telecomandă: eroare:
remote: error: Puteți seta variabila de configurare 'receive.denyCurrentBranch' la
la distanță: eroare: "ignorați" sau "avertizați" în depozitul de la distanță pentru a permite împingerea
remote: eroare: ramura sa actuală; cu toate acestea, acest lucru nu este recomandat decât yo
la distanță: eroare: aranjat să actualizeze arborele său de lucru pentru a se potrivi cu ceea ce ați împins în unele
telecomandă: eroare: în alt mod.
telecomandă: eroare:
la distanță: eroare: pentru a stinge acest mesaj și pentru a păstra în continuare comportamentul implicit, setați
la distanță: eroare: variabila de configurare "receive.denyCurrentBranch" pentru a "refuza"
traducerea mea gratuită:
a refuzat reîmprospătarea rafturilor / capului / sucursalei master. din care fișierele sunt extrase în directorul de lucru.
Valoarea implicită actualizează ramura curentă în care nu-goale-magaziei interzis, deoarece aceasta va duce la o discrepanță între ceea ce „pushite“, iar indicele și conținutul directorul de lucru, și va necesita implementarea git reset --hard pentru a aduce directorul de lucru, în conformitate cu ramificația curentă, adică cel specificat în fișierul HEAD.
puteți seta configurația receive.denyCurrentBranch variabilă magaziei de la distanță pentru a ignora sau avertizează în valoare pentru rezoluție „push“, în ramura sa actuală; Totuși, acest lucru nu este recomandat, dacă nu ați configurat (automată) actualizează directorul de lucru în orice alt mod.
puteți dezactiva ieșirea din acest mesaj fără a schimba comportamentul implicit prin setarea variabilei receive.denyCurrentBranch la valoarea refuzului.