Отримання "фатально: Не git сховище" при спробі віддаленого додати Git repo


439

Я представляю Git, дотримуючись цього підручника:

Все працює добре до тих пір, поки частина, в яку репо додається до моєї локальної машини:

git remote add nfsn ssh://USERNAME@NFSNSERVER/home/private/git/REPONAME.git

(Після заміни USERNAME, NFSNSERVER і REPOAME правильними іменами) я отримую помилку:

fatal: Not a git repository (or any of the parent directories): .git

Чи можете ви допомогти мені пройти цей крок?


2
git initале також переконайтесь, що жоден з ваших підкаталогів не має власної .gitпапки
James Oravec

Відповіді:


908

Ви запросили локальне сховище Git, до якого передбачається додати цей пульт?

Чи має ваш локальний каталог .gitпапку?

Спробуйте git init.


2
Я вже зробив цей крок, але мені довелося це зробити ще раз після налаштування мого акаунта в дворі двигуна та встановлення двору двигуна.
AVProgrammer

3
моя .gitпапка пішла. Це git initте саме, що видалити папку сховища, а потім git clone .... Все, що мені потрібно зробити - цеpull
Франциско Корралес Моралес

3
@FranciscoCorralesMorales, якщо .gitпапки немає, ви можете запустити git initще раз, щоб створити нову. Вам потрібно буде знову додати пульт, перш ніж ви зможете витягнути з нього.

3
Я отримував таку ж помилку, коли надсилав зміни з локальної системи. Спробував git init, і це спрацювало. Дякую!
rbashish

6
у мене є .git, і я вже зробив git init, але я отримую помилкуjalal@klein:~/computer_vision/py-faster-rcnn$ git add -A fatal: Not a git repository: caffe-fast-rcnn/../.git/modules/caffe-fast-rcnn
Mona Jalal

85

Ви отримаєте цю помилку, якщо спробуєте використовувати команду Git, коли ваша поточна робоча директорія не знаходиться в сховищі Git. Це тому, що за замовчуванням Git шукатиме .gitкаталог сховища (всередині кореня проекту?), На що вказує моя відповідь на "Git не відображатиме журнал, якщо я не знаходжусь у каталозі проектів" :

Згідно з офіційною документацією Linux Kernel Git , GIT_DIRчи [змінна середовище] встановлена ​​для пошуку .gitкаталогу (у поточному робочому каталозі?) За замовчуванням:

Якщо встановлена GIT_DIRзмінна середовище, то вона визначає шлях для використання замість типового .gitдля бази сховища.

Вам потрібно буде або cdв сховище / робочу копію, або ви не ініціалізували або не клонували сховище в першу чергу, і в цьому випадку вам потрібно ініціалізувати репо в каталозі, де ви хочете розмістити репо:

git init

або клонувати сховище

git clone <remote-url>
cd <repository>

13
+1 для згадування GIT_DIR. У гачках на голому репо, GIT_DIR встановлено на "." замість '.git'.
commonpike

+1 для git init. Після прочитання вашої відповіді, я використовував це кілька разів в сховищах , що я зробив клон, але не був визнаний. Отже, схоже, це безпечно, коли у запуску із дерева каталогів, який повинен бути a git repository, є всі файли в каталозі git, але він стверджує, що його немаєfatal: Not a git repository (or any parent up to mount point
ElderDelp

34

Моя проблема полягала в тому, що для деяких гикавок з моєю ОС будь-яка команда в моєму локальному сховищі закінчувалася "фатальним: Не сховище git (або будь-який з батьківських каталогів): .git", з включеною командою fsck.

Проблема була порожнім файлом HEAD .

Мені вдалося знайти фактичну назву філії, над якою працював у .git / refs / heads, і тоді я зробив це:

echo 'ref: refs/heads/ML_#94_FILTER_TYPES_AND_SPECIAL_CHARS' > .git/HEAD

Це спрацювало.


2
Мій файл HEAD з будь-якої причини був пошкоджений, тому я змусив його відновити і виправити проблему
Стівен

1
Ви чудовий товариш. Врятував тонну мого часу
Сах

Це було і моє питання. Спасибі
Карлос Рафаель Рамірес

3
У мене була відкрита Visual Studio під час відновлення git, і Visual Studio помітила зміну файлу, і незабаром після цього у мене з'явився синій екран смерті. Після перезавантаження .git / HEAD була заповнена NULLS і коли я замінив їх з повним хеша (5621afeffbabed40e3f386676068c45643644b7d) читати де - то , як .git \ REFS \ \ пульт походження \ майстер, мерзотник почав працювати знову , я також необхідні stackoverflow.com/questions / 1115854 /… тому що це наказало мені видалити .git / index, і мені потрібно було видалити .git / index.lock перед тим, як робити скидання git. Чудово зараз
Іван

1
Я майже втратив надію повернути свою роботу. Просто я скопіюю та вставте ваш розчин, і це зробило магію. Спасибі
Мукеш Кумар

17

ПРИМІТКА. Це відповідає не на поширену проблему, яка була проблемою ОП, а на іншу проблему, де може з’явитися це повідомлення про помилку. Мені не здавалося, що я задаю нове запитання просто для того, щоб записати цю відповідь, скажи мені, чи варто робити це замість цього: P

Я потрапив у ситуацію, швидше за все, через певну корупцію певної аварії, яку я отримав, навіть коли .gitіснував.

smar@aaeru ~/P/Nominatim> git status
fatal: Not a git repository (or any of the parent directories): .git
smar@aaeru ~/P/Nominatim [128]> ls .git
COMMIT_EDITMSG  config*  FETCH_HEAD  HEAD  index  logs/  modules/  objects/  ORIG_HEAD packed-refs

Оскільки у мене не було нічого, що насправді потребувало б збереження, я просто пішов манекеном і зробив ...

smar@aaeru ~/P/Nominatim [128]> git init
Reinitialized existing Git repository in /home/smar/Projektit/Nominatim/.git/

Все ще не працює, як, наприклад, git logповертається fatal: bad default revision 'HEAD'. Дистанційні були там, хоча я так і зробив, git fetch --allа потім просто git reset --hard origin/masterдля того, щоб перейти до стану репо раніше.

Зверніть увагу , що якщо є деякі непідтверджені зміни, ви можете побачити їх git status, git diffі так далі. Тоді безпосередньо git diff yourfile > patchперед запуском скидання.

Принаймні для мене reflog ( git reflog) повністю зник. Отже, якщо ви виконали скидання, і були якісь зміни, які ви хотіли запобігти, я не впевнений, що ви зможете їх повернути після скидання більше. Отже, переконайтеся, що у вас є всі зміни, які ви не зможете втратити, резервні копії, зрештою, просто скопіювавши клон, перш ніж спробувати це.


Я отримав питання. І спробував так, як згадував @Smar, але той самий результат "фатальний ....". Отже, що робити далі? будь-яка пропозиція?
Хаос

1
Ця проблема виникла під час використання Visual studio git initі git fetch --allусунула проблему.
Морзе

7
$ git status
fatal: Not a git repository:

Просто введіть у вашому cmd або git shell або будь-якому іншому терміналі наступне:

$ git init

6

Ця проблема у мене виникла після того, як я перемістив місце розташування проекту git у файловій системі. Коли я виконував деякі команди git, сталася помилка, наприклад:

$ git status
fatal: Not a git repository: /home/rospasta/path_old/gitprojecta/.git/modules/.travis

Я знайшов в /home/rospasta/path_old/gitprojecta/.travis/.gitабсолютній стежці написане старе місце розташування проекту. Оновлення цього шляху нового місця вручну вирішило для мене проблему.

Тож моя проблема може бути, а не бути проблемою з git, але HTH.


5

Якщо це допомагає комусь іншому, я отримав це повідомлення про помилку після випадкового видалення .git / object /

fatal: Не сховище git (або будь-який з батьківських каталогів): .git

Відновлення його вирішило проблему.


4

У командному рядку / CLI ви отримаєте цю помилку, якщо ваш поточний каталог НЕ є сховищем. Отже, вам потрібно спочатку CD в репо.


4

Можливо, пізно, але ще одне рішення, яке може допомогти майбутнім відвідувачам. Спочатку видаліть старий .gitкаталог -

rm .git

Потім знову ініціалізуйте git repo

git init

6
Слід зазначити, що це знищує всі метадані git, такі як коміти. Ви збережете свої дані, але Git "почне свіжий" - це може бути не дуже хорошою справою.
Йосиф А.

1
@JosephA: ти маєш рацію, це неоптимально. Чи є краще рішення, яке ви можете запропонувати? Я отримую fatalпомилку, навіть якщо .gitпапка існує.
Хасан Байг

Але е, хіба це не вже на віддаленому репо? Або що б вам справді потрібні комісії на вашому HD / локально для ...? @JosephA.
kevthanewversi

Тому що я думаю, що ти все ще можеш робити такі речі, як повернення git, скидання git, не маючи інформацію про фіксацію локально ... правда? @JosephA.
kevthanewversi

1
Це все витирає! Мабуть, найгірший спосіб вирішити це.
Richard Lalancette

4

Схоже, ви не переходите до конкретної папки. Наприклад, якщо я працюю над проектом під назвою bugsBunny, і він зберігається у папці d: / work: code, тому спочатку потрібно перейти до цієї папки за допомогою cd d: / work / code / bugsBunny, то після цього ви може продовжувати використовувати ваші команди git.


4

Навіть у мене була така ж проблема. Я написав скрипт оболонки, який створить резервну копію всіх моїх кодів до мого git repo в робочі дні тижня о 17:55 за допомогою crontab. побачивши журнали cron, я виявив вищезгадану проблему.

вищезазначена проблема виникає лише тоді, коли ви намагаєтеся виконувати команди git від негірського dir (тобто з іншого dir, який не є робочою копією). щоб виправити це додавання -C <git dir>в команді git, яку ви виконуєте таким, який git statusбуде git -C /dir/to/git statusі git add -Aбуде git -C /dir/to/git -A.


3

У моєму випадку я використовував Tortoise SVN і помилився одночасно використовувати функції GIT Visual Studio. Це змусило Visual Studio заблокувати файл HEAD всередині папки .git, щоб ні VS, ні черепаха не могли отримати доступ до репо, і я отримав помилку "фатально: Не git repo ..." з обох програм.

Рішення:

  1. Зайдіть у папку .git і перейменуйте "HEAD.lock" на "HEAD"
  2. Виберіть для однієї програми адміністратора GIT і не торкайтеся іншої

3

Для цього вам потрібно ввести одну команду, якої немає в командах bitbucket

Спробуйте спробувати git init.


2

у моєму випадку у мене була та сама проблема, коли я намагався будь-які команди git (наприклад, статус git) за допомогою Windows cmd. тож, що я роблю, це після встановлення git для вікна https://windows.github.com/ у змінні середовища, додати шлях класу git на змінну "PATH". зазвичай git встановлюється на C: / user / "username" / appdata / local / git / bin додають це на PATH у змінну навколишнього середовища

і ще одна річ у cmd - перейдіть у своє сховище git або cd туди, де у вашому вікні знаходиться ваш клон, вони зазвичай зберігатимуться в документах під github cd Document / Github / yourproject, після чого ви можете мати будь-які команди git

Дякую тобі


2

Перейдіть у свою вихідну папку, де зберігається локальне репо, приклад шахти знайдено в c: / GitSource, клацніть правою кнопкою миші в теці, натисніть тут git bash, а потім статус git ....



2

У моєму випадку файл .git / HEAD був пошкоджений (містив лише крапки). Тому я відредагував його і замінив його вміст на:

ref: refs/heads/master

і вона знову почала працювати.


1

Для мене це стосувалося неправильної форми власності на моєму .git/шляху. rootналежить .git/HEADта .git/index, не дозволяючи jenkinsкористувачеві виконувати завдання.


1
Здається, це не відтворюється в командному рядку. Після встановлення права власності на .git/HEADта .git/indexна root:root, я все ще можу додавати віддалені без помилок. При зміні права власності на весь .gitкаталог до root, я отримую іншу помилку: error: could not lock config file .git/config: Permission denied.
Кайл Странд

1

Знизу помилка здається, що Gits не знайшов .git-файл у поточному каталозі, тому кидає повідомлення про помилку.

Тому перейдіть до каталогу до каталогу репозиторіїв, де ви маєте перевірити код від git, та запустіть цю команду.

  • $ git checkout

1

У моєму випадку я виявив, що git у Windows з певного часу стає чутливим до регістру для букви диска.

Після оновлення git binary у Windows cli команди, які раніше працювали, зупинялися. наприклад, шлях у скрипті був D : \ bla \ file.txt, тоді як команда git приймала лише d : \ bla \ file.txt


1

git добре працював, і раптом він почав показувати це fatal: Not a git repository (or any of the parent directories): .gitповідомлення.

Для мене не впевнений, що було пошкоджено в папці .git, я зробив git clone ** newfolderі скопіював всю папку .git у свою пошкоджену / стару папку, де я робив зміни, перш ніж git почав показувати повідомлення про помилку ..

Все повернулося до норми, і git також розпізнав змінені / нестадійні файли.


0

відновіть .git/ORIG_HEADі інші кореневі файли .git repo

Я отримав цю помилку після відновлення з резервного копіювання, мабуть, файли, що містяться в кореневому каталозі .git, не зробили це до цілі, але всі підпапки зробили це спочатку, я подумав, що репо є непорушною.

Я виправив це відновленням кореневих файлів.


0

У мене виникла ця проблема із плагіном Jenkins Git після проблем із автентифікацією в GitLab. Дженкінс повідомляв про "hudson.plugins.git.GitException: [...] stderr: GitLab: Не вдалося знайти проект, який ви шукали. fatal: Не вдалося прочитати з віддаленого сховища. '

Однак якщо я зробив "git clone" або "git fetch" прямо з поля Jenkins (командного рядка), він працював без проблем.

Проблему було вирішено шляхом видалення всього каталогу / робочої області в папці завдань Дженкінса для цієї конкретної роботи, наприклад

rm -Rf $JENKINS_HOME/jobs/myJenkinsJob/workspace/

Імовірно, місцева папка .git мала / пошкодилася?


0

Це також може бути пов’язано з дозволами. Перевірте дозволи власника / групи та переконайтеся, що у вас є відповідні дозволи на доступ до цих даних. У моєму випадку я зіткнувся з цією помилкою під час запуску "git status" у репо, власність якого була встановлена ​​на root: root. Запуск "статусу git" як root вирішив мою проблему. Крім того, якщо ви не хочете, щоб користувач / група права власності була кореневою: root, пригнічіть репо до того, до чого у вас є доступ.



Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.