diff
දේශීය ශාඛාවක් සහ දුරස්ථ ශාඛාවක් අතර ඇති සම්බන්ධය මා දකින්නේ කෙසේද ?
git diff HEAD origin/HEAD
කළේ මා අදහස් කළ ශාඛාවට වඩා වෙනස් දුරස්ථ ශාඛාවකට යොමු වන බවක් පෙනේ. සම්පූර්ණ ශාඛා නාමය භාවිතා කිරීම අපේක්ෂිත පරිදි ක්රියා කරයි.
diff
දේශීය ශාඛාවක් සහ දුරස්ථ ශාඛාවක් අතර ඇති සම්බන්ධය මා දකින්නේ කෙසේද ?
git diff HEAD origin/HEAD
කළේ මා අදහස් කළ ශාඛාවට වඩා වෙනස් දුරස්ථ ශාඛාවකට යොමු වන බවක් පෙනේ. සම්පූර්ණ ශාඛා නාමය භාවිතා කිරීම අපේක්ෂිත පරිදි ක්රියා කරයි.
Answers:
දුරස්ථ ලුහුබැඳීමේ ශාඛා යාවත්කාලීන කිරීම සඳහා, ඔබ git fetch
පළමුව ටයිප් කර පසුව:
git diff <masterbranch_path> <remotebranch_path>
ඔබට git branch -a
සියලුම ශාඛා ලැයිස්තු ගත කළ හැකිය (දේශීය හා දුරස්ථ) ඉන්පසු ලැයිස්තුවෙන් ශාඛා නාමය තෝරන්න ( remotes/
දුරස්ථ ශාඛා නාමයෙන් ඉවත් කරන්න .
උදාහරණය: git diff master origin/master
(“ස්වාමියා” යනු දේශීය ප්රධාන ශාඛාව වන අතර “සම්භවය / ස්වාමියා” දුරස්ථ නාමයක් වන මූලාරම්භය සහ ප්රධාන ශාඛාව වේ.)
git fetch
) ලබා ගැනීම අවශ්ය විය හැකිය
[diff] tool = vscode [difftool] prompt = false [difftool "vscode"] cmd = \"C:\\Program Files (x86)\\Microsoft VS Code\\Code.exe\" \"$LOCAL\" \"$REMOTE\" --diff --wait trustExitCode = false
ඔබේ මාර්ගය නිවැරදි බවට වග බලා ගන්න.
git diff <local branch> <remote>/<remote branch>
උදාහරණයක් ලෙස git diff master origin/master
, හෝgit diff featureA origin/next
ඇත්තෙන්ම කිරීමට ඇති බවයි දුරස්ථ සොයා ශාඛා ඔබට අවශ්ය git fetch
පළමු; දුරස්ථ ගබඩාවේ ශාඛා පිළිබඳ යාවත්කාලීන තොරතුරු තිබීම ඔබට අවශ්ය වේ.
git diff <remote>/<remote branch> <local branch>
දුරස්ථ repo සඳහා මගේ තල්ලුව කුමක් කරයිද යන්නයි.
git diff origin
ඔබේ උඩු මහලේ ශාඛාව සමඟ සංසන්දනය කළහොත් ඊටත් වඩා කෙටි වේ.
git fetch
ආරම්භයේ දී එකතු කරන්න , එය මා වැනි නවක වදයට කරදරයක් කරයි
git diff <remote>/<remote branch> <local branch>
නොවේද? එසේ නොමැතිනම්, මගේ පරිගණකයට ස්විචයන් එකතු කිරීම සහ මකා දැමීම මට ලැබේ (git version 2.7.0.windows.2)
පළමු වර්ගය
git branch -a
පවතින ශාඛා ලැයිස්තුව ලබා ගැනීමට. නිමැවුමේදී ඔබට එවැනි දෙයක් දැකිය හැකිය
* master
remotes/main/master
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/mt
remotes/upstream/master
remotes/upstream/mt
ඉන්පසු වෙනස පෙන්වන්න
git diff --stat --color remotes/main/master..origin/master
git diff remotes/main/master..origin/master
...
වඩා ..
?
git log origin/my_branch..
ගන්නා ලද HEAD
ඔබ අදහස් කරන දේ බොහෝ වන දේශීය ref ලෙස.
fatal: bad revision
හෝ fatal: ambiguous argument
. මට අවශ්ය වූයේ එකම ගොනුවේ වෙනස වෙනත් ශාඛාවකින් දැකීමයි, එය ඇසීමට තරම්ද? ඔව්, ඔව්. :-) git diff remotes/origin/<base branch> <current branch> -- <filename>
git 1.8.3.1 හි විශිෂ්ට ලෙස ක්රියා කරයි
ඔබ දී ඇති ශාඛාවක සිටී නම්, ඔබ එය ලුහුබඳින උඩු මහලේ ශාඛාවක් සමඟ සංසන්දනය කිරීමට අවශ්ය නම්, භාවිතා කරන්න
git diff @{upstream}
ඔබගේ උඩුමහල සකසා නොමැති නම් (පොදුවේ ගත් කල, අදහස් දැක්වීමේදී අරිජූන්ට ස්තූතියි )
git diff @{push}
මෙම පිළිතුර අනුග්රහයෙන් , සංශෝධන නියම කිරීම සඳහා වන git ප්රලේඛනය :
<branchname>@{upstream}
, උදා:master@{upstream}
,@{u}
ෙයදුම@{upstream}
සඳහා branchname (කෙටි ආකෘති පත්රය වෙත<branchname>@{u}
) විසින් සඳහන් කර ඇති ශාඛා පිහිටි ශාඛා අදහස්branchname
(සමඟ මානකරන මත ගොඩනැගීමට සකස්branch.<name>.remote
හාbranch.<name>.merge
). නැතිවූbranchname
පෙරනිමි එකක් වත්මන් එකට.
git diff @ @{upstream}
. අමතර @
දෙය නම් HEAD
, ඔබ දැන් සිටින්නේ කොතැනද, එබැවින් ඔබ HEAD
ඔබේ ශාඛාව ලුහුබඳින උඩුමහල සමඟ සංසන්දනය කරයි. ඔබ @{push}
තල්ලු කිරීමට සූදානම් කර ඇති ශාඛාව අතර වෙනස ලබා ගැනීම සඳහා ඔබට
fatal: ambiguous argument '@upstream': unknown revision or path not in the working tree
. git diff @\{upstream\}
ඒ වෙනුවට භාවිතා කිරීමට සිදු විය . 😥
git fetch
පළමුව කළ යුතුයි, එසේ නොමැතිනම් මෙය කිසිවක් නොකරයි, ප්රතිදානයක් නොපෙන්වයි; repo සම්භවයක් ඇති ගොනුවක් මකා දැමීමෙන් පරීක්ෂා කර මෙම විධානය දේශීයව ක්රියාත්මක කරයි. .. වැඩ කිරීමෙන් පසු පමණි.
මෙහි ප්රතිදානය වඩා හොඳින් මට වැටහේ:
git diff <remote-tracking branch> <local branch>
එයින් පෙන්නුම් කරන්නේ මා ප්රාදේශීය ශාඛාව තල්ලු කළහොත් අතහැර දැමිය යුතු දේ සහ එකතු කිරීමට යන්නේ කුමක්ද යන්නයි. ඇත්ත වශයෙන්ම එය ප්රතිලෝමව එක හා සමානයි, නමුත් මට වඩා කියවිය හැකි අතර සිදුවීමට යන දෙය දෙස බැලීමට මට වඩා ගැළපේ.
පහසුම ක්රමය:
git fetch
git log -p HEAD..FETCH_HEAD
මෙය පළමුව ඔබගේ පෙරනිමි දුරස්ථයෙන් (සම්භවය) වෙනස්කම් ලබා ගනී. ඔබ රෙපෝ ක්ලෝන කරන විට මෙය ස්වයංක්රීයව නිර්මාණය වේ. ඔබට ද පැහැදිලි විය හැකිය : git fetch origin master
.
ඔබගේ වර්තමාන ශාඛාව දැන් ලබාගත් ශාඛාව සමඟ සංසන්දනය කිරීමට git log භාවිතා කරයි. ( -p
(පැච් උත්පාදනය) විකල්පය යනු වෙනස්කම් පෙන්වයි .)
මම එය කරන්නේ මෙයයි.
#To update your local.
git fetch --all
මෙය දුරස්ථයෙන් සෑම දෙයක්ම ලබා ගනී, එබැවින් ඔබ වෙනස පරීක්ෂා කළ විට එය දුරස්ථ ශාඛාව සමඟ වෙනස සංසන්දනය කරනු ඇත.
#to list all branches
git branch -a
ඉහත විධානය මඟින් සියලුම ශාඛා පෙන්වනු ඇත.
#to go to the branch you want to check difference
git checkout <branch_name>
#to check on which branch you are in, use
git branch
(or)
git status
දැන් ඔබට පහත පරිදි වෙනස පරීක්ෂා කළ හැකිය.
git diff origin/<branch_name>
මෙය ඔබගේ දේශීය ශාඛාව දුරස්ථ ශාඛාව සමඟ සංසන්දනය කරනු ඇත
tl; dr :git diff <local branch> <remote branch>
කවචය මත git භාවිතා කරන විට, මම මුලින්ම වටපිට බැලීමෙන් මා නැඹුරු කර ගැනීමට කැමතියි. මෙන්න සියලුම ශාඛා පෙන්වීමට විධානයක්
$ git branch -a # (or git branch --all)
* my-branch
master
remotes/origin/some-branch
remotes/origin/HEAD -> origin/master
remotes/origin/my-branch
remotes/origin/some-other-branch
remotes/origin/master
මෙන්න, මම ශාඛා දෙකක් (ඇති my-branch
හා master
) සහ 4 දුරස්ථ ( some-branch
, some-other-branch
, master
, සහmy-branch
).
එසේම, my-branch
මා දැනට එම ශාඛාවේ සිටින බවට සං als ා කරන තරු ලකුණ ( git status
ප්රතිදානය කරන විධානය භාවිතා කිරීමෙන් ඔබ ද දැන ගනු ඇත:On branch my-branch.
.
සටහන: git bash shell හි දුරස්ථ අතු රතු පැහැයෙන් ද දේශීය ඒවා කොළ පැහැයෙන් ද දක්වා ඇත.
ඔබට දුරස්ථ ශාඛා පෙන්වීමට අවශ්ය නම් :
$ git branch -r # (or git branch --remotes)
origin/some-branch
origin/HEAD -> origin/master
origin/my-branch
origin/some-other-branch
origin/master
දේශීය ශාඛා පෙන්වීමට ඔබ භාවිතා කිරීමට පෙළඹවිය හැකි git branch -l
නමුත් එය සම්පූර්ණයෙන්ම වෙනස් විධානයකි. කිරීමට දේශීය ශාඛා පෙන්වන්න භාවිතය git branch
කිසිදු විකල්ප සමග
$ git branch
* my-branch
master
මූලික ශාඛා විකල්පයන් පිළිබඳ සමාලෝචනයක් සම්පූර්ණ --list
කිරීම සඳහා පෙරීමට ඉඩ දීම සඳහා ඔබ අපේක්ෂා කරන දෙයට පටහැනි වේ . මේ වගේ රටාවක් සමඟ එය භාවිතා කරන්න:
$ git branch --list 'my*'
* my-branch
ඔබ ද ඒකාබද්ධ කළ හැකි --list
විකල්ප සමග -a
හා -r
නමුත් ඒ අනුව ඔබගේ රටාව අනුවර්තනය වීමට (වග බලා ගන්න මතක තබා ගන්න: දුරස්ථ අතු "remotes" ආරම්භ ). උදාහරණයක්:
# this will show all branches (local & remote) that start with my
$ git branch --list 'my*' -a
* my-branch
# better: the pattern includes the remote
$ git branch --list '*my*' -a
* my-branch
remotes/origin/my-branch
ලියකියවිලි: https://git-scm.com/docs/git-branch
දැන් ඔබට පවතින සියලුම ශාඛා දෙකෙන් ඕනෑම ශාඛා දෙකක් සංසන්දනය කළ හැකිය (ඔබට ස්ථාන දෙකක් හෝ දුරස්ථ දෙකක් සංසන්දනය කළ හැකිය).
මෙන්න මම දුරස්ථය සමඟ දේශීය සංසන්දනය කරමි my-branch
, ඒවා සමමුහුර්ත කර ඇති බැවින් මට කිසිදු ප්රතිදානයක් නොලැබේ:
$ git diff my-branch remotes/origin/my-branch
සටහන: උද්ධෘත ලකුණු නොමැති ශාඛා වල සම්පූර්ණ නම් ලබා දිය යුතුය.
මම ද දේශීය සන්සන්දනය කළ හැක my-branch
දුරස්ථ කිරීමට master
. දුරස්ථය my-branch
ප්රධාන ශාඛාවට ඒකාබද්ධ කර නොමැති නිසා මෙන්න මට යම් ප්රතිදානයක් ලැබේ.
$ git diff my-branch remotes/origin/master
diff --git a/src/controllers/call.controller.js b/src/controllers/call.controller.js
index fd79b98..df3d798 100644
--- a/src/controllers/call.controller.js
+++ b/src/controllers/call.controller.js
@@ -261,7 +261,7 @@ function callController() {
/*
* Function: doCall
[ . . . ]
ඔබගේ කම්කරු ශාඛා සංවර්ධනය හා, එම නඩුව ප්රාදේශීය සංවර්ධන ශාඛාව සහ දුරස්ථ සංවර්ධන අංශය අතර වෙනස කිරීමට අවශ්ය, කාරක රීති වැනි විය යුතු වෙමු git diff remotes/origin/development..development
හෝ
git fetch origin
git diff origin/development
ඔබ භාවිතා පසුව වෙනස් ගොනු හුදෙක් නම් ලෙස වෙනස බලන්න ඕන නම්:
git diff --name-status <remote-branch> <local-branch>
,
වෙන මෙම අතු දෙක අතර සියලු වෙනස්කම් පෙන්නුම් කරනු ඇත:
git diff <remote-branch> <local-branch>
ඔබේ වර්තමාන ශාඛාව හා ඔබට අවශ්ය දෙයක් සමඟ සංසන්දනය කරන්නේ නම් මෙන්න කෙටිමං පිළිතුරකි git pull
.
git fetch
git diff FETCH_HEAD
පළමු විධානය මඟින් ඔබගේ වත්මන් ශාඛාවට අනුරූප වන්නේ කුමන දුරස්ථ ශාඛාවදැයි සොයා ගනී. එම ගණනය කිරීමේ පුරාවස්තුවක් FETCH_HEAD
. දෙවන විධානය මඟින් එම යොමුව භාවිතා කරන්නේ ඔබේ වර්තමාන ශාඛාව හා සැසඳීමෙනි.
මෙම ප්රශ්නයට දැනටමත් පිළිතුරු කිහිපයක් ඇති බව මම දනිමි, නමුත් ඒවායින් බොහොමයක් උත්සාහ කිරීමේදී මට අමුතු දෝෂයක් ඇතිවිය.
මගේ නඩුව, මම නම් දෙවන දුරස්ථ ඇති heroku
බව නොවේ ද origin
එය සමමුහුර්ත නැති නිසා මම ක්රියාත්මක කිරීමට උත්සාහ කරන විට මෙම දෝෂය විය git diff master heroku/master
:
fatal: ambiguous argument 'heroku/master': unknown revision or path not in the working tree.
හෝ වෙනත් ප්රවේශයක් උත්සාහ කිරීමේදී මෙය git diff master..heroku/master
:
fatal: bad revision 'master..heroku/master'
විසඳුම git fetch
ධාවනය වීමට පෙර දුරස්ථ නම පැහැදිලිව සඳහන් කිරීම git diff
, මගේ නඩුවේ:
$ git fetch heroku
$ git diff master heroku/master
මෙම ගැටලුව සමඟම අන් අයට උපකාර කරන බලාපොරොත්තුව.
git difftool <commit> .
මෙය ඔබගේ දේශීය ලිපිගොනු සමඟ ඔබට අවශ්ය කැපවීම සංසන්දනය කරනු ඇත. අවසානයේ තිත අමතක නොකරන්න (දේශීය සඳහා).
නිදසුනක් ලෙස, ඔබගේ දේශීය ලිපිගොනු යම් කැපවීමක් සමඟ සංසන්දනය කිරීමට:
git difftool 1db1ef2490733c1877ad0fb5e8536d2935566341.
(නව කොමිස් සමඟ සැසඳීම අවශ්ය නොවන්නේ නම් ඔබට git fetch අවශ්ය නොවේ)
උදාහරණයක්
git diff 'master' 'testlocalBranch'
ඔබ වෙබ්ස්ටෝම් වැනි සංස්කාරකය භාවිතා කරන්නේ නම්, ඔබට ගොනුව මත රයිට් ක්ලික් කර ශාඛාව සමඟ සංසන්දනය කර ඔබේ ශාඛාව ටයිප් කරන්න / තෝරන්න.
VS 2019 දී, FETCH කරන්න කේතය අදින්න එපා.
මේක තමයි මම කළේ. .Gitconfig ගොනුවේ පහත එකතු කර ඇති නිසා මට සසඳන්න එහා භාවිතා කළ හැකිය
File location: C:\Users\[username]\.gitconfig
පහත දැක්වේ
[diff]
tool = bc
[difftool "bc"]
path = c:/Program Files/Beyond Compare 4/bcomp.exe
විධාන විමසුම විවෘත කර වැඩ කරන නාමාවලියට යන්න. දේශීය DEV ශාඛාව දුරස්ථ DEV ශාඛාවට සංසන්දනය කිරීමට මම පහත දැක්වුවෙමි
git difftool dev origin/dev --dir-diff
මෙය සැසඳීමෙන් ඔබ්බට විවෘත වන අතර එකිනෙකට වෙනස් ගොනු ඇති නාමාවලි විවෘත වේ. සංසන්දනය ඉක්මවා ගිය වෙනස්කම් කිසිවක් දියත් නොකරන්නේ නම්.
මගේ ප්රධාන ශාඛාවේ යම් වෙනසක් සිදුවී ඇත්දැයි මම කල්පනා කරමි ...
git checkout master
git තත්ත්වය
git branch -a
- මාස්ටර්
දුරස්ථ / සම්භවය / මාස්ටර්
git diff සම්භවය / මාස්ටර්
මෙය තරමක් සරල ය. ඔයාට පාවිච්චි කරන්න පුළුවන්:git diff remote/my_topic_branch my_topic_branch
my_topic_branch
ඔබේ මාතෘකාව ශාඛාව කොහෙද?
උත්සාහ කරන්න:
git diff origin HEAD
වර්තමාන ප්රාදේශීය ශාඛා HEAD
මූලාරම්භයට වඩා වෙනස් කිරීමට ඔබට අවශ්ය යැයි උපකල්පනය කරන්න . ඔබ ප්රාදේශීය ශාඛාවේ සිටින බව උපකල්පනය කරන්න. :)
git config alias.udiff 'diff @{u}'
git fetch # Do this if you want to compare with the network state of upstream; if the current local state is enough, you can skip this
git udiff
මෙය ඔබගේ ශීර්ෂයේ ඇති ප්රශ්නයට පිළිතුරු සපයයි ("එහි දුරස්ථ"); ඔබට "දුරස්ථය" ට වඩා වෙනස් වීමට අවශ්ය නම් (එය ශාඛාවේ උඩුමහල ලෙස වින්යාස කර නොමැත), ඔබ එය කෙලින්ම ඉලක්ක කළ යුතුය. පහත දැක්වෙන සියලුම දුරස්ථ ශාඛා ඔබට දැකිය හැකිය:
git branch -r
පහත දැක්වෙන සියලුම වින්යාස කළ දුරස්ථ ස්ථාන ඔබට දැකිය හැකිය:
git remote show
තනි දුරස්ථ (උදා. සම්භවය) සඳහා ශාඛා / ලුහුබැඳීමේ වින්යාසය ඔබට පහත පරිදි දැකිය හැකිය:
git remote show origin
ඔබ සුදුසු මූල ශාඛාව තීරණය කළ පසු, සාමාන්ය වෙනසක් කරන්න :)
git diff [MY_LOCAL] MY_REMOTE_BRANCH
ඔබ TortoiseGit භාවිතා කරන්නේ නම් (එය Git සඳහා GUI සපයයි), ඔබට ඔබගේ Git repo ෆෝල්ඩරය දකුණු ක්ලික් කර ක්ලික් කරන්න Git Sync
.
තෝරා නොගත හොත් සංසන්දනය කිරීමට ඔබට ඔබේ ශාඛා තෝරා ගත හැකිය. වෙනස්කම් දැකීමට වඩා. Compare with previous revision
වෙනස්කම් දෙපැත්තෙන්ම බැලීමට ඔබට ඕනෑම කැපවීමක් දකුණු ක්ලික් කළ හැකිය .