Lỗi kết hợp GIT, cam kết không thể thực hiện được vì bạn có các tập tin chưa được trộn


172

Vì vậy, tôi đã quên kéo mã của mình trước khi chỉnh sửa nó và sau đó khi tôi cam kết mã mới và cố gắng đẩy, tôi đã không thể đẩy lỗi, tại thời điểm đó tôi đã thực hiện "git pull" làm cho một số tệp bị xung đột nổi bật. Tôi đã loại bỏ các xung đột nhưng tôi không biết phải làm gì từ đây ..

Tôi đã cố gắng git commitmột lần nữa nhưng nó nói "cam kết là không thể bởi vì bạn có các tập tin chưa được trộn"

Câu trả lời:


243

Nếu bạn đã khắc phục các xung đột bạn cần thêm các tệp vào giai đoạn git add [filename], sau đó cam kết như bình thường.


2
Điều gì xảy ra nếu đó là những tập tin tôi chưa làm việc? Tôi có nên thêm chúng không? Cách tốt nhất để đối phó với nó là gì?
R11G

1
Tôi đã phải làm điều này cho một tập tin đã bị xóa trong một chi nhánh mà tôi đang sáp nhập vào chi nhánh hiện tại. Git đã gắn cờ nó là một xung đột, vì vậy tôi phải xóa tệp cục bộ sau đó git add the_fileđể cam kết hợp nhất.
Brendon Muir

Làm thế nào để tìm danh sách các xung đột?
polina-c

7
git statussẽ hiển thị cho bạn các tệp có xung đột
jonnystoten

@jonnystoten cảm ơn bình luận của bạn! Tôi đã sử dụng git statusvà tìm thấy một tập tin cho biết both deleted. Giao diện người dùng WebStorm không hiển thị vấn đề, chỉ nói rằng nó không thể cam kết hợp nhất. Đã giải quyết!
Yuri Predbourski

52

Bạn cần làm hai việc. Đầu tiên thêm các thay đổi với

git add .
git stash  

git checkout <some branch>

Nó sẽ giải quyết vấn đề của bạn khi nó giải quyết cho tôi.


Nó không chỉ yêu cầu thêm git. sẽ đủ
Rais Iqbal

3
Ngoài ra, đây là một sự git add
hiềm khích

11

Bạn có thể sử dụng git stashđể lưu kho lưu trữ hiện tại trước khi thực hiện cam kết bạn muốn thực hiện (sau khi hợp nhất các thay đổi từ repo ngược dòng với git stash pop). Tôi đã phải làm điều này ngày hôm qua khi tôi có cùng một vấn đề.


1

Lỗi này xảy ra khi bạn giải quyết xung đột nhưng tệp vẫn cần được thêm vào trong khu vực giai đoạn. git thêm. sẽ giải quyết nó. Sau đó, cố gắng cam kết và hợp nhất.


0

Tôi đã có một vấn đề tương tự xảy ra với việc xóa các tệp trong "đường dẫn không được trộn"

Những tập tin đó phải được gỡ bỏ bằng cách sử dụng git rm


0

Vậy từ lỗi trên. Tất cả bạn phải làm để khắc phục vấn đề này là hoàn nguyên mã của bạn. ( git revert HEAD) sau đó git pullvà sau đó làm lại các thay đổi của bạn, sau đó git pullmột lần nữa và có thể cam kết hoặc hợp nhất mà không có lỗi.


0

Kể từ git 2.23 (tháng 8 năm 2019), bây giờ bạn có một phím tắt để làm điều đó : git restore --staged [filepath]. Với lệnh này, bạn có thể bỏ qua một tệp bị xung đột mà không cần thêm và xóa tệp đó.

Thí dụ:

> git status

  ...
  Unmerged paths:
    (use "git add <file>..." to mark resolution)
      both modified:   file.ex

> git restore --staged file.ex

> git status

  ...
  Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git restore <file>..." to discard changes in working directory)
      modified:   file.ex

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.