සංශෝධන දෙකක් අතර වෙනස් වී ඇති ගොනු පෙන්වයි


2111

ටික වේලාවක් වෙන් කර ඇති ශාඛා දෙකක් ඒකාබද්ධ කිරීමට මට අවශ්‍ය අතර කුමන ගොනු වෙනස් කර ඇත්දැයි දැන ගැනීමට මට අවශ්‍යය.

මෙම සබැඳිය හරහා පැමිණියේය: http://linux.yyz.us/git-howto.html එය බෙහෙවින් ප්‍රයෝජනවත් විය.

මා හමු වූ ශාඛා සංසන්දනය කිරීමේ මෙවලම්:

  • git diff master..branch
  • git log master..branch
  • git shortlog master..branch

ශාඛා දෙක අතර වෙනස් වන ගොනු පමණක් බැලීමට "git status master..branch" වැනි යමක් තිබේදැයි කල්පනා කරමින් සිටියේය.

නව මෙවලමක් නිර්මාණය නොකර, ඔබට දැන් එය කළ හැකි ආසන්නතම අවස්ථාව මෙය යැයි මම සිතමි (ගොනුවක් එක් වරකට වඩා වෙනස් කර ඇත්නම් එය පුනරාවර්තනය පෙන්වනු ඇත):

  • git diff master..branch | grep "^diff"

මට මග හැරුණු යමක් ඇත්දැයි කල්පනා කරමින් සිටියේය ...


12
මෙම ප්‍රශ්නයේ මාතෘකාව නොමඟ යවන තවත් අය කීදෙනෙක් ද? එය ඇත්ත වශයෙන්ම ශාඛා දෙකක් අතර ගොනු වෙනස්කම් සොයා ගැනීමයි. මා මෙහි පැමිණියේ එකම ශාඛාවක සංශෝධන දෙකක් අතර ගොනු වෙනස්කම් දකින්නේ කෙසේද යන්නයි. නැත්නම් මම විතරද?
සන්දීපන් නාත්

4
And සන්දීපන් නාත්: git සමඟ වෙනසක් නැත. ඔබ සැමවිටම තනි කොමිස් ගැන සඳහන් කරයි.
සැමුවෙල් ඕමැලී

@ සැමුවෙල් ඕ මැලී මම නව ශාඛාවක් වන අතර සියලු ශාඛා අවසානයේ ප්‍රධාන ශාඛාවට ඒකාබද්ධ කර අවසානයේ ස්වාමියා පෙරළා දැමිය හැකි පොදු ශාඛා ක්‍රමෝපාය සලකා බලමි. දැන්, පෙරළීමක සිදුවීම සලකා බැලීමේදී, නිෂ්පාදනය දැනටමත් ප්‍රධාන මට්ටමක පවතින නමුත්, ඉඟිය පිටුපසින් (එක් සංශෝධනයකින් අවසාන මාස්ටර් ඒකාබද්ධ වීමෙන් පසුව සිදු වූයේ නම්), මෙම සංශෝධන දෙක අතර ඇති වෙනස්කම් දැකීමට මා කැමතිය. සිදු කරන්නේ කුමක්දැයි සොයා බලන්න. අවසන් වරට ඒකාබද්ධ කරන ලද ශාඛාව දෙස බැලීමට මා කැමති නැත. මම වැරදියි නම් මාව නිවැරදි කරන්න.
සන්දීපන් නාත්

2
And සන්දීපන් නාත්: ශාඛා නම් භාවිතා කරනවා වෙනුවට ඔබට පහත පිළිතුරු ලබා ගත හැකි අතර ඒ වෙනුවට බැඳීම් හැඳුනුම්පත් සඳහන් කරන්න. එසේත් නැතිනම් ඔබ ටැග් නිර්මාණය කරන්නේ නම් ඒවායේ ටැග් නම් වලින් කොමිස් යොමු කරන්න.
සැමුවෙල් ඕමැලී

1
AndSandeepanNath ඔබට ශාඛා 2 ක් සංසන්දනය කළ නොහැක, ඔබ සංශෝධනය නියම කළ යුතුය. එබැවින් ශාඛා 2 ක් සංසන්දනය කිරීම සංශෝධන 2 ක් සංසන්දනය කරයි.
බැස්ටියන් වැන්ඩම්

Answers:


2583

වත්මන් ශාඛාව ශාඛාවට සාපේක්ෂව සංසන්දනය කිරීම සඳහා master:

$ git diff --name-status master

ඕනෑම ශාඛා දෙකක් සංසන්දනය කිරීම සඳහා:

$ git diff --name-status firstbranch..yourBranchName

මත දුරටත් කියවන්න git diffතුළ නිල ප්රලේඛනය .


2
වම් පස ඇති එක් එක් දර්ශකවල තේරුම කුමක්ද (මට එම් සහ ඩී ගොඩක් පෙනේ)?
gogogadgetinternet

16
@ user446936 - ඔබ ලිපි GIT තත්ත්වය man පිටුව @ දී අදහස් කරන දේ දකින්න පුළුවන් kernel.org/pub/software/scm/git/docs/git-status.html - විශේෂයෙන්, එම් == වෙනස්, ඩී == මකා දමන ලදී
ජේම්ස් මැනිං

12
git diff --name-status your_branch...masterස්වාමියා දින සිදුවූ your_branch එය නිර්මාණය කරන ලදී සිට වෙනස්කම් ප්රතිදානයනට
Radu

1
ද්විත්ව-තිත් ක්‍රියාකරු අතිරික්තය, මෙහි වෙනස එකිනෙකට වෙනස් බැවින් යුගල වශයෙන් වේ.
jub0bs

2
මා නොදන්නා සංශෝධනයක් හෝ මාර්ගයක් වැඩ කරන ගසෙහි නොවේ.
SuperUberDuper

408

උත්සාහ කරන්න

$ git diff --stat --color master..branchName

එකම රේඛා සංඛ්‍යාවක් භාවිතා කරන අතරම, එක් එක් වෙනස පිළිබඳ වැඩි විස්තරයක් මෙය ඔබට ලබා දෙනු ඇත.

ඔබ වෙනත් ආකාරයකින් ඒකාබද්ධ කරන්නේ නම් වෙනස පිළිබඳ වඩාත් පැහැදිලි චිත්‍රයක් ලබා ගැනීම සඳහා ඔබට අතු පෙරළා ගත හැකිය:

$ git diff --stat --color branchName..master

77
ඔබ (බෙහෙවින් නිර්දේශිත, ඉමෝ) git වර්ණය ( config --global color.ui true) සක්‍රිය කර ඇත්නම්, ඔබට --color මඟ හැරිය හැක. (මට lks - කම්මැලි යතුරුපුවරු සින්ඩ්‍රෝමය ඇත.)
Art Swri

25
මම ඔබ සමඟ පාටයි! BTW මම කියන්න අදහස් කළේ git config --global color.ui true- සම්පූර්ණ වීමට.
චිත්‍ර ස්වි

2
ක්‍රියා නොකරයි, දෝෂ විසි කරයි:fatal: ambiguous argument 'master..branchName': unknown revision or path not in the working tree.
ටොමේ සැටෝ - මොනිකා නැවත

7
@ ටොම්සැටෝ කණගාටුයි නමුත් ඔබේ ශාඛාවේ නම සමඟ “ශාඛා නාමය” මාරු කළ යුතුය.
ජෙරී

161

Git ලාභ හා පහසු අතු ඇති බව මතක තබා ගන්න. ඒකාබද්ධ කිරීම ගැටළු සහගත යැයි මම සිතන්නේ නම්, ඒකාබද්ධ කිරීම සඳහා ශාඛාවක් මම නිර්මාණය කරමි. එබැවින් masterමට ඒකාබද්ධ වීමට අවශ්‍ය වෙනස්කම් තිබේ නම් සහ baමාස්ටර්ගෙන් කේතය අවශ්‍ය මගේ ශාඛාව නම් මට පහත සඳහන් දේ කළ හැකිය:

git checkout ba
git checkout -b ba-merge
git merge master
.... review new code and fix conflicts....
git commit
git checkout ba
git merge ba-merge
git branch -d ba-merge
git merge master

අවසාන ප්‍රති result ලය වන්නේ මගේ ශාඛාව සමඟ ඉස්කුරුප්පු ඇරීමට පෙර විසි කිරීමේ ශාඛාවක් මත ඒකාබද්ධ කිරීම අත්හදා බැලීමට මට සිදුවීමයි. මම මගේ ආත්මය ගැටගැසුවොත් මට ba-mergeශාඛාව මකා දමා නැවත ආරම්භ කළ හැකිය.


4
නියමයි. මම කවදාවත් හිතුවේ නැහැ ඒ ආකාරයට අතු බෙදීමට. ඒකාබද්ධ කිරීමේදී මෙය "හොඳම භාවිතයන්හි" කොටසක් ලෙස සැලකිය යුතු යැයි මම සිතමි.
egelev

ඔබ බා-මාජ් නැවත බා සමඟ ඒකාබද්ධ කළ විට, ගැටුම් නැවත විසඳීමට හැකියාවක් නැද්ද?
ජොසෙෆ් බී

2
Ric එරික් ඇන්ඩර්සන් හරි, එය ප්‍රස්ථාරයකි. SVN පාසැල් මේසයක් යට විදුරුමස් මෙන් සැරසී සිටී. ස්තූතියි.
ජොසෙෆ් බී

1
බා-ඒකාබද්ධයට දැනටමත් මාස්ටර් සිටියේ නම් අවසාන පියවර 'git merge master' කිරීමට ඔබට අවශ්‍ය ඇයි
qwebek

ඔබට එය අතහැර දැමිය හැකිය. එය ප්‍රයෝජනවත් වීමට එකම හේතුව වන්නේ masterඔබ කේතය සමාලෝචනය කිරීමට සහ ගැටුම් නිරාකරණය කිරීමට වැඩ කරමින් සිටියදී නව දේවල් ගොඩ බැස්සවීමයි .
එරික් ඇන්ඩර්සන්

58

යමෙක් ශාඛා දෙකකින් වෙනස් ගොනුවක් ජනනය කිරීමට උත්සාහ කරන්නේ නම්:

git diff master..otherbranch > myDiffFile.diff

2
මෙය විශාල වෙනස්කම් ඇති විශාල අතු සමඟ විශේෂයෙන් ප්‍රයෝජනවත් වී ඇත.
vandsh

වෙනස සැබවින්ම විශාල වන විට මෙය ප්‍රයෝජනවත් වේ. පෙරනිමියෙන් එය කොන්සෝලයෙහි සියලු වෙනසක් නොපෙන්වයි (මම කල්පනා කළේ ඇයි), වෙනස ගොනුවකට යැවීම එවැනි අවස්ථාවක යා යුතු මාර්ගයයි.
රොටිමි-හොඳම

42

GUI පදනම් කරගත් ක්‍රමයක් ද ඇත.

ඔබට gitk භාවිතා කළ හැකිය .

  1. ධාවනය:

    $ gitk --all
    
  2. ශාඛාවක බැඳීමක් මත දකුණු ක්ලික් කර උත්පතන මෙනුවේ මෙම බැඳීම සලකුණු කරන්න තෝරන්න .

  3. වෙනත් ශාඛාවක බැඳීමක් මත දකුණු ක්ලික් කර Diff this -> mark commit හෝ Diff mark commit -> මෙය තෝරන්න .

එවිට දකුණු පහළ පුවරුවේ වෙනස් කළ ගොනු ලැයිස්තුවක් සහ වම් පහළ පුවරුවේ වෙනස් විස්තර ඇත.


3
R ඕර්වෙලොෆිල් මම එය කරන ආකාරය පෙන්වීමට වීඩියෝවක් උඩුගත කරමි . එය ඔබට උපකාරී වනු ඇතැයි මම බලාපොරොත්තු වෙමි.
Yantao Xie

වාව්, මට පමණක්, මට විශේෂ දැනෙනවා. අනාගත යොමු කිරීම සහ අමතර ගූගල්-ෆූ සඳහා මම එය රසවත් වෙබ් අඩවියෙන් සලකුණු කර ඇත්තෙමි.
ඕවල්ලොෆිල්

දැඩි ලෙස අවතක්සේරු කළ පිළිතුර. ස්තූතියි!
කොෂිනා

36

තවත් එක් විකල්පයක්, මෙම අවස්ථාවේ දී මෙල්ඩ් භාවිතා කිරීම:

git difftool -d master otherbranch

මෙය ලිපිගොනු අතර ඇති වෙනස්කම් දැකීමට පමණක් නොව, විශේෂිත ගොනුවකට යොමු කිරීමට සහ ක්ලික් කිරීමට පහසු ක්‍රමයක් සපයයි.


6
පෙරනිමිය ලෙස මෙල්ඩ් සැකසීමට අවශ්‍ය විය හැකිය: git config --global diff.tool meld
bwv549

1
මෙය මගේ ප්‍රියතමය, මන්ද එය ඔබ වින්‍යාස කරන ඕනෑම ඩිෆ්ටූල් භාවිතා කරනු ඇත.
ජොෂියා

OSX හි සහය නොදක්වයි. :-(
මයික් එස්.

Ike මයික්ස්. කරුණාකර මෙම පිළිතුර checkoverflow.com/a/12815806/151918 පරීක්ෂා කරන්න එහි OSX සඳහා උපදෙස් අඩංගු වේ. එය අවම වශයෙන් මට වැඩ කරයි, එය උපකාරී වේ යැයි සිතමි.
rsilva4

හොඳයි. නමුත් -dවිකල්පය කුමක්ද?
ස්කොටි.නෙට්

29

ප්‍රති the ලයට ඔබ අකමැති නම්, ඒකාබද්ධ කිරීම අත්හදා බැලීමට සහ ඕනෑම ගැටලුවකින් back ත් වීමට git පහසු වන බව සලකන්න. සිදුවිය හැකි ගැටළු කල්තියා සොයා බැලීමට වඩා පහසු විය හැකිය.


10
ඩේවිඩ්, ඒක හොඳ කාරණයක්, අතේ කලින් මොකද වෙන්නේ කියලා දැනගන්න එක හොඳයි ...
ජොහානික්ස්

18

ඔබ යම් යම් ලිපිගොනු (ගොනු) අතර පමණක් වෙනස්කම් සොයන්නේ නම්:

git diff branch1 branch2 -- myfile1.js myfile2.js

branch1 අත්‍යවශ්‍ය නොවන අතර ශාඛා 1 ලබා නොදුනහොත් ඔබගේ වර්තමාන ශාඛාව (ඔබ සිටින ශාඛාව) පෙරනිමියෙන් සලකා බලනු ලැබේ. උදා:

git diff master -- controller/index.js

15

සහයෝගයෙන් වැඩ කරන විට හෝ එකවර බහුවිධ අංගයන් මත වැඩ කරන විට, උඩුමහලේ හෝ ඔබේ ස්වාමියා තුළ පවා ඔබේ ශාඛාවට ඇතුළත් කර නොමැති කාර්යයන් අඩංගු වන අතර මූලික වෙනස්කම් වල වැරදි ලෙස දිස්වනු ඇත.

ඔබගේ උඩුගං බලා ගමන් කර ඇත්නම්, ඔබ මෙය කළ යුතුය:

git fetch
git diff origin/master...

Git diff master භාවිතා කිරීමෙන් පමණක් අදාළ වෙනස්කම් ඇතුළත් කළ හැකිය.


10

ඔබ IntelliJ IDEA භාවිතා කරන්නේ නම් , ඔබට ඕනෑම ශාඛාවක් ඔබගේ වර්තමාන වැඩ කරන ශාඛාව සමඟ සැසඳිය හැකිය. වැඩි විස්තර සඳහා http://www.jetbrains.com/idea/webhelp/merging-deleting-and-comparing-branches.html#d288093e3827 බලන්න . මෙය නොමිලේ සංස්කරණයෙන් ද ලබා ගත හැකිය .


8

අතු දෙකක් තිබේ

  • A (ඔබ වැඩ කරන ශාඛාව)
  • B (ඔබට සංසන්දනය කිරීමට අවශ්‍ය තවත් ශාඛාවක්)

A ශාඛාවේ සිටීම ඔබට ටයිප් කළ හැකිය

git diff --color B

එවිට මෙය ඔබට ප්‍රතිදානයක් ලබා දෙනු ඇත

රූප විස්තරය මෙහි ඇතුළත් කරන්න

මේ පිළිබඳ වැදගත් කරුණ නම්

  1. කොළ පැහැයෙන් පෙළ A ශාඛාවේ ඇත

  2. රතු පාටින් පෙළ B ශාඛාවේ ඇත


8

මෙහි පිළිතුරු ඕනෑ තරම් තිබේ, නමුත් මට අවශ්‍ය වූයේ මා පොදුවේ භාවිතා කරන දෙයක් එකතු කිරීමට ය. ඔබ සැසඳීමට කැමති එක් ශාඛාවක ඔබ සිටී නම් මම සාමාන්‍යයෙන් පහත සඳහන් දේවලින් එකක් කරමි. මෙම පිළිතුර සඳහා අපි අපගේ ද්විතීයික ශාඛාවේ සිටින බව කියමු. එම අවස්ථාවේදී ඔබට අවශ්‍ය දෘෂ්ටිය මත පදනම්ව ඔබ තෝරා ගන්නා දේ මත රඳා පවතී, නමුත් බොහෝ විට මම භාවිතා කරන්නේ දෙකේ දෙවන විකල්පයයි. ඔබ මුල් පිටපතක් වෙත ආපසු යාමට උත්සාහ කරන්නේ නම් පළමු විකල්පය පහසු විය හැකිය - කෙසේ හෝ දෙදෙනාම කාර්යය ඉටු කරති!

මෙය මාස්ටර් (අප ද්විතීයික) ශාඛාවට සංසන්දනය කරන අතර මුල් කේතය එකතු කළ රේඛා වන අතර නව කේතය ඉවත් කළ රේඛා ලෙස සලකනු ලැබේ

git diff ..master

හෝ

මෙය අප සිටින ශාඛාවට (ද්විතීයික) මාස්ටර් සංසන්දනය කරන අතර මුල් කේතය පැරණි රේඛා වන අතර නව කේතය නව රේඛා වනු ඇත

git diff master..

1

ඔබ Github / Github Enterprise භාවිතා කරන්නේ නම් /compare, ඔබේ නිධිය මාර්ගයේ url එක එබීමෙන් ඔබට වෙබ් UI භාවිතා කළ හැකිය , උදාහරණයක් ලෙස, https://github.com/http4s/http4s/compare . ඔබට සංසන්දනය කිරීමට අවශ්‍ය ශාඛාව / කැපවීම / ටැගය තෝරා ගත හැකිය: Github සසඳන්න තිර රුව

සහ වෙනස url එක දී github අතුරු මුහුණත ඉදිරිපත් කරනු ඇත /compare/{x1}...{x2}කොහෙද x2හා x1: ඇත ශාඛා / නසා / ඔබ නිදසුනක් ලෙස, සංසන්දනය කිරීමට ඔබට ටැගය https://github.com/http4s/http4s/compare/release-0.18.x ... මාස්ටර්

ගිතුබ් ලේඛනයේ ඔබට තවත් දැක ගත හැකිය .


0

GUI විසඳුමක් සොයන පුද්ගලයින් සඳහා, Git Cola සතුව ඉතා හොඳ “ශාඛා වෙනස නරඹන්නා ( වෙනස -> ශාඛා .. ) ඇත.


-1
git diff revision_n revision_m

අනුප්‍රාප්තික කොමිස් නම් revision_nසහ revision_mඑය ප්‍රතිදානය කරයි git show revision_m


-1

ඔබට දෘශ්‍ය වෙනසක් ද භාවිතා කළ හැකිය .

නිදසුනක් ලෙස, ඔබ Sourcetree භාවිතා කරන්නේ නම් , ඔබට ලොග් දර්ශනයේ ඕනෑම කොමිස් දෙකක් තෝරා ගත හැකිය .

(මම බොහෝ විට මේ සඳහා GUI භාවිතා කිරීමට කැමැත්තෙමි. GUI විකල්ප ගැන හුරු නැති අය සඳහා මම මෙය පළ කරමි.)


-2

ඔබ GUI වලට කැමති නම් සහ වින්ඩෝස් භාවිතා කරන්නේ නම්, මෙන්න පහසු ක්‍රමයකි.

  1. WinMerge බාගන්න
  2. ශාඛා දෙක විවිධ ෆෝල්ඩර වලට පරීක්ෂා කරන්න
  3. WinMerge භාවිතා කර ෆෝල්ඩරයකින් ෆෝල්ඩරයක් කරන්න. ඔබ වැඩ කරන ශාඛා වලින් එකක් නම් ඔබට පහසුවෙන් වෙනස් කිරීම් කළ හැකිය.

එය සරලම ක්‍රමය නොවේ, ඇත්ත වශයෙන්ම ශාඛා අතර වෙනස සඳහා ගබඩාවන් බාගත කිරීම අවශ්‍ය නොවේ.
stefgosselin

එය සැබවින්ම සරලම ක්‍රමය නොවේ, නමුත් එය GUI ක්‍රමය වන අතර එය බොහෝ විට බොහෝ ලිපිගොනු වල
වෙනස්කම්

-3

TortoiseGit භාවිතා කරමින් වෙනස් කළ ගොනු සඳහා ශාඛා පහසුවෙන් සංසන්දනය කළ හැකිය . බ්‍රවුස් යොමු මත ක්ලික් කර ඔබට සැසඳීමට අවශ්‍ය ශාඛා තෝරන්න.

උදාහරණයක් ලෙස ඔබ සංසන්දනය නම් ඔබේ ශාඛා සමග ස්වාමියා ඔබ වෙනස් වනු ඇත ගොනු ප්රතිඵලයක් ලැයිස්තුව ලෙස ලැබෙනු ඇත ස්වාමියා ඔබ ඒකාබද්ධ කිරීමට අදහස් කරන්නේ නම් ඔබගේ-ශාඛා බවට ස්වාමියා .

ඔබ සංසන්දනය නම්, ඔබ වෙනස් ප්රතිඵලයක් ඇති බව Remmber ස්වාමියා සමග ඔබගේ-ශාඛා සහ ඔබේ-ශාඛා සමග ස්වාමියා .


1
ප්‍රශ්නය දේශීය git උපයෝගීතාව ගැන පෙනේ
ව්ලැඩිමීර් හරාබන්
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.