Sau khi tôi đã thực hiện hợp nhất với nhánh chính của tôi từ một nhánh làm việc với git, đôi khi tôi muốn tìm để tìm commit cuối cùng trên master trước khi hợp nhất xảy ra. Làm thế nào để tôi làm điều này?Làm thế nào để tìm git cam kết cuối cùng trước khi hợp nhất
Trả lời
Một cách nhanh chóng để làm điều này là để gõ
git log --pretty=format:'%h : %s' --graph
sau đó chỉ cần làm theo xuống đồ thị ở phía bên tay phải cho đến khi bạn tìm thấy những điểm hợp nhất. Bạn cũng có thể làm
git log --pretty=format:'%h : %s' --graph > temp.txt
trong đó đặt đầu ra vào một tập tin, temp.txt
, mà bạn có thể mở trong trình soạn thảo của bạn và sử dụng các công cụ tìm kiếm để tìm kiếm văn bản như hợp nhất.
Cách tiếp cận này rất hữu ích để trả lời rất nhiều câu hỏi khác về dòng dõi của mới nhất của bạn cam kết như vậy đã đưa
alias git_graph="git log --pretty=format:'%h : %s' --graph"
trong tập tin .bash_profile
của tôi vì vậy tôi chỉ có thể sử dụng `` `git_log`` để xem thông tin này .
tại sao không phải 'git log -1'? – mallaudin
@mallaudin: Tôi tin rằng Obromios đang đề cập đến một tình huống trong đó hợp nhất là một vài hoặc thậm chí nhiều commit * đằng sau * đầu của 'master'.Tức là, 'git log -1' sẽ chỉ hiển thị một cam kết không hợp nhất. – torek
Vâng. Đung. Tôi nghĩ như bây giờ. – mallaudin
git log -1
Cũng tham khảo git log --help
hoặc https://git-scm.com/docs/git-log
Cách nhanh chóng để xác định cam kết sau khi hợp nhất đã xảy ra là sử dụng reflog.
Giả sử rằng hoạt động Đã xảy ra cuối cùng là một hợp nhất, sau đó:
git log [email protected]{1} -1
[email protected]{1}
đề cập đến các HEAD trước trước khi phẫu thuật cuối cùng, vì vậy bạn có thể giải quyết nó bằng cách sử log và reflog.
git log
sẽ hiển thị cho bạn chuỗi các cam kết trong nhánh hiện tại, vì vậy sau khi hợp nhất, nó luôn là cam kết hợp nhất và ngay trước khi cam kết từ nhánh đã hợp nhất. git reflog
hiển thị chuỗi các hoạt động trong kho lưu trữ của bạn (ví dụ: hợp nhất, rebase). Như được giải thích trong tài liệu:
Nhật ký tham chiếu hoặc "reflog", ghi lại khi các mẹo của chi nhánh và tài liệu tham khảo khác được cập nhật trong kho lưu trữ cục bộ. Reflogs rất hữu ích trong các lệnh Git khác nhau, để xác định giá trị cũ của một tham chiếu.
Khi tôi thử điều này, nó đã đưa ra cam kết cuối cùng trên nhánh đã được hợp nhất, không phải lần commit cuối cùng trên master trước khi nhánh được sáp nhập. – Obromios
@Obromios, những gì git reflog --oneline hiển thị? những gì hoạt động trong danh sách? Bạn nên chọn tiếp theo trước khi hợp nhất (ví dụ: nếu HEAD @ {0} - hợp nhất, sau đó HEAD @ {1}), tôi nghĩ hợp nhất không phải là hoạt động cuối cùng, – 2oppin
Nếu bạn đã sáp nhập branch
vào master
, đây là một cách để tìm ra hợp nhất cam kết:
# With the ancestry-path option, 'git rev-list branch..master' (or git log)
# will only list commits which are parents of 'master'
# *and* children of 'branch'
#
# If 'branch' was merged into 'master', the last commit in this list
# is the merge commit :
$ git rev-list --ancestry-path branch..master | tail -1
Tình trạng của master
trước khi hợp nhất là này của cam cha mẹ đầu tiên:
$ h=`git rev-list --ancestry-path branch..master | tail -1`
$ git log $h^
Tôi đã kiểm tra điều này và nó hoạt động, cảm ơn bạn. Tuy nhiên tôi sẽ chấp nhận câu trả lời của tôi, stackoverflow.com/a/41628915/1299362, vì nó thường hữu ích hơn. Tôi có thể thấy bản thân mình sử dụng câu trả lời của bạn nếu hợp nhất là một chặng đường dài, dài. – Obromios
- 1. Cách tìm cam kết hợp nhất trước đó
- 2. Rollback để git cam kết cuối cùng
- 3. Làm thế nào để hoàn tác cuối cùng cam kết
- 4. Git tìm hiểu cam kết cuối cùng tôi đã đẩy
- 5. Hợp nhất Git cam kết
- 6. Làm thế nào để "mở lại" cam kết git cuối cùng?
- 7. Làm cách nào để tìm lần kết hợp cuối cùng trong git?
- 8. 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?
- 9. Git rebase tương tác n cuối cùng cam kết
- 10. diff git duy nhất để hợp nhất cam kết
- 11. Git: Làm thế nào để đè bẹp các cam kết có hợp nhất-cam kết ở giữa?
- 12. Biết mã GIT trước khi cam kết?
- 13. Git Cam kết sau khi hợp nhất mở VIM
- 14. git push: Đẩy tất cả các cam kết ngoại trừ số cam kết cuối cùng
- 15. Giữ lịch sử cam kết sau khi 'hợp nhất git'
- 16. Làm cách nào để cho phép git merge cam kết làm chủ nhưng ngăn các cam kết không hợp nhất?
- 17. Làm cách nào để có được ngày cam kết cuối cùng từ kho lưu trữ git?
- 18. Sửa đổi thông điệp Git cam kết trước khi hợp nhất
- 19. Cách hoàn tác cam kết cuối cùng trong git
- 20. Định dạng mã trước khi cam kết GIT
- 21. Xóa cam kết hợp nhất trong Git
- 22. Làm cách nào để tìm thấy cam kết git gần đây nhất đã sửa đổi tệp?
- 23. Làm thế nào để xóa cam kết n cuối cùng trên Github và cục bộ?
- 24. làm thế nào để hoàn tác git add trước khi cam kết
- 25. Làm thế nào để có được ngày cam kết cuối cùng cho một loạt các tập tin trong Git?
- 26. Khôi phục cam kết git trước đó?
- 27. git: Hiển thị thông điệp cuối cùng cam kết trong cam kết mẫu
- 28. Làm thế nào để tránh hợp nhất các cam kết từ Git pull khi đẩy đến xa
- 29. Git reverse cam kết hợp nhất được đẩy trong SourceTree
- 30. git rebase một cam kết duy nhất
Bạn có thể thử 'git log -1', nó sẽ cung cấp chi tiết về lần commit cuối cùng của nhánh đã chọn. Tương tự, 'git log -2' sẽ cung cấp chi tiết về 2 lần commit cuối cùng. – Abhi
Ngoài ra hãy thử sử dụng gitk để trực quan hóa cấu trúc và kiểm tra bất kỳ tập lệnh nào, chỉ trong trường hợp chúng không có được cơ sở hợp nhất (điểm ngã ba). –