Xem các cam kết Git không được đánh dấu


1752

Làm cách nào tôi có thể xem bất kỳ cam kết cục bộ nào tôi đã thực hiện, chưa được đẩy vào kho lưu trữ từ xa? Thỉnh thoảng, git statussẽ in ra rằng chi nhánh của tôi là X cam kết trước origin/master, nhưng không phải lúc nào cũng vậy.

Đây có phải là lỗi với cài đặt Git của tôi không, hay tôi thiếu thứ gì?


18
Bắt đầu với Git 2.5+ (quý 2 năm 2015), câu trả lời thực tế sẽ là git log @{push}... Xem lối tắt mới đó @{push}(tham khảo nhánh theo dõi từ xa mà bạn đang đẩy tới) trong câu trả lời của tôi dưới đây
VonC

59
@Torek - một nhiệm vụ đơn giản khác gây khó khăn cho Git. Mỗi khi một câu hỏi Git xuất hiện với hàng trăm hoặc hàng ngàn lượt upvote và hàng triệu lượt xem, thì ai đó nên nghĩ: Wow, chúng tôi thực sự làm hỏng quy trình làm việc đó. Than ôi, nhà phát triển Git đã bỏ qua bước phản hồi trong vòng đời phát triển, vì vậy phản hồi không được kết hợp. Thay vào đó, họ cứ lặp đi lặp lại những sai lầm tương tự. Đối với câu hỏi này, git status --allnên đã xuất hiện vào năm 2010; hoặc git status -vthực sự nên cung cấp đầu ra dài dòng bao gồm thông tin bổ sung.
jww

4
Tôi không đồng ý rằng "git status -v" nên cung cấp thông tin này vì nó nhằm đưa ra trạng thái về cây làm việc, vì nó chỉ liên quan đến nhánh đã kiểm tra. Tuy nhiên, hãy xem câu trả lời dưới đây về "git chi nhánh -v", mà tôi tin rằng đó là câu trả lời được chấp nhận
JoelFan

13
Câu hỏi StackOverflow cụ thể này có số lượng câu trả lời đúng cao nhất mà tất cả các công việc chưa có ý nghĩa gì.
Pete Alvin

@ josh-buhler Xin lỗi, tôi đã vô tình bỏ phiếu ... trong khi tôi cố gắng nhấp vào 'SAO'. Đã cố gắng để bỏ phiếu, nhưng, không hoạt động!
RafiAlhamd

Câu trả lời:


1828
git log origin/master..HEAD

Bạn cũng có thể xem diff bằng cú pháp tương tự

git diff origin/master..HEAD

3
Điều này đã làm điều đó cho tôi - vì một số lý do git log origin .. bởi chính nó đã gây ra lỗi. Có vẻ như tôi cũng gặp vấn đề với cách cấu hình chi nhánh địa phương của mình - một khi tôi đã thực hiện các thay đổi tôi tìm thấy ở đây: wincent.com/blog/ Lỗi , vấn đề đã được giải quyết và tôi có thể sử dụng lại trạng thái git để xem những gì tôi muốn .
Josh Buhler

6
Vô giá: Tôi đã làm git config --global alias.ahead "log origin/master..HEAD --oneline"rất nhiều để tôi có thể nhanh chóng tìm ra mình đang ở đâu. Thậm chí nhiều kẹo hơn:for i in *; do echo $i && git ahead 2>/dev/null; done
Jamie

15
git log --stat origin/master..HEADcho thêm một chút tuyệt vời
Cory Danielson

141
Đây không phải là giải pháp tốt nhất. Nguồn gốc / chủ có thể không phải luôn luôn là nhánh thượng nguồn. Một giải pháp tốt hơn là sử dụng @ {u} thay vì "origin / master" để chỉ ra nhánh ngược dòng. Vì HEAD được ngụ ý theo mặc định, người ta cũng có thể bỏ qua nó. Xem câu trả lời của @Ben Ling. Thay đổi đi: git log @ {u} .. Thay đổi đến: git log .. @ {u}
Bệnh dịch hạch

12
@Nocturne Tôi chỉ muốn chỉ ra rằng khi câu trả lời này được đăng, @{u}cú pháp chưa có sẵn, nó chỉ có sẵn vào ngày 12 tháng 2 năm 2010 . Ngoài ra, @{u}sẽ không hoạt động nếu chi nhánh địa phương không được cấu hình với một thượng nguồn. Cuối cùng, @{u}hiện tại không có hỗ trợ hoàn thành tab, <remote>/<branch>với việc hoàn thành tab vẫn là một trong những cách nhanh nhất để có được thông tin này và nó sẽ hoạt động cho dù ngược dòng có được cấu hình hay không.

703

Nếu bạn muốn xem tất cả các cam kết trên tất cả các chi nhánh chưa được đẩy, bạn có thể đang tìm kiếm một cái gì đó như thế này:

git log --branches --not --remotes

Và nếu bạn chỉ muốn xem cam kết gần đây nhất trên mỗi chi nhánh và tên chi nhánh, thì đây:

git log --branches --not --remotes --simplify-by-decoration --decorate --oneline

8
Điều này thật tuyệt. Trong một kịch bản liên quan, tôi có hai nhánh cục bộ với hai nhánh ngược dòng và một nhánh cục bộ được sáp nhập vào nhánh kia. Tôi muốn biết những cam kết nào là an toàn để nổi loạn, nhưng bình thường git log master..HEADsẽ không hoạt động vì có nhiều luồng ngược dòng. Bài đăng này đã khiến tôi git log MyBranch --not --remoteshiển thị tất cả các cam kết chưa được đẩy lên bất kỳ thượng nguồn nào trong một nhánh.
pavon

Điều này rất hữu ích, tôi đã đặt bí danh cho nó trong cấu hình zsh của mình. Cảm ơn.
Scotty C.

Tôi hiểu rằng lệnh thứ hai của bạn cũng liệt kê các cam kết chưa được đẩy, chỉ có nó chỉ hiển thị một lệnh trên mỗi nhánh.
Stephane

--decoratecho thấy các chi nhánh là tốt. --graphlàm cho nó rõ ràng hơn
Ray

Lưu ý rằng các danh sách lệnh này chỉ cam kết chưa được đẩy trong bất kỳ nhánh nào . Ví dụ: giả sử bạn có chi nhánh phát triển với chi nhánh feat-NewThing. Bạn thay đổi cục bộ thành feat-NewThing. (Nhật ký có thay đổi.) Sau đó, bạn đẩy feat-newThing đến chi nhánh từ xa. (Nhật ký trống). Bạn hợp nhất feat-newThing để phát triển cục bộ. Giả sử chuyển tiếp nhanh, nhật ký vẫn không có thay đổi.
Patrick W

325

Bạn có thể hiển thị tất cả các cam kết mà bạn có tại địa phương nhưng không ngược dòng với

git log @{u}..

@{u}hoặc @{upstream}có nghĩa là nhánh ngược dòng của nhánh hiện tại (xem git rev-parse --helphoặc git help revisionsđể biết chi tiết).


17
Trên Windows, tôi cần kèm theo đối số cuối cùng trong dấu ngoặc kép, như: git log "@ {u} .."
Jon Schneider

git log @{u}.. -p Một trong những tùy chọn hữu ích nhất là -p , cho thấy sự khác biệt được giới thiệu trong mỗi xác nhận.
mQuiroz

Có thể tốt hơn git log @ {đẩy} .., xem câu trả lời khác .
Hans-Peter Störr

183

Điều này làm việc cho tôi:

git cherry -v 

Như được chỉ ra tại Git: Xem tất cả các cam kết hoặc cam kết không được đánh dấu không thuộc nhánh khác .


21
Tôi nghĩ rằng đây nên là câu trả lời chính vì câu hỏi này đưa ra danh sách các cam kết ngắn gọn hơn thay vì khó đọc, khác biệt trong tất cả các tệp !!
ViFI

1
git-cherry - "Tìm các cam kết chưa được áp dụng cho thượng nguồn", dường như cung cấp những gì OP yêu cầu, nhưng chỉ với chủ đề cam kết chứ không phải toàn bộ thông điệp cam kết.
Eido95

2
Điều đáng chú ý là điều này sẽ chỉ cho bạn biết nếu có các cam kết chưa được xử lý trên chi nhánh mà bạn hiện đã kiểm tra. Nó sẽ không cho bạn biết nếu bạn có một chi nhánh địa phương (hiện chưa được kiểm tra) với các cam kết chưa được xử lý.
Dave Yarwood

66

Bạn có thể làm điều này với git log:

git log origin..

Giả sử đó originlà tên của thượng nguồn của bạn, để lại bất kỳ tên sửa đổi nào sau khi ..ngụ ý HEAD, trong đó liệt kê các cam kết mới chưa được đẩy.


1
Bất cứ khi nào tôi thấy câu trả lời có git logvà "2-chấm-không-3", nó luôn nhắc tôi về stackoverflow.com/questions/53569/iêu ;)
VonC

1
Chỉ cần thêm nó vào câu trả lời - nếu không có thiết lập ngược dòng thì lệnh này dẫn đến việc không có thiết lập ngược dòng nào được thiết lập. Chạy git branch --set-upstream master origin/<branch>để thiết lập ngược dòng nếu bạn có xu hướng sử dụng lệnh này để xem các cam kết được dàn dựng.
async chờ

Điều này sẽ so sánh với chi nhánh mặc định trong nguồn gốc, không phải chi nhánh từ xa hiện tại.
chào mừng

43

Tất cả các câu trả lời khác nói về "ngược dòng" (nhánh bạn kéo từ).
Nhưng một nhánh địa phương có thể đẩy đến một nhánh khác với nhánh mà nó kéo ra.

mastercó thể không đẩy đến nhánh theo dõi từ xa " origin/master".
Các thượng nguồn chi nhánh cho mastercó thể origin/master, nhưng nó có thể đẩy đến chi nhánh theo dõi từ xa origin/xxxhoặc thậm chí anotherUpstreamRepo/yyy.
Chúng được đặt branch.*.pushremotecho nhánh hiện tại cùng với global remote.pushDefaultgiá trị.

Đó là rằng chi nhánh từ xa theo dõi mà đếm khi tìm kiếm các cam kết unpushed: một trong những bài hát mà các branch at the remotenơi chi nhánh địa phương sẽ được đẩy lên.
branch at the remotethể, một lần nữa, origin/xxxhoặc thậm chíanotherUpstreamRepo/yyy .

Git 2.5+ (Q2 2015) giới thiệu một lối tắt mới cho điều đó: <branch>@{push}

Xem cam kết 29bc885 , cam kết 3dbe9db , cam kết adfe5d0 , cam kết 48c5847 , cam kết a1ad0eb , cam kết e291c75 , cam kết 979cb24 , cam kết 1ca41a1 , cam kết 3a429d0 , cam kết a9f9f8c , cam kết 8770e6f , cam kết da66b27 , cam kết f052154 , cam kết 9e3751d , cam kết ee2499f [tất cả từ ngày 21 tháng 5 2015] và cam kết e41bf35 [01 tháng 5 năm 2015] bởi Jeff King ( peff) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster- trongcam kết c4a8354 , ngày 5 tháng 6 năm 2015)

Cam kết adfe5d0 giải thích:

sha1_name: thực hiện tốc @{push}

Trong quy trình làm việc hình tam giác, mỗi chi nhánh có thể có hai điểm quan tâm riêng biệt: điểm @{upstream}mà bạn thường kéo từ và đích đến mà bạn thường đẩy tới. Không có một tốc ký cho cái sau, nhưng nó hữu ích để có.

Chẳng hạn, bạn có thể muốn biết những cam kết nào bạn chưa đẩy :

git log @{push}..

Hoặc như một ví dụ phức tạp hơn, hãy tưởng tượng rằng bạn thường lấy các thay đổi từ origin/master(mà bạn đặt là của bạn @{upstream}) và đẩy các thay đổi sang ngã ba cá nhân của riêng bạn (ví dụ: như myfork/topic).
Bạn có thể đẩy tới ngã ba của mình từ nhiều máy, yêu cầu bạn tích hợp các thay đổi từ đích đẩy, thay vì ngược dòng .
Với bản vá này, bạn chỉ có thể làm:

git rebase @{push}

thay vì gõ tên đầy đủ.

Cam kết 29bc885 cho biết thêm:

for-each-ref: chấp nhận %(push)định dạng ""

Giống như chúng tôi có " %(upstream)" để báo cáo " @{upstream}" cho mỗi lần giới thiệu, bản vá này thêm " %(push)" để khớp " @{push}".
Nó hỗ trợ các công cụ sửa đổi định dạng theo dõi tương tự như ngược dòng (vì bạn có thể muốn biết, ví dụ, nhánh nào có cam kết đẩy ).

Nếu bạn muốn xem có bao nhiêu cam kết chi nhánh địa phương của bạn ở phía trước / phía sau so với chi nhánh bạn đang đẩy tới:

git for-each-ref --format="%(refname:short) %(push:track)" refs/heads

42

Bí danh git tiện dụng để tìm kiếm các cam kết chưa được đánh dấu trong chi nhánh hiện tại :

alias unpushed = !GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline

Điều này về cơ bản làm gì:

git log origin/branch..branch

nhưng cũng xác định tên chi nhánh hiện tại.


8
Điều này thật tuyệt! Đối với những người không quen thuộc với bí danh, chỉ cần thêm chúng vào tệp ~ / .gitconfig trong phần [bí danh].
Gary Haran

1
Sao chép / dán trong bash không hoạt động, nhưng tập lệnh khá hữu ích và dễ hiểu
greuze

Đây không phải là bí danh bash, như @GaryHaran chỉ ra. Cũng có một lệnh git để thêm bí danh: git alias <alias-name> <command>Trong trường hợp này, lệnh nên được bao quanh bởi các dấu ngoặc đơn, để thoát các ký tự đặc biệt khỏi trình bao.
Dag Høidahl

4
Đó sẽ là:git config --global alias.unpushed '!GIT_CURRENT_BRANCH=$(git name-rev --name-only HEAD) && git log origin/$GIT_CURRENT_BRANCH..$GIT_CURRENT_BRANCH --oneline'
Ricky Levi

Điều đó về cơ bản giống như git log @ {u} .., mặc dù vậy - hãy xem câu trả lời khác .
Hans-Peter Störr

35

Bạn có thể thử....

gitk

Tôi biết đó không phải là một tùy chọn dòng lệnh thuần túy nhưng nếu bạn đã cài đặt nó và trên một hệ thống GUI thì đó là một cách tuyệt vời để xem chính xác những gì bạn đang tìm kiếm cộng thêm rất nhiều.

(Tôi thực sự ngạc nhiên khi không ai nhắc đến nó cho đến nay.)


3
gitk --allđể xem tất cả các chi nhánh.
Ray

3
tiglà sự thay thế của ncurses.
Ray

@ justin-ohms gitkthật tuyệt vời! Không bao giờ biết điều này tồn tại! Tiện dụng để duyệt qua các thay đổi trong một giao diện người dùng đẹp.
RafiAlhamd

@ray tighữu ích nhất trong tình huống 'chỉ thiết bị đầu cuối' - nơi bạn không có quyền truy cập GUI trên máy tính để bàn. Tìm hiểu về nó lần đầu tiên! LÃI SUẤT: tiglà sự đổi mới của git!
RafiAlhamd

30

git branch -v sẽ hiển thị, cho mỗi chi nhánh địa phương, cho dù đó là "phía trước" hay không.


2
Có, trong trường hợp có một cam kết chưa được đánh dấu trên nhánh devel, dòng tương ứng sẽ là * devel 8a12fc0 [ahead 1] commit msg( *sẽ chỉ trên dòng tương ứng với nhánh đã kiểm tra). ahead 1có nghĩa là "đi trước một cam kết", tức là có một cam kết không được đánh giá cao.
Aurelien

2
Phải không git branch -vv? Cf. docs: nếu được cung cấp hai lần, hãy in tên của nhánh ngược dòng (xem thêm git remote show <remote>).
Bẩn Henry

Đây không phải là về việc in tên của chi nhánh ngược dòng, mà chỉ là in behindvà / hoặc aheadcho từng chi nhánh địa phương, đủ để giải quyết vấn đề của OP (phát hiện các cam kết không được đánh dấu). git branch -vlà đủ cho điều đó, chỉ cần thử nghiệm lại với Git 2.16.2 :)
Aurelien

-Vv rất hữu ích vì với nó cho thấy sự khác biệt giữa các nhánh được cập nhật với điều khiển từ xa và các nhánh chưa được đẩy. (Chỉ với một -v, chúng hiển thị giống hệt trong màn hình.)
RM

30

Tôi đã có một cam kết được thực hiện trước đó, không bị đẩy đến bất kỳ chi nhánh nào, cũng không phải từ xa cũng không phải địa phương. Chỉ cần cam kết. Không có gì từ các câu trả lời khác làm việc cho tôi, nhưng với:

git reflog

Ở đó tôi tìm thấy cam kết của mình.


Như đã nêu trong liên kết này git-scm.com/docs/git-reflog , Nhật ký tham chiếu hoặc "reflogs", ghi lại khi các mẹo của chi nhánh và các tham chiếu khác được cập nhật trong kho lưu trữ cục bộ. Trong trường hợp của tôi, tôi đã nhân bản một repo, tạo một nhánh mới, xóa nhánh đó, tạo một nhánh mới, tạo một cam kết và thay đổi cam kết. Tất cả các bước này được gọi là HEAD @ {0}: commit (sửa đổi): .. HEAD @ {1}: commit: ... HEAD @ {2}: đã kiểm tra: chuyển từ ... sang ... HEAD @ { 3}: đã thanh toán: chuyển từ ... sang ... HEAD @ {4}: clone: ​​từ #s lỗi cho định dạng SO không cho phép đa tuyến trong các nhận xét rõ ràng
vận tốc

điều này bao gồm cả các cam kết gốc, giải pháp tốt nhất sẽ là sử dụng lệnh được cung cấp bởi @Plague Hammer ( stackoverflow.com/a/2016954/624048 )
Lincoln

20

Tôi sử dụng các bí danh sau để chỉ nhận danh sách các tệp (và trạng thái) đã được cam kết nhưng chưa được đẩy (đối với chi nhánh hiện tại)

git config --global alias.unpushed \
"diff origin/$(git name-rev --name-only HEAD)..HEAD --name-status"

sau đó chỉ cần làm:

git unpushed

có vẻ thú vị, nhưng $ (git name-rev - tên chỉ có tên) là "không xác định" trong trường hợp của tôi
vak

13

Tôi tin rằng cách điển hình nhất để làm điều này là chạy một cái gì đó như:

git cherry --abbrev=7 -v @{upstream}

Tuy nhiên, cá nhân tôi thích chạy hơn:

git log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..

trong đó hiển thị các xác nhận từ tất cả các nhánh không được hợp nhất ngược dòng, cộng với lần xác nhận cuối cùng ở thượng nguồn (hiển thị dưới dạng nút gốc cho tất cả các cam kết khác). Tôi sử dụng nó thường xuyên đến nỗi tôi đã tạo bí danh noupcho nó.

git config --global alias.noup \
'log --graph --decorate --pretty=oneline --abbrev-commit --all @{upstream}^..'

11

Tôi khuyên bạn nên xem tập lệnh https://github.com/badele/gitcheck , tôi đã mã hóa tập lệnh này để kiểm tra một lần tất cả các kho lưu trữ git của bạn và nó cho thấy ai chưa cam kết và ai chưa đẩy / kéo.

Đây là một kết quả mẫu nhập mô tả hình ảnh ở đây


1
Bạn có thể giải thích làm thế nào để plugin này hoạt động trên máy Windows không? Tôi đang cố gắng chạy pip, nhưng lệnh bị thiếu trong dòng lệnh. Tôi đã cài đặt Python, nhưng tôi không chắc là nó có đủ không.
Konrad Szałwiński

@ KonradSzałwiński Tôi chưa có máy windows, nhưng trong chủ đề này ( stackoverflow.com/questions/4750806/ chủ ), người dùng dường như trả lời câu hỏi của bạn :). Nhưng tôi đã không thử nghiệm trong các cửa sổ và tôi không chắc nó hoạt động được.
Bruno Adelé

@ KonradSzałwiński người đóng góp github ChristianTremblay đã thêm một cửa sổ hỗ trợ. Bây giờ các gitcheck làm việc trên các cửa sổ. Bạn có thể tải xuống trên github.com/badele/gitcheck
Bruno Adelé

Bây giờ, bạn cũng có thể sử dụng gitcheck trực tiếp từ thùng chứa docker (với các tệp của bạn trong máy chủ của bạn) Để biết thêm thông tin, hãy xem dự án gitchub github
Bruno Adelé

Cảm ơn đã đăng bài này, nó có vẻ thực sự hữu ích. Tôi đã thử cài đặt nhưng sau khi cài đặt, tôi không thể tìm thấy vị trí của tập lệnh để chạy nó. $ pip cài đặt git + git: //github.com/badele/gitcheck.git Thu thập git + git: //github.com/badele/gitcheck.git Nhân bản git: //github.com/badele/gitcheck.git cho c : \ users \ u6041501 \ appdata \ local \ temp \ pip-bxt472z_-build Cài đặt các gói đã thu thập: gitcheck Chạy setup.py cài đặt cho gitcheck: đã bắt đầu Chạy setup cài đặt cho gitcheck: đã hoàn thành với trạng thái 'xong' Đã cài đặt thành công gitcheck-0.3 .22
Lauren Fitch


9

Nó không phải là một lỗi. Những gì bạn có thể thấy là trạng thái git sau khi tự động hợp nhất thất bại trong đó các thay đổi từ xa được tìm nạp nhưng chưa được hợp nhất.

Để xem các cam kết giữa repo cục bộ và từ xa, hãy làm điều này:

git fetch

Điều này an toàn 100% và sẽ không giả lập bản sao làm việc của bạn. Nếu có thay đổi git statussẽ hiển thị X commits ahead of origin/master.

Bây giờ bạn có thể hiển thị nhật ký các cam kết ở xa nhưng không phải ở địa phương:

git log HEAD..origin

8

Điều này làm việc tốt hơn cho tôi:

git log --oneline @{upstream}..

hoặc là:

git log --oneline origin/(remotebranch)..

2
Đối với bất cứ ai khác tự hỏi, @{upstream}là nghĩa đen ( upstreamlà một từ ma thuật), trong khi remotebranchchỉ là tên của chi nhánh của bạn.
Steve Bennett

7

Có một công cụ có tên unpushed quét tất cả các repos Git, Mercurial và Subversion trong thư mục làm việc được chỉ định và hiển thị danh sách các tập tin ucommited và các cam kết không được đánh dấu. Cài đặt đơn giản trong Linux:

$ easy_install --user unpushed

hoặc là

$ sudo easy_install unpushed

để cài đặt toàn hệ thống.

Cách sử dụng cũng đơn giản:

$ unpushed ~/workspace
* /home/nailgun/workspace/unpushed uncommitted (Git)
* /home/nailgun/workspace/unpushed:master unpushed (Git)
* /home/nailgun/workspace/python:new-syntax unpushed (Git)

Xem unpushed --helphoặc mô tả chính thức để biết thêm thông tin. Nó cũng có một kịch bản cronjob unpushed-notifyđể thông báo trên màn hình về những thay đổi không được cam kết và không được xem xét.


5

Để liệt kê tất cả các cam kết chưa được đánh dấu trong tất cả các nhánh một cách dễ dàng, bạn có thể sử dụng lệnh này:

 git log --branches  @{u}..

4

Tương tự: Để xem các nhánh không được trộn:

git branch --all --no-merged

Đó có thể là nghi ngờ nhưng tôi khuyên bạn nên trả lời bởi cxreg


3

Nếu số lượng xác nhận chưa được đẩy ra là một số có một chữ số, thường là như vậy, cách dễ nhất là:

$ git checkout

git trả lời bằng cách nói với bạn rằng bạn "đi trước N cam kết" liên quan đến nguồn gốc của bạn. Vì vậy, bây giờ chỉ cần ghi nhớ số đó khi xem nhật ký. Nếu bạn "đi trước 3 lần cam kết", 3 lần cam kết hàng đầu trong lịch sử vẫn ở chế độ riêng tư.


2

một cách để làm việc là liệt kê các cam kết có sẵn trên một nhánh nhưng không phải là một cách khác.

git log ^origin/master master

Nhân vật '^' làm gì?
Aran Mulholland

@AranMulholland nó là viết tắt của không ở đây.
Alex

1

Như đã nói ở trên:

nguồn gốc git diff / master..IAD

Nhưng nếu bạn đang sử dụng git gui

Sau khi mở giao diện gui, chọn "Kho lưu trữ" -> Trong đó " Trực quan hóa lịch sử "

Lưu ý: Một số người thích sử dụng Dấu nhắc / Terminal của CMD trong khi một số người thích sử dụng GUI Git (để đơn giản)


tùy chọn trực quan trong git gui là một.
Rajesh Kolhapure

-2

Đây là giải pháp di động của tôi (tập lệnh shell cũng hoạt động trên Windows mà không cần cài đặt thêm) cho thấy sự khác biệt từ nguồn gốc cho tất cả các chi nhánh: git-fetch-log

Một ví dụ đầu ra:

==== branch [behind 1]

> commit 652b883 (origin/branch)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-10 09:11:11 +0100
|
|     Commit on remote
|
o commit 2304667 (branch)
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2015-08-28 13:21:13 +0200

      Commit on local

==== master [ahead 1]

< commit 280ccf8 (master)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-25 21:42:55 +0100
|
|     Commit on local
|
o commit 2369465 (origin/master, origin/HEAD)
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2016-03-10 09:02:52 +0100

      Commit on remote

==== test [ahead 1, behind 1]

< commit 83a3161 (test)
| Author: BimbaLaszlo <bimbalaszlo@gmail.com>
| Date:   2016-03-25 22:50:00 +0100
|
|     Diverged from remote
|
| > commit 4aafec7 (origin/test)
|/  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
|   Date:   2016-03-14 10:34:28 +0100
|
|       Pushed remote
|
o commit 0fccef3
  Author: BimbaLaszlo <bimbalaszlo@gmail.com>
  Date:   2015-09-03 10:33:39 +0200

      Last common commit

Các tham số được truyền cho nhật ký, ví dụ --onelinehoặc --patchcó thể được sử dụng.


-3
git show

sẽ hiển thị tất cả các khác biệt trong cam kết địa phương của bạn.

git show --name-only

sẽ hiển thị id xác nhận cục bộ và tên của xác nhận.


3
git showchỉ hiển thị các cam kết gần đây nhất, cho dù nó có bị đẩy ra từ xa hay không, nó sẽ không hiển thị cho bạn tất cả các cam kết chưa được xử lý của bạn.

-6
git diff origin

Giả sử chi nhánh của bạn được thiết lập để theo dõi nguồn gốc, thì điều đó sẽ cho bạn thấy sự khác biệt.

git log origin

Sẽ cung cấp cho bạn một bản tóm tắt của các cam kết.


3
git log originsẽ hiển thị cho bạn các cam kết đã được đẩy , nhưng nó sẽ không hiển thị các cam kết chưa được đẩy , điều này phù hợp hơn với những gì người đăng ban đầu đã yêu cầu.
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.