2011-10-25 31 views
11

Tôi đang sử dụng gerrit. Tôi đã sử dụng lệnh sauGerrit tạo lại các thay đổi-id

$ cd .git/hooks 
$ scp -P 29418 [email protected]:hooks/commit-msg . 
$ cd ../.. 

Điều này thêm id thay đổi vào thư cam kết của tôi, tuy nhiên, nếu tôi sửa đổi cam kết, nó sẽ tạo một id thay đổi MỚI. Vì vậy, khi tôi quay trở lại để gerrit nó không thêm các bản vá thiết lập, nó tạo ra một mục đánh giá hoàn toàn mới.

Có đề xuất nào không?

Tìm thấy câu trả lời, nhưng lưu lượng truy cập ngăn xếp sẽ không cho phép tôi trả lời câu hỏi của riêng mình.

Vì vậy, đây là lỗi hoàn toàn về phía tôi. Khi tôi đang cố gắng cam kết git commit --amend -m "Cam kết ban đầu"

Tôi đã gạch chân thông báo cam kết và xóa sạch ID thay đổi, do đó cung cấp cho tôi hình thức mới.

+0

Bạn có chắc chắn rằng ChangeId là ở đoạn cuối cùng của thông điệp cam kết? Hãy xem: [ChangeId] (http: //gerrit.chromium.org/gerrit/Documentation/user-changeid.html) – vquintans

+0

Mmmm, tôi vừa đọc xong câu hỏi của bạn :-) và có, -m là một lỗi điển hình. – vquintans

Trả lời

21

cam-msg việc móc như vậy:

  1. Kiểm tra nếu bạn có sự thay đổi-id trong thông điệp cam kết của bạn.
  2. Nếu không, hãy tạo một tài khoản.

Nếu bạn nhập git commit --amend và chỉnh sửa thư cam kết, bạn vẫn có id thay đổi cũ (tốt).

Nhưng nếu bạn nhập git commit --amend -m "...." bạn đã xóa id thay đổi, vì vậy gerrit sẽ tạo ID thay đổi mới.

Quy tắc ngón tay cái: Không sử dụng --amend -m với gerrit.

+0

Nếu bạn thực sự muốn, người ta có thể viết một móc chuẩn bị-cam-msg mà sẽ squirrel đi các changeid và sau đó đặt nó trở lại. – forivall

+2

Yikes! tìm thấy điều này quá muộn :) – mlvljr

+0

--ammend và -m làm việc ... bạn chỉ cần nhớ đến một 'git rebase --interactive' trước khi đẩy - để dọn dẹp mọi thứ. Và tất nhiên, bạn phải chắc chắn không thay đổi id thay đổi khi làm như vậy ;-) – GhostCat

1

Nếu git commit --amend hoặc git commit --amend -m "...." không giúp ích và gerrit vẫn than phiền về ID thay đổi bị thiếu. (Điều này xảy ra do sự cố mạng chủ yếu)

Đây là cách tôi đã nhận nó giải quyết (Made chắn rằng tôi đã móc cam-msg áp dụng, trên thư mục cha của thư mục check-out reference):

  1. Stash the Changes bằng cách sử dụng git stash.
  2. Đã sử dụng gitk & để khó thực hiện thay đổi đối với lần commit trước đó. enter image description here
  3. Sau đó kéo và rebase từ Repo git pull --rebase.
  4. Sau đó, áp dụng các thay đổi được lưu trữ bằng cách sử dụng git stash apply, reference. Giải quyết xung đột Sáp nhập nếu có bằng cách sử dụng git mergetool.
  5. Recommitted trong việc thay đổi một lần nữa sử dụng git commit hoặc git commit --amend, điều này tạo ra một sự thay đổi mới-Id
  6. Đẩy những thay đổi chi nhánh trên kho sử dụng git push ... lệnh.

Có câu hỏi tương tự xung quanh cũng for reference

Các vấn đề liên quan