Vui lòng nhập một thông điệp cam kết để giải thích lý do tại sao sự hợp nhất này là cần thiết, đặc biệt nếu nó hợp nhất một dòng ngược được cập nhật vào một nhánh chủ đề


515

Tôi đang sử dụng Git. Tôi đã thực hiện thao tác từ một repo từ xa và nhận được thông báo lỗi:

Vui lòng nhập một thông điệp cam kết để giải thích lý do tại sao sự hợp nhất này là cần thiết,
đặc biệt là nếu nó hợp nhất một dòng ngược được cập nhật vào một nhánh chủ đề.

Tôi cố gắng gõ một tin nhắn và nhấn Enternhưng không có gì xảy ra.

Làm thế nào để tôi nói với Git / Terminal Tôi đã nhập xong tin nhắn của mình?

Tôi đang sử dụng Terminal trên OS X.


3
Dường như GIT của bạn được cấu hình để mở một mẫu được cấu hình sẵn và mẫu đó đang được mở thông qua trình chỉnh sửa mặc định (vi / vim).
Shunya

Hủy bỏ hợp nhất này và thử sử dụng git pull --rebase.
Ankush Jain

3
Tạo cho tôi "Shift ZZ" giải quyết vấn đề
papacico

Câu trả lời:


1190

Đây không phải là thông báo lỗi Git, đó là trình chỉnh sửa vì git sử dụng trình chỉnh sửa mặc định của bạn.

Để giải quyết điều này:

  1. nhấn "i" (i để chèn)
  2. viết tin nhắn hợp nhất của bạn
  3. nhấn "esc" (thoát)
  4. viết ": wq" (viết và bỏ)
  5. sau đó nhấn enter

7
Ok, nhưng điều này là giả sử biên tập viên của anh ấy là vihoặc vim.
Gabriele Petronella

106
điều đó thật phức tạp
Connor Leech

92
Chúa tôi ghétVi
Sobiaholic

153
Nếu nó giúp được bất cứ ai, cách bạn nhớ điều này là "i" dành cho "insert", "esc" là lối thoát khi chèn và ": wq" chỉ là "ghi" và "thoát".
Josh Beam

83
Điều này cũng có thể là ↑↑ ↓↓ ← → ← → BA
Wesley Smith

39

Thật ra đó không phải là một lỗi! Nó có nghĩa là bạn nên nhập một số tin nhắn để đánh dấu sự hợp nhất này. HĐH của tôi là Ubuntu 14.04. Nếu bạn sử dụng cùng một HĐH, bạn chỉ cần thực hiện việc này như sau:

  1. Nhập một số tin nhắn

  2. CtrlCO

  3. Nhập tên tệp (chẳng hạn như "Merge_feature01") và nhấn Enter

  4. CtrlX để thoát

Bây giờ nếu bạn truy cập .git và bạn sẽ tìm thấy tệp "Merge_feature01", đó thực sự là nhật ký hợp nhất.


6
Tôi tự hỏi làm thế nào ai đó sẽ biết điều này? Thật kỳ lạ khi nó hoạt động. Cảm ơn đã trả lời này.
Adrian Carr

@ScottyBlades tại sao trên trái đất nên? câu hỏi được gắn thẻ osx và câu trả lời này liên quan đến cách Ubuntu thiết lập một thiết lập hoàn toàn khác cho Git (sử dụng nanohoặc pico), không áp dụng cho thiết lập OS X. Nó không có cách nào khái quát và cũng không cung cấp cái nhìn sâu sắc về cách thức hoạt động của nó, do đó bình luận của @AdrianCarr để lại. Có nhiều câu trả lời tốt hơn bây giờ.
oligofren

27

tl; dr Đặt trình chỉnh sửa thành thứ gì đó đẹp hơn, như Sublime hoặc Atom

Ở đây, Nice được sử dụng theo nghĩa của một trình soạn thảo mà bạn thích hoặc thấy thân thiện với người dùng hơn .

Vấn đề tiềm ẩn là Git theo mặc định sử dụng một trình soạn thảo quá không trực quan để sử dụng cho hầu hết mọi người: Vim. Bây giờ, đừng hiểu lầm tôi, tôi yêu Vim, và trong khi bạn có thể dành thời gian sang một bên (như một tháng) để học Vim và cố gắng hiểu tại sao một số người nghĩ Vim là biên tập viên vĩ đại nhất trong sự tồn tại, có một cách nhanh hơn sửa lỗi này :-)

Cách khắc phục không phải là ghi nhớ các lệnh khó hiểu , như trong câu trả lời được chấp nhận, mà là cấu hình Git để sử dụng trình soạn thảo mà bạn thích và hiểu! Nó thực sự đơn giản như cấu hình một trong hai tùy chọn này

  1. cài đặt cấu hình git core.editor(theo dự án hoặc toàn cầu)
  2. biến VISUALhoặc EDITORmôi trường (điều này cũng hoạt động cho các chương trình khác)

Tôi sẽ đề cập đến tùy chọn đầu tiên cho một vài biên tập viên nổi tiếng, nhưng GitHub cũng có một hướng dẫn tuyệt vời về điều này cho nhiều biên tập viên .

Sử dụng nguyên tử

Trực tiếp từ tài liệu của nó , nhập cái này vào một thiết bị đầu cuối: git config --global core.editor "atom --wait"

Git thường đợi lệnh biên tập kết thúc, nhưng vì Atom chuyển sang xử lý nền ngay lập tức, nên điều này sẽ không hoạt động, trừ khi bạn cung cấp cho nó --waittùy chọn.

Để sử dụng văn bản tuyệt vời

Vì những lý do tương tự như trong trường hợp Atom, bạn cần một lá cờ đặc biệt để báo hiệu cho quá trình nó không nên rẽ vào nền:

git config --global core.editor "subl -n -w"


Vim không mất một tháng. phải mất hai ngày và bạn không bao giờ quên miễn là thỉnh thoảng bạn vẫn giữ một mánh gian lận tiện dụng.
dùng264431

22

Cứ làm đi,

CTRL + X

CTRL + C

Nó sẽ yêu cầu bạn lưu tập tin, Bấm Y, thế là xong.


Đây là nếu trình chỉnh sửa mặc định của bạn là "pico" hoặc "nano" Các ý kiến ​​trên nên được sử dụng nếu trình chỉnh sửa mặc định của bạn là vim.
JacKeown

7

Ở đây nó yêu cầu bạn cho một thông báo kết nối với hợp nhất của bạn để tham khảo trong tương lai tại sao bạn thực hiện hợp nhất này.

press "i"
on top above on #lines write your message
press "esc" button
write ":wq" (it will write in bottom automatically)
press enter

6

Thay vào đó, bạn có thể git CtrlZvà thử lại cam kết nhưng lần này thêm "-m" với một thông báo trong dấu ngoặc kép sau đó, sau đó nó sẽ cam kết mà không nhắc bạn với trang đó.


3
lol điều này chắc chắn sẽ giải quyết vấn đề của OP. git commit -m 'I did blah'
James M. Lay

Tôi có phiên bản git 1.7.11.4 trên thiết bị đầu cuối linux và mặc dù thực tế là tôi đưa git commit -m "message" hoặc git commit --message "message", thỉnh thoảng vẫn có trình soạn thảo bật lên, yêu cầu một tin nhắn. Có ai biết tại sao công tắc "-m" bị bỏ qua không?
pglpm

4

Vì kho lưu trữ cục bộ của bạn là một vài cam kết phía trước, git cố gắng hợp nhất điều khiển từ xa của bạn với repo cục bộ của bạn. Điều này có thể được xử lý thông qua hợp nhất, nhưng trong trường hợp của bạn, có lẽ bạn đang tìm kiếm rebase, tức là thêm cam kết của bạn lên đầu. Bạn có thể làm điều này với

git rebase hoặc là git pull --rebase

Đây là một bài viết tốt giải thích sự khác biệt giữa git pull& git pull --rebase.

https://www.derekgourlay.com/blog/git-when-to-merge-vs-when-to-rebase/


0

Cách thêm một tin nhắn trong thiết bị đầu cuối studio android với sự hợp nhất của bạn. Đây là dành cho người dùng mac.

  • Bước một - Nhấn "i"
  • Bước hai - Nhập tin nhắn của bạn sau "#"
  • Bước ba- Nhấn "esc"
  • Bước bốn - ở dưới cùng viết ": wq"
  • Bước năm- Bấm "Enter"

Bạn đã hoàn tất việc hợp nhất của mình. Sau đó, bạn có thể tiếp tục kéo về địa phương của mình sau hoặc tạo một chi nhánh mới.


0

Đây không phải là thông báo lỗi Git, đó là trình soạn thảo git sử dụng trình chỉnh sửa mặc định của bạn.

Để giải quyết điều này:

  1. báo chí
  2. viết tin nhắn hợp nhất của bạn
  3. báo chí esc esc
  4. viết bài: wq
  5. và nhấn enter

Giải trình

Cách bạn nhớ điều này là, đó là cách dành cho những người khác, đó là lối thoát khi chèn, và:


0

Đây không phải là một lỗi. bạn phải thêm một massege cho sự hợp nhất này

để giải quyết điều này:

  1. nhấn "i" để chèn massege của bạn
  2. viết massege của bạn
  3. nhấn "thoát"
  4. viết ": wq" (viết và thoát để lưu massege và thoát)
  5. nhấn Enter"

-1

Tôi tìm thấy lỗi vì tôi chưa quen với git, bạn phải kiểm tra xem bạn đã nhập đúng cú pháp chưa

tôi đã phạm sai lầm và viết git commit

và có cùng một lỗi

sử dụng git commit -m 'some comment'

và bạn sẽ không nhìn thấy trang với

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.