Hướng dẫn hiểu gitk? [đóng cửa]


83

Tôi đang giới thiệu git cho một nhóm các nhà phát triển và tôi thấy gitk là một công cụ tuyệt vời. Nó cũng khá khó hiểu, vì hiểu gitk đòi hỏi sự hiểu biết về cả lịch sử git và bản thân công cụ xem.

Có ai có bất kỳ tài liệu tham khảo tốt nào về cái gì đó như "hướng dẫn cho người mới bắt đầu về lịch sử git với gitk" không?



Blog lostechies.com/joshuaflanagan/2010/09/03/… giới thiệu sơ lược về gitk và có thể giúp bạn hiểu menu chuột phải của gitk.
koppor 27/07/17

Câu trả lời:


93

Tôi chưa bao giờ thấy bất cứ điều gì cụ thể cho gitk. Đây là một điểm nhấn về nó, từ quan điểm "nó hoạt động như thế nào". Biết các lệnh đằng sau mọi thứ (hoặc ít nhất là tương đương) giúp học cách sử dụng các công cụ dòng lệnh dễ dàng hơn và cũng chỉ cho bạn nơi xem trong tài liệu để hiểu gitk tốt hơn!

Danh sách dữ liệu

Điều này đã thay đổi phần nào trong một vài phiên bản chính gần đây - tôi đang mô tả trạng thái hiện tại.

  • cập nhật và tải lại: Đây có lẽ là điều khó hiểu nhất. Tải lại làm mới mọi thứ như thể bạn bắt đầu lại chương trình với cùng một cấu hình. Điều này có nghĩa là nếu một nhánh đã bị loại bỏ / khôi phục lại, nếu một số cam kết hiện đang treo lơ lửng, bạn sẽ không thấy chúng nữa. Mặt khác, cập nhật làm mới tất cả thông tin, nhưng vẫn hiển thị tất cả các cam kết đã được hiển thị trước đó. Đây là một điều tuyệt vời để sử dụng nếu bạn đang phục hồi và muốn đảm bảo rằng bạn không làm rối tung lên - bạn có thể xem cả phiên bản gốc và phiên bản được phục hồi.

  • tài liệu tham khảo: khá rõ ràng. Tài liệu tham khảo bao gồm các thẻ và nhánh (có thể ở xa). Bạn có thể đọc lại chúng và liệt kê để nhấp vào một cái cụ thể để hiển thị nó trong lịch sử.

Lượt xem

Như trang người đàn ông nói, gitk có các tùy chọn git-rev-list để giúp chỉ định lịch sử nào sẽ được hiển thị. Chúng cũng có thể được đặt tương tác trong menu "chế độ xem". Trang người đàn ông là một nơi tuyệt vời để tìm thêm thông tin về các cách bạn có thể kiểm soát lượt xem (chủ yếu nằm trong phần giới hạn cam kết). Nếu bạn đã xem git-logtrước đây, bạn sẽ thấy rất nhiều điều này.

Cứu giúp

Có một danh sách các keybinding ở đây! Ngọt.

Danh mục

Phần này trình bày một số lệnh git sứ phổ biến, thường ở chế độ hoạt động chung / mặc định. Liệt kê chúng ít nhất sẽ giúp bạn tìm được tài liệu phù hợp để hiểu chúng làm gì, nếu bạn chưa có!

  • git-diff (Khác với <-> này đã chọn
  • git-format-patch (tạo bản vá)
  • git-tag (tạo thẻ)
  • git-diff-tree (ghi cam kết vào tệp, hiếm khi được sử dụng)
  • git-chi nhánh
  • git-cherry-pick
  • git-reset (đặt lại nhánh tại đây) Thao tác này sẽ nhắc bạn về mềm, hỗn hợp hoặc cứng, với lời nhắc ngắn gọn về những gì mỗi loại làm. Mô tả dài hơn trên trang người đàn ông, nhưng tất nhiên bạn phải hiểu khái niệm về chỉ mục để thực sự có được nó.

"Đánh dấu một cam kết" và các lệnh liên quan nên tự giải thích tại thời điểm này.

Trong menu ngữ cảnh cho một nhánh, chúng ta có git-checkout-dchế độ (xóa) của git-branch.

Phần giữa

  • ID SHA1: băm của cam kết hiện tại. Rất hữu ích để sao chép / dán vào một thiết bị đầu cuối để thực hiện một hành động trên một cam kết nhất định mà bạn đã sử dụng gitk để tìm. Bạn cũng có thể dán hàm băm vào đây.

  • Nút tiến / lùi, số hàng ... hiển nhiên!

  • Tìm thấy! Các tùy chọn ở đây một lần nữa khá dễ hiểu, nhưng đối với trình độ học vấn của mọi người, chúng tương tự với các tham số git-log : "chứa" là --grep, "chạm vào đường dẫn" là đối số và thêm / xóa chuỗi là -S(cái cuốc).

Ngăn tin nhắn / khác biệt

Ở đây chúng tôi có thông báo cam kết cùng với đầu ra của git-diff - đây là một cái gì đó giống như sử dụng git-log -p, với một chút bổ sung:

  • "Chi nhánh" tương đương với git branch -a --contains=<commit>

  • "Trước" / "Theo dõi" tương đương với git describe [--contains] <commit>( git-description )


Đủ công bằng cho các lệnh menu gitk, +1 cho điều đó. Bạn đang làm tốt phần "gitk", nhưng tôi thực sự hy vọng một số lời giải thích về sự kết hợp giữa gitk và lịch sử.
krosenvold

Tôi muốn làm cho câu trả lời này tốt hơn! Tôi đoán tôi không quá rõ ý bạn khi giải thích về lịch sử git. Đó có phải là khái niệm phân nhánh và hợp nhất cần giải thích? Thực tế là các cam kết phụ thuộc trực tiếp vào cam kết trước đó thông qua hàm băm của họ? Có vẻ như một khi bạn nhìn thấy lịch sử trên màn hình theo đúng nghĩa đen thì không có nhiều điều để giải thích.
Cascabel

Tôi xin lỗi, có lẽ tôi hơi thiếu hiểu biết, nhưng tôi không hiểu làm thế nào để chỉ git commit -ahoặc thậm chí git addtrong gitk. Có điều gì tôi đang thiếu?
ubershmekel

2
@ubershmekel gitk không làm một trong hai điều đó; nếu bạn muốn có một gui cho họ, một cái được tích hợp sẵn là git gui. Tuy nhiên, câu hỏi này chỉ là về gitk và gitk về cơ bản là một công cụ duyệt lịch sử (với một chút thao tác nhánh).
Cascabel

24

Đây là phần giới thiệu về hình ảnh hóa lịch sử chi nhánh trong gitk với ảnh chụp màn hình.

http://lostechies.com/joshuaflanagan/2010/09/03/use-gitk-to-und hieu-git/

  1. Khung phía trên bên trái hiển thị chuỗi cam kết đối với kho lưu trữ này, với phần gần đây nhất ở trên cùng.
  2. Đã có ba cam kết, tất cả đều của Tony Stark.
  3. Thông báo cam kết cho lần cam kết gần đây nhất là "lần cam kết thứ ba"
  4. Có một nhánh cục bộ duy nhất, được đặt tên là "master", nó trỏ đến cam kết gần đây nhất
  5. Có một nhánh tham chiếu từ xa duy nhất: nhánh “chính” từ kho lưu trữ từ xa có tên “origin”, nó cũng trỏ đến cam kết gần đây nhất
  6. Chấm màu vàng bên cạnh cam kết trên cùng cho biết đó là ảnh chụp nhanh hiện có trong thư mục làm việc của tôi (được gọi là HEAD)
  7. Tôi đã đánh dấu cam kết thứ hai, để tôi có thể xem chi tiết của nó trong ngăn dưới

  8. Cam kết SHA (số nhận dạng duy nhất, tương tự như số bản sửa đổi subversion) của cam kết thứ hai là 3d024dd9e4a83d8c6a9a143a68b75d4b872115a6
  9. Phía dưới bên phải hiển thị danh sách các tệp bị ảnh hưởng bởi lần cam kết thứ hai
  10. Phía dưới bên trái hiển thị chi tiết cam kết, bao gồm toàn bộ sự khác biệt
  11. Nhấp vào tệp trong ngăn dưới bên phải sẽ cuộn phần khác trong ngăn dưới bên trái đến phần 12 tương ứng.

3

Những gì người mới thực sự có thể sử dụng về "sự kết hợp giữa gitk và lịch sử" là một lời giải thích cụ thể về cách nhận ra những gì đã xảy ra bằng cách nhìn vào chế độ xem cây gitk.

Theo như tôi biết - cách đúng đắn để nhìn cây là (tất nhiên):

 1. each node is a commit
 2. ultimate parent is at the bottom
 3. direct child to a commit is the one that happened first in the same branch (no matter who did it)
 4. the node with 2 or more children indicates ... ?
 5. merge commit node has 2 parents.
 6. rebase is recognized ... ?

Ảnh chụp màn hình cũng sẽ được đánh giá cao.

Cây thực sự đại diện cho trạng thái hiện tại của kho lưu trữ. Điều tuyệt vời là nếu chúng ta có thể biết điều gì đã xảy ra bằng cách nhìn vào quang cảnh cây.

Cảm ơn

v.


1
4. ... chi nhánh, 6. ... không phải ở tất cả vì nó chỉ sắp xếp lại các cam kết hiện có
centic

1

Điều duy nhất tôi thấy hữu ích về giao diện gitk là tổng quan các nhánh (đầy màu sắc) đẹp mắt ..

Nếu bạn muốn có một gui cho git, hãy kiểm tra TortoiseGit trên windows hoặc GitX trên Mac hoặc QGit trên linux.


4
Tôi nghĩ rằng đây là một nhận định hơi vội vàng. Chắc chắn, trình tạo hành động rất tuyệt, nhưng rất nhiều thứ được tích hợp sẵn trong menu ngữ cảnh gitk bị thiếu. gitk cung cấp một cách rất dễ dàng để thao tác các nhánh với phản hồi trực quan, đặc biệt hữu ích cho người dùng mới.
Cascabel

1
Tôi thích cli hơn, nhưng đôi khi tôi gọi gitk chỉ để xem các nhánh và hợp nhất. Tôi sẽ không giới thiệu giao diện gitk cho người dùng mới .. Có thể khiến họ sợ hãi?
Davy Landman

Thật kỳ lạ, tôi nghĩ rằng cả hai bạn đều đúng.
innaM
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.