Tại sao cộng đồng Git dường như bỏ qua sự khác biệt bên cạnh [đóng cửa]


33

Tôi đã từng sử dụng Windows, SVN, Rùa SVN và Beyond So sánh. Đó là một sự kết hợp tuyệt vời để làm đánh giá mã.

Bây giờ tôi sử dụng OSX và Git. Tôi đã tìm cách loại bỏ một tập lệnh bash cùng với Gitx và DiffMerge để đưa ra một giải pháp hầu như không chấp nhận được.

Tôi đã nhầm lẫn với thiết lập này, và các thiết lập tương tự, trong hơn một năm. Tôi cũng đã thử sử dụng trình xem khác biệt Github và trình xem khác biệt Gitx, vì vậy không giống như tôi đã không cho họ cơ hội.

Có rất nhiều người thông minh làm những thứ tuyệt vời với Git. Tại sao không phải là khác biệt bên cạnh với tùy chọn xem toàn bộ tập tin? Với những người đã sử dụng cả hai, tôi chưa bao giờ nghe thấy ai thích lượt xem +/- tốt hơn, ít nhất là nhiều hơn một lần kiểm tra nhanh.


Bạn có thể thiết lập TortoiseGit để sử dụng Beyond So sánh cho diiff, trong trường hợp đó bạn sẽ thấy toàn bộ tệp cạnh nhau (tuy nhiên tôi chưa bao giờ thử nghiệm thiết lập này một cách cá nhân [nhưng dự định, một trong những ngày này]).
wildpeaks

1
Chỉ cần một nhận xét, tôi sử dụng để sử dụng Windows, SVN và Beyond So sánh. Nhưng, bây giờ tôi sử dụng Ubuntu + Git. May mắn thay, tôi vẫn có thể sử dụng người bạn cũ của mình Beyond Beyond. Nó hoạt động tốt trên Ubuntu. Và trong khi không miễn phí, nó đáng giá từng xu với tôi. :) Xin lỗi, tôi không thể cung cấp cho bạn một giải pháp trên OSX, nhưng không muốn mọi người nghĩ rằng Beyond So sánh là một giải pháp chỉ dành cho Windows.
David S

7 năm sau, tôi vẫn cảm thấy như vậy phần nào, nhưng tôi đã tự rèn luyện để thích khác biệt nội tuyến trong tất cả các trường hợp ngoại trừ những trường hợp phức tạp nhất. Sau đó, tôi chia tay người bạn cũ của tôi.
Kyle Heironimus

Câu trả lời:


19

Tôi không thể nói cho Linus về điều này, nhưng cách git xử lý các điều khác biệt là rất không hợp lý, nói theo triết lý. git làm những gì nó làm rất tốt, và sử dụng các công cụ bên ngoài cho mọi thứ khác, bao gồm cả sự khác biệt và hợp nhất tinh vi hơn.

Tôi cũng sử dụng DiffMerge với git trên OS X và tôi đã không phải dùng đến bất kỳ shell bash nào. Thật khó khăn, nhưng tôi đã cấu hình cài đặt Difftool và mergetool của git để gọi trực tiếp cho DiffMerge và bây giờ tôi có thể xem các khác biệt và giải quyết xung đột hợp nhất trong một công cụ bên thứ ba trực quan tuyệt vời.

Đây là cấu hình của tôi:

[mergetool "diffmerge"]
        cmd = "diffmerge --merge --result=\"$MERGED\" \"$LOCAL\" \"$(if test -f \"$BASE\"; then echo \"$BASE\"; else echo \"$LOCAL\"; fi)\" \"$REMOTE\""
        trustExitCode = false
[difftool "diffmerge"]
        cmd = diffmerge \"$LOCAL\" \"$REMOTE\"
[merge]
        tool = diffmerge
[diff]
        tool = diffmerge

1
Điều này không sao, nhưng khi một số tệp thay đổi, tôi có thể xem xét từng cái một, theo thứ tự git quyết định hiển thị chúng cho tôi. Tôi phải đóng cái này để mở cái khác. Đó là lý do tại sao tôi cũng sử dụng tập lệnh bash khi tôi muốn xem tất cả các tệp cùng một lúc.
Kyle Heironimus

Tôi không biết những gì bạn sẽ mong đợi để xem xét về mặt "nhìn tất cả chúng cùng một lúc". Nhưng hãy kiểm tra git diff --stat. Cung cấp cho bạn một danh sách đồ họa đẹp của tất cả các tệp đã thay đổi, với số lượng dòng thay đổi.
Dan Ray

Suy nghĩ thêm một chút về điều này "mở tất cả chúng cùng một lúc" ... Bạn có thể chỉnh sửa / xem bao nhiêu tệp cùng một lúc? Tôi chỉ có thể nhìn vào một tập tin tại bất kỳ thời điểm nào. Tôi đoán tôi không nhận được những gì bạn muốn nó sẽ làm.
Dan Ray

2
Ví dụ tốt nhất là TortoiseSVN với Beyond So sánh. Ví dụ: nếu cam kết cuối cùng của đồng nghiệp của tôi có 3 tệp được thay đổi, nó sẽ hiển thị ba tệp trong danh sách. Sau đó tôi có thể nhấp vào tập tin thích hợp để xem sự khác biệt. Tôi cũng có thể mở 3 cửa sổ riêng biệt, mỗi cửa sổ có tệp khác nhau. Sau đó tôi có thể qua lại giữa họ, khi cần thiết để kiểm tra sự thay đổi. Về cơ bản, nó cho phép bạn xem tất cả các thay đổi theo các điều khoản của riêng bạn, chứ không phải theo thứ tự được quy định bởi vcs của bạn.
Kyle Heironimus

1
Bạn biết đấy, bạn nên kiểm tra Tháp. Đó là Mac git gui tốt nhất tôi từng thấy, và làm những gì bạn đang nói và CÁCH nhiều hơn. git-tower.com
Dan Ray

16

Bạn cũng sẽ nhận thấy rằng chính SVN cũng không cung cấp giải pháp phụ. Những gì bạn đã liệt kê là các công cụ của bên thứ ba. Như với hầu hết mọi thứ trong git, đây là cấu hình đặc biệt, và nó có công cụ hỗ trợ tuyệt vời. Bạn đã thiết lập một mergetool ? Nếu không, bạn nên. Nếu bạn làm, hãy thử git difftool. Sau đó hãy xem trang man cho các tùy chọn cấu hình.

Tôi sử dụng KDiff3 làm công cụ hợp nhất của mình vì đây là một công cụ đa nền tảng tốt đẹp và không có cấu hình nào nữa, git difftoolthực hiện chính xác những gì bạn đang hỏi.


2
Trên thực tế, nó hoạt động tốt với Difftool, nhưng vẫn thất bại khi xem nhiều tệp. Chúng phải được mở cùng một lúc. Để mở tất cả chúng cùng một lúc, tôi phải thực hiện bash script.
Kyle Heironimus

9

Đó là triết lý * nix. Rất nhiều người sử dụng các công cụ này dành rất nhiều thời gian trong thiết bị đầu cuối. Thiết bị đầu cuối không yêu cầu chúng ta di chuyển bàn tay từ bàn phím sang chuột. Tôi biết rằng tôi thích kiểu +/- hơn các công cụ diff / merge trực quan, chủ yếu là vì tôi chỉ quan tâm đến sự khác biệt. Tôi quan tâm đến 3-4 dòng xung quanh sự thay đổi và chính sự thay đổi. Bất cứ điều gì nhiều hơn là thông tin bổ sung mà thực sự không giúp tôi.

Diff thường được sử dụng để có cái nhìn nhanh về những gì đã được thay đổi. Không đọc mã.

Tôi chưa bao giờ thấy các công cụ tìm khác biệt trực quan rất hữu ích so với các khác biệt mặc định trên các hệ thống GNU. Tất cả những gì họ làm cho tôi là bắt đầu làm rối với con chuột và buộc tôi phải cuộn qua tệp, tìm ra giao diện người dùng của họ, và sau đó đấu tranh để quay lại dòng lệnh nơi tôi có thể làm gì đó về một vấn đề tôi gặp trong diff .


1
vimdiff là ổn, nó thường chỉ cho bạn thấy các bộ phận. Tôi sử dụng nó để hợp nhất; không cần chuột
thay thế

8
Bạn có bao giờ nhìn vào những thay đổi được thực hiện bởi một đồng nghiệp? Đến các khu vực của mã mà bạn không quen thuộc? Tôi làm tất cả thời gian, và tôi không thể tưởng tượng làm điều đó mà không có bên cạnh, tất cả các mã. Đối với tôi, +/- là tuyệt vời cho những thay đổi được thực hiện, nhưng không phải cho những người khác. Không nói bạn sai hay xấu hay gì cả. Chỉ cần hỏi.
Kyle Heironimus

1
Tôi thường bị trả về mã do đồng nghiệp thay đổi, thường ở những khu vực tôi không quen thuộc. Tôi nghĩ rằng tôi đã sử dụng cạnh nhau có thể 3 hoặc 4 lần, và có thể dễ dàng thực hiện mà không cần. Nó chỉ phụ thuộc vào phong cách điều hành ưa thích của bạn là gì. Nó làm việc cho bạn, tôi thấy nó không cần thiết.
Brian Knoblauch

0

Từ cách sử dụng cá nhân của tôi, tôi nghĩ rằng câu trả lời chủ yếu là khác biệt đủ ngắn để nó không thành vấn đề.

Đối với đánh giá mã, tôi sử dụng một công cụ đánh giá mã đầy đủ tính năng, cung cấp cho tôi tất cả những điều tôi thích - như nhận xét, tô sáng cú pháp và chế độ xem cạnh nhau.

Tôi sử dụng git diffgần như độc quyền trong khi mã dàn dựng để cam kết; Khi đó là trường hợp khác biệt, đủ nhỏ và gần đây, tôi không cần phải xem bối cảnh để nhớ những gì đang diễn ra.

Công cụ đánh giá mã của tôi về Photypeator , hoặc có thể là các công cụ tích hợp IDE, có khả năng nhận biết ngữ cảnh. Tôi nghĩ rằng luồng yêu cầu kéo của github rất tệ cho việc xem xét mã, chủ yếu là vì nó cho thấy sự khác biệt thống nhất và không song song.

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.