Sử dụng dấu chấm than trong thông báo cam kết Git qua dòng lệnh


152

Làm cách nào để nhập dấu chấm than vào thông báo cam kết Git từ dòng lệnh?

Có thể thoát dấu chấm than bằng dấu gạch chéo ngược, nhưng sau đó dấu gạch chéo ngược cũng kết thúc trong thông báo cam kết.

Tôi muốn một cái gì đó như thế này:

git commit -am "Nailed it!"

6
Để được giải thích về lý do tại sao vấn đề này tồn tại ở vị trí đầu tiên: Askubfox.com/questions/434832/iêu
Mark Amery

Câu trả lời:


226

Sử dụng dấu ngoặc đơn thay vì dấu ngoặc kép

git commit -am 'Nailed it!'

Ngoài ra, nếu bạn cần sử dụng dấu ngoặc kép vì bất kỳ lý do gì nhưng vẫn muốn có nghĩa đen !thì hãy tắt mở rộng lịch sử ở đầu tập lệnh của bạn thông quaset +H


48
Hoặc chỉ cần trộn các trích dẫn của bạn:git commit -am "$FOO: Nailed it"'!'
Cascabel

4
Điều này không hiệu quả với tôi trong OS X, vì vậy tôi chỉ sử dụng git commit(không -m) để mở trình soạn thảo văn bản cho tin nhắn của mình.
Kevin C.

Trong OSX sử dụng git commit -m "This is the best code ever"!như được mô tả trong câu trả lời @Ryan H.
mljrg

42

Một cách khác để giải quyết đó là thêm một không gian sau ! giống:

git commit -am "Nailed it! "

Lưu ý không gian giữa ! và cuối cùng " .

(Không gian sẽ không được bao gồm trong thông báo cam kết - Git cắt khoảng trắng theo dõi từ tin nhắn cam kết tự động.)


3
Đây có vẻ là giải pháp đơn giản nhất đối với tôi và cho phép trích dẫn kép với phép nội suy thay đổi: git commit -m "$(sillyname) $(buzzphrase). $(superb)! ":)
Alex Hall

4

Không cần phải nhớ những gì trích dẫn hoặc thoát để sử dụng, thay vào đó

  1. Nhập lệnh của bạn (hoặc một phần của nó)
  2. Trong dòng lệnh của bạn, nhấn Ctr X E»sẽ mở" trình soạn thảo bên ngoài "của bạn.
  3. Chỉnh sửa lệnh của bạn và đóng trình soạn thảo của bạn.

Lệnh này sẽ được thực thi và bất kỳ ký tự đặc biệt nào sẽ hiển thị chính xác trong thông báo cam kết Git!

(NB sử dụng nhiều cách khác: nhập các lệnh phức tạp, thêm ngắt dòng trong thông điệp cam kết của bạn, v.v.)


4

Nếu bạn cần sử dụng dấu ngoặc kép và !là ký tự cuối cùng trong tin nhắn, chỉ cần giữ !bên ngoài dấu ngoặc kép , vì chúng tôi chỉ sử dụng dấu ngoặc kép để khoảng trắng được bao gồm trong tin nhắn.

git commit -m "Reverting last commit because I don't like it"!

Nếu bạn cần bao gồm !chuỗi giữa, bạn có thể sử dụng dấu ngoặc đơn nhưng nếu bạn cần sử dụng dấu ngoặc đơn theo nghĩa đen, bạn sẽ cần đóng trích dẫn của mình, sau đó đặt 'bên ngoài chuỗi bằng cách thoát khỏi chuỗi. Vì vậy, giả sử thông điệp của bạn là I don't like it! Reverting again!, điều này có thể được soạn bằng 'I don'+ \'+'t like it! Reverting again!'

git commit -m 'I don'\''t like it! Reverting again!'

Bất cứ điều gì phức tạp hơn thế này, có lẽ bạn nên làm tốt hơn git commitvà để git gọi trình soạn thảo văn bản mặc định của bạn :)


1

Bạn cũng có thể gõ:

git commit -am "Nailed it
!
"

Vì vậy, chỉ cần nhấn enter và đặt dấu chấm than trên một dòng mới, sau đó tắt thông báo cam kết. Tìm thấy một trong những tình cờ một ngày.


6
Điều này sẽ chèn dòng mới theo nghĩa đen trước dấu chấm than vào thông điệp cam kết, điều này thật xấu xí. -1.
Đánh dấu Amery

-3

Hừm. Thoát khỏi nó bằng một dấu gạch chéo không hiển thị trong thông báo cam kết cho tôi.

git commit -m "Nailed it\!"
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.