Git හි, එකම ශාඛාවේ එකම ගොනුව වෙනස් කොමිස් දෙකක් (පරස්පර නොවේ) අතර සංසන්දනය කරන්නේ කෙසේද (උදාහරණයක් ලෙස මාස්ටර්)?
දෘශ්ය මූලාශ්ර සුරක්ෂිත (වීඑස්එස්) හෝ කණ්ඩායම් පදනම් සේවාදායකයේ (ටීඑෆ්එස්) වැනි සංසන්දනාත්මක අංගයක් මම සොයමි .
Git හි එය කළ හැකිද?
Git හි, එකම ශාඛාවේ එකම ගොනුව වෙනස් කොමිස් දෙකක් (පරස්පර නොවේ) අතර සංසන්දනය කරන්නේ කෙසේද (උදාහරණයක් ලෙස මාස්ටර්)?
දෘශ්ය මූලාශ්ර සුරක්ෂිත (වීඑස්එස්) හෝ කණ්ඩායම් පදනම් සේවාදායකයේ (ටීඑෆ්එස්) වැනි සංසන්දනාත්මක අංගයක් මම සොයමි .
Git හි එය කළ හැකිද?
Answers:
සිට git-diff
manpage:
git diff [--options] <commit> <commit> [--] [<path>...]
නිදසුනක් ලෙස, "main.c" ගොනුවක් සඳහා දැන් සහ නැවත කොමිට් දෙකක් අතර වෙනස බැලීමට, සමාන විධානයන් තුනක් මෙන්න:
$ git diff HEAD^^ HEAD main.c
$ git diff HEAD^^..HEAD -- main.c
$ git diff HEAD~2 HEAD -- main.c
--
ප්රයෝජනවත් වේ. ඔබට ගොනුවක් ඇති විට -p
. ස්ක්රිප්ට් භාවිතා කිරීම හොඳයි, ප්රායෝගිකව අවශ්ය වන්නේ දුර්ලභ අවස්ථාවන්හිදී පමණි.
ඔබට වෙනස් සංශෝධන දෙකකින් විවිධ ගොනු දෙකක් සංසන්දනය කළ හැකිය, මේ ආකාරයට:
git diff <revision_1>:<file_1> <revision_2>:<file_2>
<file_1>
හා <file_2>
වත්මන් නාමාවලියේ නොව ඉහල මට්ටමේ GIT කළමනාකරණය බහලුම මත වන අතර, එක් prepend යුතු ./
: Unix මත<revision_1>:./filename_1
ඔබ "difftool" වින්යාස කර ඇත්නම් ඔබට භාවිතා කළ හැකිය
git difftool revision_1:file_1 revision_2:file_2
උදාහරණය: ගොනුවක් එහි අන්තිම බැඳීමේ සිට එකම ශාඛාවේ පෙර කැපවීම සමඟ සංසන්දනය කිරීම: ඔබ ඔබේ ව්යාපෘති මූල ෆෝල්ඩරයේ සිටී නම්
$git difftool HEAD:src/main/java/com.xyz.test/MyApp.java HEAD^:src/main/java/com.xyz.test/MyApp.java
ඔබගේ ~ / .gitconfig හෝ project / .git / config ගොනුවේ පහත සඳහන් ප්රවේශයන් තිබිය යුතුය. P4merge ස්ථාපනය කරන්න [මෙය මා වඩාත් කැමති වෙනස හා ඒකාබද්ධ කිරීමේ මෙවලමයි]
[merge]
tool = p4merge
keepBackup = false
[diff]
tool = p4merge
keepBackup = false
[difftool "p4merge"]
path = C:/Program Files (x86)/Perforce/p4merge.exe
[mergetool]
keepBackup = false
[difftool]
keepBackup = false
[mergetool "p4merge"]
path = C:/Program Files (x86)/Perforce/p4merge.exe
cmd = p4merge.exe \"$BASE\" \"$LOCAL\" \"$REMOTE\" \"$MERGED\"
පරීක්ෂා කරන්න $ git log
, විවිධ කමිටු දෙකේ SHA-1 හැඳුනුම්පත පිටපත් git diff
කර එම හැඳුනුම්පත් සමඟ විධානය ක්රියාත්මක කරන්න. උදාහරණයක් වශයෙන්:
$ git diff (sha-id-one) (sha-id-two)
git diff (sha-id-one) (sha-id-two) -- filename.ext
ගොනු නාමය නොමැතිව එම කොමිස් දෙකෙහි ඇති සියලුම ගොනු වල වෙනස්කම් ලැයිස්තුගත කරයි.
කොමිස් දෙක අතර ගොනුවේ ඇති සියලුම වෙනස්කම් කැපවීමෙන්-කැපවීමේ පදනම මත බැලීමට ඔබට අවශ්ය නම්, ඔබට ද එය කළ හැකිය
git log -u $start_commit..$end_commit -- path/to/file
Git ලොග් විධානයක ඇති පරිදි දී ඇති ගොනුවක් සඳහා Git diff විධාන මුද්රණය කරන පර්ල් පිටපතක් මෙන්න.
උදා
git log pom.xml | perl gldiff.pl 3 pom.xml
අස්වැන්න:
git diff 5cc287:pom.xml e8e420:pom.xml
git diff 3aa914:pom.xml 7476e1:pom.xml
git diff 422bfd:pom.xml f92ad8:pom.xml
ඒවා කපා ෂෙල් කවුළු සැසියක ඇලවිය /bin/sh
හැකිය.
සටහන්:
කේතය:
# gldiff.pl
use strict;
my $max = shift;
my $file = shift;
die "not a number" unless $max =~ m/\d+/;
die "not a file" unless -f $file;
my $count;
my @lines;
while (<>) {
chomp;
next unless s/^commit\s+(.*)//;
my $commit = $1;
push @lines, sprintf "%s:%s", substr($commit,0,6),$file;
if (@lines == 2) {
printf "git diff %s %s\n", @lines;
@lines = ();
}
last if ++$count >= $max *2;
}
IPmipadi විසින් නිශ්චිතව දක්වා ඇති ක්රමය සමඟ එක් ගොනුවකට වඩා වැඩි ගණනක් සමඟ වෙනසක් කිරීමට ඔබට අවශ්ය නම්:
උදා : සියලුම ලිපිගොනු සොයා ගැනීමට HEAD
සහ ඔබේ අතර වෙනස :master
.coffee
git diff master..HEAD -- `find your_search_folder/ -name '*.coffee'`
මෙය ඔබගේ your_search_folder/
සියලුම .coffee
ලිපිගොනු සඳහා පුනරාවර්තනයෙන් සොයනු ඇති අතර ඒවා සහ ඒවායේ master
අනුවාද අතර වෙනසක් ඇති කරයි .
ඔබට ලිපිගොනු හෝ නාමාවලි කිහිපයක් තිබේ නම් සහ අඛණ්ඩ නොවන කොමිස් සංසන්දනය කිරීමට අවශ්ය නම්, ඔබට මෙය කළ හැකිය:
තාවකාලික ශාඛාවක් සාදන්න ( මෙම උදාහරණයේ "සංශෝධනය" )
git checkout -b revision
පළමු කැපවීමේ ඉලක්කයට පෙරළන්න
git reset --hard <commit_target>
උනන්දුවක් දක්වන අය චෙරි තෝරා ගැනීම
git cherry-pick <commit_interested> ...
වෙනස යොදන්න
git diff <commit-target>^
ඔබ කළ විට
git branch -D revision
Git ගේ පුදුමාකාරකම භාවිතා කිරීමට තවත් ක්රමයක් ...
git difftool HEAD HEAD@{N} /PATH/FILE.ext
difftool-file = "!git difftool HEAD@{\"$2\"} HEAD \"$1\" #"
ඔබට දෘශ්ය මූලාශ්ර සුරක්ෂිතතාව හෝ කණ්ඩායම් පදනම් සේවාදායකය (ටීඑෆ්එස්) ලබා ගත හැකි වැනි වින්ඩෝස් හි සරල දෘශ්ය සංසන්දනයක් අවශ්ය නම් , මෙය උත්සාහ කරන්න:
සටහන: වින්ඩෝස් 10 වෙත යාවත්කාලීන කිරීමෙන් පසු මට Git සන්දර්භය මෙනු විකල්ප අහිමි වී ඇත. කෙසේ වෙතත්, විධාන කවුළුවක 'gitk' හෝ 'gitk ගොනු නාමය' භාවිතා කර ඔබට එයම සාක්ෂාත් කරගත හැකිය.
ඔබ 'Git History' ඇමතූ පසු, ඉහළ වම් කවුළුවෙහි ගොනුවේ ඉතිහාසයක් ඇති Git GUI මෙවලම ආරම්භ වේ. ඔබ සංසන්දනය කිරීමට කැමති අනුවාද වලින් එකක් තෝරන්න. ඉන්පසු දෙවන අනුවාදය මත දකුණු-ක්ලික් කර එක්කෝ තෝරන්න
මෙය වෙනස් කරන්න -> තෝරා ඇත
හෝ
වෙනස තෝරා ඇත -> මෙය
වර්ණ කේත කරන ලද වෙනස්කම් පහළ වම් කවුළුවෙහි දිස්වනු ඇත.
..
(සමහර විට, සාධාරණව පැරණි අනුවාද හැර) එය සමග වැඩ කරන්නම් නමුත් තමයි, අවශ්ය වේ. කොමිස් දෙක ඉතා දුරින් තිබිය යුතු නම් ඔබට භාවිතා කිරීමටgit log
හෝ භාවිතාgitk
කිරීමට SHA1 සොයා ගත හැකිය.gitk
එහි සන්දර්භය මෙනුවෙහි "diff select -> this" සහ "diff this -> select" ද ඇත.