Tôi đã tự hỏi làm thế nào để ký (-s
) tắt cam kết trước đó mà tôi đã thực hiện trong quá khứ trong git?Git ký tắt cam kết trước đó?
Trả lời
Để signoff cam kết trước đó, sử dụng sửa đổi tùy chọn:
git commit --amend --signoff
Xem xét các lần đăng xuất sửa đổi thông báo cam kết, sử dụng git filter-branch
để đạt được điều đó.
git filter-branch --msg-filter \
"cat - && echo && echo 'Signed-off-by: Dan McGee <[email protected]>'" \
HEAD
(ví dụ từ "git filter-branch
magic")
Hoặc, sau Curt J. Sampson 's suggestion, sử dụng git interpret-trailers
:
git config trailer.sign.key "Signed-off-by"
git filter-branch --msg-filter \
"cat - && echo && git interpret-trailers --trailer 'sign: 'Signed-off-by: Dan McGee <[email protected]>'" \
HEAD
caveat: điều này sẽ thay đổi SHA1 các cam kết hiện tại của bạn, và bạn có thể buộc phải đẩy kết quả, điều này có thể có vấn đề nếu các cam kết của bạn đã được những người khác chia sẻ.
Cân nhắc sử dụng 'git interpreted-trailers' với' git filter-branch --msg-filter' thay vì thêm 'Signed-off-by:' hoặc trailers khác bằng tay. Điều này sẽ cho phép bạn, ví dụ: tránh sao chép đoạn giới thiệu. –
@ CurtJ.Sampson Yes! Cảm ơn bạn. Tôi đã ghi lại tài liệu đó ngày hôm qua: https://stackoverflow.com/a/41361273/6309. – VonC
@ CurtJ.Sampson Tôi đã sửa đổi câu trả lời cho phù hợp. – VonC
Hãy thử này để làm lại cam kết cũ với một -S
:
git filter-branch -f --commit-filter 'git commit-tree -S "[email protected]"' HEAD
Sau đó, bạn phải git push -f
. Nhưng hãy cẩn thận, các id cam kết sẽ thay đổi và những người khác sẽ không đồng bộ.
Điều này sẽ ký tắt TẤT CẢ các cam kết, phải không? Làm cách nào để tôi chỉ đăng xuất các lần commit X cuối cùng? –
@ ÁkosVandra nếu bạn vẫn đang tìm kiếm câu trả lời: '' git filter-branch -f --commit-filter 'git commit-tree -S "$ @"' HEAD ~ X..HEAD'', trong đó X là số lần commit X cuối cùng. ví dụ. cho 2 lần commit cuối cùng: '' git filter-branch -f --commit-filter 'git commit-tree -S "$ @"' HEAD ~ 2..HEAD'' –
Đối với tôi chỉ là dấu hiệu ghi đè, đã không thực sự xác minh cam kết của tôi trên github.
Giải pháp đó là làm việc đối với tôi là sẽ trở lại, và sau đó ký vào từng tờ cam kết với -S
git commit --amend -S
Ngoài ra nếu bạn kiểm tra xem bạn cam kết thực sự là ký và email/tên của bạn chỉ đơn giản là không nối, sử dụng lệnh này
git show HEAD --show-signature
Mẹo bổ sung: Nếu bạn đã sửa đổi cam kết của bạn, bạn có thể muốn tên thật của bạn trong họ (xem sử dụng git log
). Bạn có thể đang sử dụng tên xử lý github của bạn, điều này không cần thiết. Chỉ email chính xác là cần thiết và trong trường tên người dùng, bạn nên sử dụng tên đầy đủ của bạn và github sẽ theo dõi nó chính xác với tên xử lý github của bạn. Vì vậy, để sửa tên người dùng của bạn và đăng cuối cùng cam kết sử dụng:
git commit --amend --author="FULL NAME <email>" -S
và cũng đặt tên đầy đủ tên người dùng trong tương lai bằng cách
git config --global user.name "FULL NAME"
Tôi đã có một vấn đề tương tự. Ở đây, nhờ Robin Johnson từ Gentoo Linux là một thủ thuật để thêm chữ ký cho tất cả các cam kết unpushed trước đây của tôi:
$ git pull && git rebase --gpg-sign --force-rebase origin/master && git push --signed
Already up-to-date.
Current branch master is up to date, rebase forced.
First, rewinding head to replay your work on top of it...
Applying: sci-biology/KING: new package
Applying: dev-lang/yaggo: version bump, fix install procedure
Applying: sci-libs/htslib: version bump
Applying: sci-biology/bcftools: version bump
Applying: sci-biology/samtools: version bump
Applying: sci-biology/libBigWig: new release with io.h renamed to bigWigIO.h
Applying: sci-biology/MaSuRCA: add more URLs to HOMEPAGE
Applying: sci-biology/SPAdes: update comments on bundled dev-libs/boost
Applying: sci-biology/khmer: added a comment how to proceed with src_compile()
Applying: sci-biology/picard: version bump
Applying: sci-biology/ruffus: pint EGIT_REPO_URI to the archive URL of code.google.com
Applying: sci-biology/vcftools: the 0.1.15_pre release was just renamed to 0.1.15 by upstream
Applying: sci-biology/nanopolish: new package
Applying: sci-biology/libBigWig: version bump
Counting objects: 75, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (75/75), done.
Writing objects: 100% (75/75), 14.51 KiB | 0 bytes/s, done.
Total 75 (delta 55), reused 0 (delta 0)
remote: To github.com:gentoo/sci.git
remote: 29c5e3f5d..b37457700 master -> master
To git+ssh://git.gentoo.org/proj/sci.git
29c5e3f5d..b37457700 master -> master
$
- 1. Khôi phục cam kết git trước đó?
- 2. git: squash/fixup trước đó cam kết
- 3. Sửa đổi một cam kết đó không phải là trước đó cam kết
- 4. Biết mã GIT trước khi cam kết?
- 5. Cách tìm cam kết hợp nhất trước đó
- 6. Đề cập đến cam kết trước đó/tiếp theo trong git?
- 7. Hoàn nguyên về cam kết trước đó trong Git cho studio trực quan 2012
- 8. Có cách nào để sử dụng lại nhận xét trước đó về cam kết git không?
- 9. Xấu cam kết Git
- 10. Xóa cam kết trước cam kết cụ thể
- 11. Tạo nhật ký PDF từ git cam kết
- 12. Hoàn toàn ghi đè một cam kết git trước đây
- 13. Hợp nhất Git cam kết
- 14. TortoiseSVN cam kết phím tắt
- 15. git look cam kết đăng nhập cho cam kết id
- 16. git add/rm (cam kết)
- 17. Git cam kết từ python
- 18. Xóa git cũ cam kết
- 19. Git bảo tôi kéo, sau đó cam kết, sau đó kéo?
- 20. Git: di chuyển cam kết "lên trên"
- 21. Xem một Git cụ thể cam kết
- 22. Làm thế nào để quay trở lại cam kết trước đó mà không làm mất cam kết cuối cùng trong Git?
- 23. Git - Màu sắc có ý nghĩa gì đó trong vi khi tôi cam kết không?
- 24. Git: kiểm tra một tập tin từ một cam kết trước đó và sửa đổi nó thành HEAD
- 25. Làm thế nào để git cam kết --amend một cam kết đó là cơ sở của một chi nhánh
- 26. Thực hiện cam kết tự động git
- 27. Viết GIT tiền cam kết trong java?
- 28. vô tình đã cam kết trong git
- 29. Dừng một git cam kết bởi một tác giả cụ thể bằng cách sử dụng móc trước cam kết
- 30. Làm cách nào để chỉnh sửa các cam kết git trước đây để xóa mật khẩu của tôi khỏi nhật ký cam kết?
séc http://schacon.github.com/git/git-commit.html –
thể trùng lặp của http://stackoverflow.com/questions/1962094/what-is-the-sign-off-feature-in-git-for –
Tôi tự hỏi nếu nó không phải là mỉa mai không an toàn để làm điều này. Bằng cách ký bạn nhiều hơn hoặc ít hơn nói "Tôi yêu cầu các cam kết trước đó là an toàn".Nhưng nếu bạn đã nhân bản chúng, vv, và bạn không thực hiện một kiểm tra thực tế trên các, bạn do đó nhà nước một cái gì đó bạn không thể kiểm tra. Hãy tưởng tượng một hacker bằng cách nào đó thao tác một cam kết. Tuy nhiên, việc ký kết thực sự ngăn không cho người khác can thiệp vào cam kết trong giai đoạn sau. Nhưng có lẽ bạn nên thêm điều này vào tin nhắn? –