Git - fatal: Không thể tạo '/path/my_project/.git/index.lock': Tệp tồn tại


806

Tôi vẫn nhận được thông báo lỗi này, khi tôi cố gắng chuyển cây dự án của mình sang git repo.

Tôi đã kiểm tra các quyền của thư mục của tôi với dự án này và chúng được đặt trên 777. Trong thiết bị đầu cuối trong thư mục có my_projecttôi đặt:

git init

và sau đó nếu tôi cố gắng

git thêm.

hoặc là

git commit -m "tải lên đầu tiên"

vì vậy tôi sẽ nhận được lỗi

fatal: Unable to create '/path/my_proj/.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

Tôi cũng đã thử tạo một repo mới và ở đó để cam kết, nhưng tiếc là vẫn có thông báo lỗi tương tự.

Nguyên nhân của vấn đề là gì?


1
Tôi gặp vấn đề này vì tôi đã đăng nhập bằng su ở một thiết bị đầu cuối khác, chuyển trở lại đầu tiên mọi thứ đều ổn
maazza


3
bro tôi có cùng một vấn đề, sử dụng "sudo git add. hoặc git commit -m" tải lên đầu tiên "" thay vì "git add. hoặc git commit -m" tải lên đầu tiên ""
mehdi zahrane

Tôi đã sửa nó bằng cách thay đổi quyền trên tệp .git trên stackoverflow.com/questions/14127255/ dọa, tham khảo câu trả lời từ Mahshid Zeinaly
vikramvi

Câu trả lời:


1740

Thử

rm -f ./.git/index.lock

Trong thư mục kho lưu trữ của bạn. Thông báo lỗi khá rõ ràng về nguyên nhân gây ra nó, vì vậy nếu bạn không có quá trình git nào khác đang chạy (đó là trường hợp bình thường), hãy tiếp tục và xóa tệp đó.


7
Nó không tự động xảy ra. Bạn cần thực thi lệnh git pushđể đẩy các thay đổi của bạn lên máy chủ web. Chi tiết về cách thức hoạt động của nó ở đây: git yet.com/beginner/2009/01/21/pushing-and-pulling.html
Raphael R.

9
Tôi có cùng một vấn đề chính xác nhưng tôi không thể giải quyết theo cách này vì tệp .git / index.lock dường như không tồn tại: touch .get/index.locktrả vềtouch: .get/index.lock: No such file or directory
emersonthis

24
Emerson, dường như bạn đang tìm kiếm .get thay vì .git không tồn tại.
Apie

3
Quyền bị từ chối có nghĩa là bạn cần cung cấp cho người dùng bạn đang sử dụng Git với quyền đọc / ghi trên tệp. Kiểm tra lệnh chmod (trên * nix hoặc Thuộc tính -> tab Bảo mật trên WIndows)
Stijn de Witt

9
Nếu lỗi của bạn nói "Quyền bị từ chối", có lẽ bạn đã sao chép các tệp từ nơi khác và không có quyền đối với thư mục .git. Sử dụng ls -lđể xem các quyền, sau đó sử dụng sudo chown -R username ./*sudo chgrp -R username ./*thay đổi người dùng và nhóm của riêng bạn cho tất cả các tệp trong dự án.
chech

158

Trong Windows, thực hiện việc này trong dấu nhắc lệnh từ thư mục repo:

cd .git
del index.lock

CẬP NHẬT: Tôi thấy rằng tôi không cần phải làm thủ tục này nếu tôi đợi một lát sau khi tôi đóng các tệp tôi đang làm việc trước khi tôi cố gắng chuyển chi nhánh. Tôi nghĩ đôi khi vấn đề này xảy ra do git bắt kịp với một hệ thống tập tin chậm. Khác, các nhà phát triển hiểu biết nhiều hơn có thể kêu gọi nếu họ nghĩ rằng điều này là chính xác.


3
Thật kỳ lạ, tôi nhận được lỗi về tệp nhưng sau đó khi tôi cố xóa tệp trong cmd.exe, nó báo không tìm thấy tệp :) Kết quả tương tự với đường dẫn tuyệt đối và tương đối. Nhưng trong Git Bash, nó hoạt động (với rm -f index.lock)
Juha Untinen

Trong trường hợp của tôi, tôi đã thực hiện "Tìm nạp" sau một vài lần khởi động lại của Sourcetree và hoạt động.
maxivis

32

Hãy thử thoát Xcode - vì đó là máy khách git, bạn phải thoát Xcode để tránh các vấn đề với git trên dòng lệnh.


4
Đẹp! Lưu ý rằng Xcode VÀ các máy khách Git khác có thể là thủ phạm. Trong trường hợp của tôi, nó cũng đóng gitX.
NSTJ

Sau khi phải xóa tập tin khóa của tôi 10 lần hoặc lâu hơn sáng nay tôi cuối cùng cũng vấp phải câu trả lời này. Không biết xcode đã mở như thế nào nhưng chắc chắn nó đã phá hỏng quy trình làm việc của tôi. Cảm ơn vì tiền hỗ trợ!
Cloudkiller

24

Tôi đã có cùng một vấn đề. Tôi đã thử

rm -f ./.git/index.lock 

và giao diện điều khiển cho tôi một thông báo lỗi. Sau đó, tôi đã thử

rm --force ./.git/index.lock

và điều đó đã làm việc.

Chúc may mắn! Cái này hoạt động siêu


Tôi không thấy thư mục .git trong trường hợp của tôi. Tôi chỉ thấy ./ và ../ khi có liên quan đến thư mục ẩn.

Bạn đang dùng loại máy tính nào?
Olivia Steger

18

Trong thư mục .git của tôi, không có tệp index.lock. Vì vậy, bằng cách sử dụng trình bao Git Bash, tôi đã chạy ...

cd .git
touch index.lock
rm index.lock

Lệnh touch đã tạo tập tin và vấn đề đã biến mất.


Tại sao điều này bị hạ cấp? Tôi nhận được thông báo lỗi tương tự như OP. Điều này cố định tôi, và có thể có thể giúp đỡ người khác.
John Livermore

1
Tôi đã trải nghiệm một biến thể nhỏ của điều này: (1) Tôi gặp phải thông báo lỗi và đã thử nghiệm với các 'cách khắc phục' khác nhau; (2) Tôi thấy rằng index.lockkhông tồn tại; (3) Tôi đã sử dụng touchlệnh trên ; (4) khách hàng git của tôi đã ngừng hoạt động bình thường (tốt nhất, nó chậm lại khi bò); (5) Tôi đã xóa index.lock; (6) kho lưu trữ bắt đầu hoạt động bình thường trở lại.
Clarpaul

Chắc chắn không nên hạ cấp, sắp xếp vấn đề của tôi ra. Tôi không có tệp index.lock, nhưng một khi tôi đã tạo một tệp và sau đó xóa nó, cam kết đã hoạt động.
Bynho

touch index.lockngụ ý John đã bật * NIX, nhưng tôi chỉ làm tương tự trên Windows 10 (tạo một index.locktệp bằng trình soạn thảo văn bản, xóa nó ngay lập tức và thu lợi nhuận), và vấn đề đã biến mất.
ruffin

1
@Spark đã cập nhật ...
John Livermore

13

Bạn đã vô tình tạo kho lưu trữ bằng cách sử dụng rootngười dùng?

Nó chỉ xảy ra rằng tôi đã tạo kho git là rootngười dùng.

Tôi đã xóa kho git và tạo lại nó mà không có sudovà nó hoạt động.


1
Yeap, đó là nó. Cảm ơn
Natassia Tavares

9

Tôi cũng có vấn đề này, và tôi thấy nó thực sự là một vấn đề cho phép. vì vậy tôi làm điều này:

sudo chown -R : .git #change group
sudo chmod -R 775 .git #change permission

sau đó ererything là tuyệt vời, và gaa là thành công.

và sau đó tôi sử dụng gp, tôi nhận được một lỗi khác gần như cùng một lỗi

sudo chown -R "${USER:-$(id -un)}" . #use this can fix the problem

rực rỡ, điều này làm gì? "$ {NGƯỜI DÙNG: - $ (id -un)}"
Nick

7

Trong Mac OS X, thực hiện việc này trong dấu nhắc lệnh từ thư mục repo:

cd .git
rm index.lock

1
Không có tập tin hoặc thư mục như vậy
Barkox

5

Nếu bạn đang sử dụng một trong các #intelliJIDE và nhận thông báo này (tôi đang sử dụng #webtorm), xin lưu ý rằng sự cố này có thể xảy ra do ẩn một trong các thư mục dự án (bên trong cài đặt) và điều này có thể ngăn không cho GIThợp nhất.


5

Giải pháp hiệu quả với tôi là đóng văn bản siêu phàm vì quá trình git đang chạy được biên tập viên khởi xướng.


Gần đây tôi đã cài đặt plugin Sublime Text GitSavvy và chỉ gặp lỗi này. Cảm ơn gợi ý, @snorkelzebra
Kitze

5

Nếu sau khi bạn thử:

rm -f ./.git/index.lock

bạn lấy:

rm: không thể hủy liên kết 'index.lock': Quyền bị từ chối

Hãy thử đóng tất cả các phần mềm có thể đang sử dụng Git. Tôi đã mở Source Tree và Visual Studio và sau khi đóng cả hai lệnh đã hoạt động.


5

Trong Windows, tôi chỉ có thể xóa tệp khóa sau khi kết thúc Tác vụ cho tất cả các quy trình Git Windows (32 bit) trong Trình quản lý tác vụ.

Giải pháp (Thắng 10)

1. Kết thúc tác vụ cho tất cả các quy trình Git Windows (32 bit) trong Trình quản lý tác vụ

2. Xóa tệp .git / index.lock


4

Trong trường hợp của tôi, giải pháp là chờ 5 phút. Rõ ràng hoạt động trước đây của tôi vẫn đang chạy nhưng tôi không biết điều đó. Tôi đã sử dụng rùa git trên cửa sổ.



4

Tôi nghĩ rằng có một giải pháp tốt hơn là xóa tệp (và chúa mới biết điều gì sẽ xảy ra tiếp theo khi xóa / tạo tệp bằng sudo):

git gc

3

Bạn có vấn đề với .git/index.lockvì vậy xóa nó bằng cách sử dụng lệnh dưới đây.

Chỉ huy:

sudo rm -rf .git / index.lock


3

Tôi đã thử nó với nhiều phương pháp nhiều lần nhưng phương pháp này hiệu quả với tôi (tôi đã sử dụng thiết bị đầu cuối của PyCharm):

$ cd .git/

$ rm -f index.lock

Sau đó, tôi đã thử một lần nữa để tạo ra một repo git trống:

$ git init

$ git add .

$ git commit -m "commit msg"

3

Nếu đó là một mô hình con, thay vào đó hãy thử điều này trên thư mục kho lưu trữ của bạn:

rm -f ../.git/modules/submodule-name/index.lock

thay đổi tên mô hình con thành tên mô hình con của bạn.


2

Giải pháp cho vấn đề này là sao chép ba tệp xcode / dự án trong thư mục và sau đó tạo thư mục mới (Whereever khác) và sau đó dán ba tệp / thư mục.


2

Ngoài ra chúng ta chỉ có thể giết quá trình git. Tôi nhận được vấn đề tương tự thông qua ứng dụng GUI cho git, có gì đó không ổn và git làm cho một số hoạt động vô hạn. Quá trình giết chết sẽ đóng băng ứng dụng hoạt động với git, chỉ cần khởi động lại nó và mọi thứ sẽ ổn.


2

Trong mọi trường hợp, vì bất kỳ lý do gì, bạn đang thực hiện rebase từ thư mục được đồng bộ hóa bởi dịch vụ đám mây (dropbox, drive, onedrive, v.v.), bạn nên tạm dừng hoặc tắt đồng bộ hóa vì nó sẽ can thiệp vào quyền trong quá trình rebase .


2

Đối với tôi đó là

rm -r .git-credentials.lock 

2

Tôi đã thay đổi quyền thư mục của mình để tôi biết nó có thể liên quan đến quyền. Trong trường hợp của tôi, tôi đã xóa người dùng không mong muốn (_www) và sau đó áp dụng quyền đọc / ghi cho mọi người bằng cách áp dụng thay đổi cho tất cả nội dung. Đây là trên máy Mac

Quyền thư mục trên máy Mac


2

Tất cả các lệnh gỡ bỏ không hoạt động với tôi những gì tôi đã làm là điều hướng đến đó bằng cách sử dụng đường dẫn được cung cấp trong git và sau đó xóa nó bằng tay.


2

KHÔNG SỬ DỤNG Plugin Atom platformio-atom-ide-terminal để làm điều này. SỬ DỤNG NHIỆM VỤ CỦA DISTRO CỦA BẠN TRỰC TIẾP.

Tôi liên tục nhận được lỗi này trong khi đánh lại / squishing cam kết và không biết tại sao vì tôi đã làm điều đó trước đó nhiều lần.

Không có vấn đề bao nhiêu lần tôi sẽ xóa các index.locktập tin, mỗi lần nó sẽ thất bại.

Hóa ra đó là vì tôi đang sử dụng plugin ATOM EDITOR . Khi tôi sử dụng thiết bị đầu cuối đi kèm với Ubuntu, nó hoạt động như một bùa mê.


2

chỉ cần truy cập D: /project/androidgc/.git/ thư mục này và xóa index.lock điều này làm việc cho tôi.


1

Trong trường hợp ai đó đang sử dụng git svn, tôi cũng gặp vấn đề tương tự nhưng không thể xóa tệp vì nó không có ở đó!. Sau khi kiểm tra quyền, chạm vào tệp và xóa tệp, và tôi không nhớ những gì khác, điều này đã thực hiện thủ thuật:

  • kiểm tra các chi nhánh tổng thể.
  • git svn rebase (trên chủ)
  • kiểm tra chi nhánh bạn đang làm việc
  • git svn rebase

1

Thêm một chút vì tôi phải sử dụng các câu trả lời khác nhau để có được giải pháp thực tế (đối với tôi).

Điều này đã làm điều đó cho tôi:

  1. Mở chi nhánh bạn đang làm việc
  2. Mở terminal (Tôi sử dụng terminal trong Git GUI)
  3. Gõ lệnh: cd .git
  4. Gõ lệnh: rm -f index.lock

Một số có thể phải sử dụng -Forcethay vì -f. Bạn có thể kiểm tra các dòng lệnh của thiết bị đầu cuối của mình bằng cách thực hiện một lệnh trong thiết bị đầu cuối của bạn một cái gì đó như : git help.


0

Tất cả các giải pháp đều đúng:

Just remove .git from your corrupted repository, 

then copy this file if back from another clone (if you don't have it in another machine, just clone it).

Cuối cùng, điều làm nên sự khác biệt đối với tôi:

  • Tránh sử dụng sudo để giải nén hoặc sao chép thư mục .git mới. Git sẽ không có quyền truy cập vào thư mục .git nếu bạn sử dụng quyền superuser để tạo thư mục

0

Tôi đã xảy ra điều này khi tôi ở trong thư mục con của thư mục tương ứng với thư mục gốc của repo (tức là thư mục trong đó .git là). Chuyển đến thư mục gốc đã giải quyết được vấn đề - với chi phí làm cho tất cả các tham chiếu tệp trở nên bất tiện hơn một chút khi bạn phải đi đường dẫn / đến / thư mục / foo.ext thay vì chỉ foo.ext

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.