Nhận được Fatal: Không phải là kho lưu trữ git, khi cố gắng từ xa thêm repo Git


439

Tôi sẽ tự giới thiệu về Git bằng cách làm theo hướng dẫn này:

Mọi thứ hoạt động tốt cho đến khi phần repo được thêm vào máy cục bộ của tôi:

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

(Sau khi thay thế USERNAME, NFSNSERVER và REPOAME bằng tên chính xác) Tôi nhận được lỗi:

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

Bạn có thể giúp tôi vượt qua bước này?


2
git initnhưng cũng đảm bảo không có thư mục con nào của bạn có .gitthư mục riêng
James Oravec

Câu trả lời:


908

Bạn đã khởi tạo một kho lưu trữ Git cục bộ, trong đó điều khiển từ xa này được cho là được thêm vào?

.gitThư mục địa phương của bạn có một thư mục?

Hãy thử git init.


2
Tôi đã thực hiện bước này, nhưng phải thực hiện lại sau khi thiết lập tài khoản sân động cơ của tôi cài đặt sân động cơ.
Lập trình viên

3
.gitthư mục của tôi đã biến mất Là git initgiống như xóa các thư mục kho lưu trữ, và sau đó git clone .... Tất cả những gì tôi cần làm là mộtpull
Francisco Corrales Morales

3
@FranciscoCorralesMorales nếu .gitthư mục của bạn không còn, bạn có thể chạy git initlại để tạo một cái mới. Bạn sẽ cần phải thêm lại một điều khiển từ xa trước khi bạn có thể lấy từ đó.

3
Tôi đã nhận được cùng một lỗi khi gửi thay đổi từ hệ thống địa phương. Đã thử git init và nó đã làm việc. Cảm ơn!
rbashish

6
Của tôi có .git và tôi đã thực hiện git init nhưng tôi gặp lỗijalal@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

Bạn sẽ gặp lỗi này nếu bạn cố gắng sử dụng lệnh Git khi thư mục làm việc hiện tại của bạn không nằm trong kho Git. Đó là bởi vì, theo mặc định, Git sẽ tìm .gitthư mục kho lưu trữ (bên trong gốc của dự án?), Như được chỉ ra bởi câu trả lời của tôi cho "Git sẽ không hiển thị nhật ký trừ khi tôi ở trong thư mục dự án" :

Theo tài liệu chính thức của Linux Kernel Git , GIT_DIR[biến môi trường] được đặt để tìm .gitthư mục (trong thư mục làm việc hiện tại?) Theo mặc định:

Nếu GIT_DIRbiến môi trường được đặt thì nó chỉ định một đường dẫn sẽ sử dụng thay vì mặc định .gitcho cơ sở của kho lưu trữ.

Bạn sẽ cần phải cdvào kho lưu trữ / bản sao làm việc hoặc bạn đã không khởi tạo hoặc sao chép kho lưu trữ ở vị trí đầu tiên, trong trường hợp đó bạn cần khởi tạo repo trong thư mục nơi bạn muốn đặt repo:

git init

hoặc sao chép một kho lưu trữ

git clone <remote-url>
cd <repository>

13
+1 để đề cập đến GIT_DIR. trong các móc nối trong một repo trần, GIT_DIR được đặt thành '.' thay vì '.git'.
phổ biến

+1 cho git init. Sau khi đọc câu trả lời của bạn, tôi đã sử dụng nó nhiều lần trên các kho lưu trữ mà tôi đã sao chép, nhưng không được công nhận. Vì vậy, nó có vẻ an toàn khi chạy từ cây thư mục được cho là a git repository, có tất cả các tệp trong thư mục git, nhưng tuyên bố là khôngfatal: Not a git repository (or any parent up to mount point
ElderDelp

34

Vấn đề của tôi là đối với một số trục trặc với hệ điều hành của tôi, bất kỳ lệnh nào trên kho lưu trữ cục bộ của tôi đều kết thúc bằng "fatal: Not a git repository (hoặc bất kỳ thư mục mẹ nào): .git", có kèm theo lệnh fsck.

Vấn đề là tập tin CHÍNH trống .

Tôi đã có thể tìm thấy tên chi nhánh thực tế mà tôi đã làm việc trong .git / refs / Heads và sau đó tôi đã làm điều này:

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

Nó đã làm việc.


2
Tệp tin ĐẦU của tôi vì bất kỳ lý do nào bị hỏng, vì vậy tôi đã khôi phục nó và khắc phục sự cố
Steven

1
Bạn là bạn thân tuyệt vời. Tiết kiệm một tấn thời gian của tôi
Vaibhav Sah

Đây cũng là vấn đề của tôi. Cảm ơn
Carlos Rafael Ramirez

3
Tôi đã mở Visual Studio trong một cuộc nổi loạn git và Visual Studio nhận thấy một sự thay đổi tập tin và ngay sau đó tôi có một màn hình xanh chết chóc. Sau khi khởi động lại .git / HEAD tràn ngập NULLS và khi tôi thay thế chúng với một băm đầy đủ (5621afeffbabed40e3f386676068c45643644b7d) đọc từ một nơi nào như .git \ refs \ khiển từ xa \ nguồn gốc \ thạc sĩ, git bắt đầu hoạt động trở lại tôi cũng cần stackoverflow.com/questions / 1115854 / Nhận vì điều này bảo tôi xóa .git / index và tôi cần xóa .git / index.lock trước khi thực hiện đặt lại git. Giờ thì ổn rồi
Ivan

1
Tôi gần như mất hy vọng để lấy lại công việc của mình. Chỉ cần tôi sao chép và dán giải pháp của bạn và nó đã làm nên điều kỳ diệu. Cảm ơn
Mukesh Kumar

17

LƯU Ý: điều này không trả lời cho vấn đề phổ biến, đó là vấn đề của OP, nhưng đối với vấn đề khác trong đó thông báo lỗi này có thể xuất hiện. Tôi không cảm thấy muốn làm câu hỏi mới chỉ để viết câu trả lời này xuống, nói cho tôi biết nếu tôi nên làm điều đó thay vào đó: P

Tôi đã gặp phải tình huống, rất có thể là do một số tham nhũng của sự cố nhất định mà tôi gặp phải, rằng tôi đã gặp lỗi này ngay cả khi .gitđã tồn tại.

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

Vì tôi không có bất cứ thứ gì thực sự cần bảo quản, tôi chỉ đi theo con đường giả và ...

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

Vẫn không hoạt động, ví dụ như git logtrả về fatal: bad default revision 'HEAD'. Điều khiển từ xa đã ở đó, vì vậy tôi đã làm git fetch --allvà sau đó chỉ git reset --hard origin/masterđể đưa bản thân đến trạng thái repo trước đây.

Lưu ý rằng nếu có một số thay đổi không được cam kết, bạn có thể thấy chúng với git status, git diffv.v. Sau đó ngay git diff yourfile > patchtrước khi chạy thiết lập lại.

Ít nhất đối với tôi reflog ( git reflog) biến mất hoàn toàn. Do đó, nếu bạn thực hiện đặt lại và có một số thay đổi bạn muốn ngăn chặn, tôi không chắc bạn có thể lấy lại chúng sau khi đặt lại nữa không. Vì vậy, hãy chắc chắn rằng bạn có tất cả các thay đổi mà bạn không thể mất để sao lưu, cuối cùng chỉ bằng cách sao chép bản sao trước khi thử điều này.


Tôi có vấn đề. Và đã thử cách @Smar đề cập, nhưng kết quả tương tự "gây tử vong ....". Vì vậy, những gì tiếp theo để làm gì? bất cứ đề nghị nào?
Hỗn loạn

1
Sự cố này xảy ra trong khi sử dụng Visual studio git initgit fetch --allđã khắc phục sự cố.
Morse

7
$ git status
fatal: Not a git repository:

Chỉ cần nhập nội dung sau vào vỏ cmd hoặc git của bạn hoặc bất kỳ thiết bị đầu cuối nào khác:

$ git init

6

Vấn đề này xảy ra với tôi sau khi tôi chuyển vị trí của một dự án git trên hệ thống tập tin. Khi tôi chạy một số lệnh git, lỗi xảy ra, ví dụ:

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

Tôi tìm thấy trong /home/rospasta/path_old/gitprojecta/.travis/.gitđường dẫn tuyệt đối của vị trí cũ của dự án đã được viết. Cập nhật thủ công đường dẫn này của vị trí mới đã giải quyết vấn đề cho tôi.

Vì vậy, vấn đề của tôi có thể hoặc không phải là vấn đề git, nhưng HTH.


5

Trong trường hợp nó giúp được người khác, tôi đã nhận được thông báo lỗi này sau khi vô tình xóa .git / object /

fatal: Không phải là kho git (hoặc bất kỳ thư mục mẹ nào): .git

Khôi phục nó đã giải quyết vấn đề.


4

Trong dòng lệnh / CLI, bạn sẽ gặp lỗi này nếu thư mục hiện tại của bạn KHÔNG phải là kho lưu trữ. Vì vậy, bạn phải đầu tiên CD vào repo.


4

Có lẽ đã quá muộn nhưng Một giải pháp khác có thể giúp du khách trong tương lai. Đầu tiên xóa .gitthư mục cũ -

rm .git

Sau đó khởi tạo lại git repo

git init

6
Cần lưu ý rằng điều này sẽ phá hủy tất cả các siêu dữ liệu git như cam kết. Bạn sẽ giữ dữ liệu của mình, nhưng Git sẽ "bắt đầu mới" - đây có thể không phải là một điều tốt.
Joseph A.

1
@JosephA.: Bạn nói đúng, đó là tối ưu. Có một giải pháp tốt hơn bạn có thể đề xuất? Tôi nhận được fatallỗi mặc dù .gitthư mục tồn tại.
Hassan Baig

Nhưng này, không phải là các cam kết đã có trên repo từ xa sao? Hoặc những gì bạn thực sự cần các cam kết trên HD / cục bộ của bạn cho ...? @JosephA.
kevthanewversi

Vì tôi nghĩ bạn vẫn có thể làm những thứ như git Revert, git reset mà không cần thông tin cam kết cục bộ ... phải không? @JosephA.
kevthanewversi

1
Đây là lau tất cả mọi thứ! Có lẽ là cách tồi tệ nhất để giải quyết điều này.
Richard Lalancette

4

Có vẻ như bạn sẽ không đến thư mục cụ thể của bạn. Ví dụ: nếu tôi đang làm việc với một dự án có tên bugBunny và nó được lưu trong thư mục d: / work: code, thì trước tiên bạn phải vào thư mục đó bằng cách sử dụng cd d: / work / code / bugBunny, sau đó bạn có thể tiếp tục sử dụng các lệnh git của bạn.


4

Ngay cả tôi cũng có vấn đề tương tự. tôi đã viết một tập lệnh shell sẽ sao lưu tất cả các mã của tôi vào repo git của tôi vào các ngày làm việc trong tuần vào lúc 17:55 bằng cách sử dụng crontab. bằng cách xem nhật ký của cron tôi đã tìm thấy vấn đề được đề cập ở trên.

vấn đề trên chỉ xảy ra khi bạn đang cố thực thi các lệnh git từ một thư mục không phải gir (tức là từ các thư mục khác không phải là bản sao làm việc). để sửa lỗi này, thêm -C <git dir>vào lệnh git mà bạn đang thực hiện như vậy git statussẽ git -C /dir/to/git statusgit add -Asẽ git -C /dir/to/git -A.


3

Trong trường hợp của tôi, tôi đã sử dụng Rùa SVN và mắc lỗi khi sử dụng các chức năng GIT của Visual Studio cùng một lúc. Điều đó đã khiến Visual Studio khóa tệp CHÍNH trong thư mục .git để cả VS và Rùa không thể truy cập vào repo và tôi đã gặp lỗi "fatal: Not a git repo ..." từ cả hai ứng dụng.

Giải pháp:

  1. Đi vào bên trong thư mục .git và đổi tên "HEAD.lock" thành "HEAD"
  2. Quyết định cho một ứng dụng quản trị viên GIT và không chạm vào ứng dụng khác

3

Cho rằng bạn cần phải nhập một lệnh bị thiếu trong các lệnh bitbucket

Hãy thử git init.


2

trong trường hợp của tôi, tôi đã gặp vấn đề tương tự trong khi tôi thử bất kỳ lệnh git nào (ví dụ như trạng thái git) bằng windows cmd. Vì vậy, những gì tôi làm là sau khi cài đặt git cho cửa sổ https://windows.github.com/ trong các biến môi trường, thêm đường dẫn lớp của git vào biến "PATH". thông thường git sẽ được cài đặt trên C: / user / "username" / appdata / local / git / bin, thêm cái này vào PATH trong biến môi trường

và một điều nữa trên cmd đi đến kho git hoặc cd của bạn đến nơi bản sao của bạn trên cửa sổ của bạn thường chúng sẽ được lưu trữ trên các tài liệu theo github cd Document / Github / yourproject sau đó bạn có thể có bất kỳ lệnh git nào

cảm ơn bạn


2

Chuyển đến thư mục nguồn của bạn nơi lưu trữ repo cục bộ, ví dụ của tôi được tìm thấy trong c: / GitSource, nhấp chuột phải trong thư mục, nhấp vào git bash tại đây, sau đó git status ....



2

Trong trường hợp của tôi, tập tin .git / HEAD bị hỏng (chỉ chứa các dấu chấm). Vì vậy, tôi đã chỉnh sửa nó và thay thế nội dung của nó bằng:

ref: refs/heads/master

và nó bắt đầu hoạt động trở lại.


1

Đối với tôi, điều này có liên quan đến quyền sở hữu không đúng trong .git/con đường của tôi . rootsở hữu .git/HEAD.git/index, ngăn chặn jenkinsngười dùng chạy công việc.


1
Điều này dường như không thể lặp lại trên dòng lệnh. Sau khi thiết lập quyền sở hữu .git/HEAD.git/indexđể root:root, tôi vẫn có thể thêm điều khiển từ xa mà không có lỗi. Khi tôi thay đổi quyền sở hữu toàn bộ .gitthư mục thành root, tôi gặp một lỗi khác : error: could not lock config file .git/config: Permission denied.
Kyle Strand

1

Lỗi bên dưới có vẻ như Gits không tìm thấy tệp .git trong thư mục hiện tại nên ném thông báo lỗi.

Do đó, thay đổi thư mục thành thư mục kho lưu trữ nơi bạn đã kiểm tra mã từ git và sau đó chạy lệnh này.

  • $ git thanh toán

1

Trong trường hợp của tôi, tôi thấy rằng git trong windows trở nên phân biệt chữ hoa chữ thường đối với ký tự ổ đĩa từ một số điểm.

Sau khi nâng cấp git binary trong windows, các lệnh cli được sử dụng để làm việc dừng lại. ví dụ: đường dẫn trong tập lệnh là D : \ bla \ file.txt trong khi lệnh git chỉ được chấp nhận d : \ bla \ file.txt


1

git đã hoạt động tốt và đột nhiên nó bắt đầu hiển thị fatal: Not a git repository (or any of the parent directories): .gitthông báo này .

Đối với tôi không chắc chắn những gì đã bị hỏng trong thư mục .git, tôi đã làm git clone ** newfoldervà sao chép toàn bộ thư mục .git vào thư mục cũ bị hỏng / cũ của tôi, nơi tôi đang thực hiện các thay đổi trước khi git bắt đầu hiển thị thông báo lỗi ..

Mọi thứ trở lại bình thường và git cũng nhận ra các tập tin đã thay đổi / không theo giai đoạn của tôi.


0

khôi phục .git/ORIG_HEADvà các tập tin repo gốc .git khác

Tôi đã gặp lỗi này sau khi khôi phục từ bản sao lưu, rõ ràng các tệp trong thư mục gốc .git đã không đến được mục tiêu, nhưng tất cả các thư mục con đã làm như vậy lúc đầu tôi nghĩ rằng repo vẫn còn nguyên vẹn.

Tôi đã sửa nó bằng cách khôi phục các tập tin gốc.


0

Tôi gặp vấn đề này với plugin Jenkins Git sau khi xác thực sự cố với GitLab. Jenkins đã báo cáo 'hudson.plugins.git.GitException: [...] stderr: GitLab: Dự án bạn đang tìm kiếm không thể tìm thấy. gây tử vong: Không thể đọc từ kho lưu trữ từ xa. '

Tuy nhiên, nếu tôi đã thực hiện một 'git clone' hoặc 'git fetch' trực tiếp từ hộp Jenkins (dòng lệnh) thì nó không hoạt động.

Vấn đề đã được giải quyết bằng cách xóa toàn bộ thư mục / không gian làm việc trong thư mục công việc Jenkins cho công việc cụ thể đó, vd

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

Có lẽ thư mục .git cục bộ đã bị cũ / hỏng?


0

Điều này cũng có thể là do quyền. Kiểm tra quyền của chủ sở hữu / nhóm và đảm bảo bạn có đủ quyền để truy cập dữ liệu đó. Trong trường hợp của tôi, tôi đã gặp phải lỗi này khi chạy "trạng thái git" trong một repo có quyền sở hữu được đặt thành root: root. Chạy "git status" khi root giải quyết vấn đề của tôi. Ngoài ra, nếu bạn không muốn quyền sở hữu của người dùng / nhóm là root: root, hãy chọn repo cho thứ bạn có quyền truy cập.


0

Tôi đã gặp sự cố này và đã khắc phục bằng cách thêm tệp README.md


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.