භාවිතා කරමින් gitk log
, මට මේ දෙක අතර වෙනසක් හඳුනාගත නොහැකි විය. (Git විධානයක් හෝ යම් මෙවලමක් සමඟ) වෙනස නිරීක්ෂණය කරන්නේ කෙසේද?
භාවිතා කරමින් gitk log
, මට මේ දෙක අතර වෙනසක් හඳුනාගත නොහැකි විය. (Git විධානයක් හෝ යම් මෙවලමක් සමඟ) වෙනස නිරීක්ෂණය කරන්නේ කෙසේද?
Answers:
මෙම --no-ff
ධජය කිරීම වළක්වා git merge
ඇති "වේගයෙන් ඉදිරියට" ක්රියාත්මක සිට එය ඔබේ වත්මන් බව හඳුනාගන්නා නම් HEAD
ඔබ ඒකාබද්ධ කිරීමට උත්සාහ දරන සිදු ක පිය වේ. වේගයෙන් ඉදිරියට යාම යනු ඒකාබද්ධ කිරීමේ බැඳීමක් ගොඩනඟනවා වෙනුවට, git මඟින් ඔබේ ශාඛා දර්ශකය ඉදිරියට එන බැඳීම වෙත යොමු කිරීමයි. git pull
දේශීය වෙනස්කම් නොමැතිව එය සිදු කිරීමේදී මෙය බහුලව සිදු වේ .
කෙසේ වෙතත්, ඉඳහිට ඔබට මෙම හැසිරීම වළක්වා ගැනීමට අවශ්යය, සාමාන්යයෙන් ඔබට විශේෂිත ශාඛා ස්ථලකයක් පවත්වා ගැනීමට අවශ්ය නිසා (උදා: ඔබ මාතෘකා ශාඛාවකට ඒකාබද්ධ වන අතර ඉතිහාසය කියවීමේදී එය එසේ බව සහතික කිරීමට ඔබට අවශ්යය). ඒක කරන්න නියෝගයක්, ඔබ උරුම විය හැකි --no-ff
ධජය සහ git merge
ඇත හැම විටම වේගයෙන් ඉදිරියට වෙනුවට ඇත්තටම සකස් කිරීම.
ඒ හා සමානව, ඔබට වේගයෙන් ඉදිරියට යාම සඳහා a git pull
හෝ භාවිතා කිරීමට අවශ්ය නම් git merge
, සහ වේගයෙන් ඉදිරියට යාමට නොහැකි නම් ඔබට ඇප දීමට අවශ්ය නම්, ඔබට --ff-only
ධජය භාවිතා කළ හැකිය . මේ ආකාරයෙන් ඔබට සිතීමකින් git pull --ff-only
තොරව නිතිපතා යමක් කළ හැකි අතර, එය වැරදුනහොත් ඔබට ආපසු ගොස් ඔබට ඒකාබද්ධ කිරීමට හෝ නැවත ප්රතිස්ථාපනය කිරීමට අවශ්ය දැයි තීරණය කළ හැකිය.
gitk
නැතහොත් git log --graph
වේගයෙන් ඉදිරියට යන ඒකාබද්ධ කිරීම ඒකාබද්ධ කිරීමේ බැඳීමක් ඇති නොකළ අතර වේගයෙන් ඉදිරියට නොගිය තැනැත්තා එසේ කළේය.
--no-ff
විශේෂාංග සිට ස්වාමියා සංවර්ධනය හෝ සංවර්ධනය කිරීම සඳහා අදින්න ඉල්ලීම ඒකබද්ධ සමාන ද?
--no-ff
.
භාවිතා කිරීම පිළිබඳ පැහැදිලි පැහැදිලි කිරීමක් සහ චිත්රක නිදර්ශනයක් සහිත වෙබ් අඩවියක් මෙන්නgit merge --no-ff
:
මෙය දකින තුරු මට සම්පූර්ණයෙන්ම ගිටාර් නැති විය. භාවිතා කිරීම --no-ff
මඟින් ඉතිහාසය සමාලෝචනය කරන කෙනෙකුට ඔබ වැඩ කළ ශාඛාව පැහැදිලිව දැකගත හැකිය . (එම සබැඳිය ගිතූබ්ගේ “ජාල” දෘශ්යකරණ මෙවලම වෙත යොමු කරයි) තවද මෙහි නිදර්ශන සහිත තවත් විශිෂ්ට සඳහනක් ඇත. මෙම යොමුව පළමු එක මනාව සම්පුර්ණ කරන්නේ git ගැන අඩු දැනුමක් ඇති අය කෙරෙහි වැඩි අවධානයක් යොමු කරමිනි.
ඔබ මා හා මිස ගිට්-ගුරු නොවේ නම්, මෙහි මගේ පිළිතුර විස්තර කරන්නේ දේශීය ලිපිගොනු පද්ධතියෙන් ලිපිගොනු මකා නොදමමින් ඒවා ගොනු ගොනු මකාදැමීම හැසිරවීමයි. තවත් අළුත් තත්වයක් වන්නේ වත්මන් කේතය ලබා ගැනීමයි , එය තවමත් මග හැරීමට සමත් වේ.
මම මගේ වෙබ් අඩවියට පැකේජයක් යාවත්කාලීන කළ අතර මගේ කාර්ය ප්රවාහය බැලීමට මගේ සටහන් වෙත ආපසු යාමට සිදු විය; මෙම පිළිතුරට උදාහරණයක් එකතු කිරීම ප්රයෝජනවත් යැයි මම සිතුවෙමි.
Git විධානවල මගේ කාර්ය ප්රවාහය:
git checkout -b contact-form
(do your work on "contact-form")
git status
git commit -am "updated form in contact module"
git checkout master
git merge --no-ff contact-form
git branch -d contact-form
git push origin master
පහළ: පැහැදිලි කිරීම් ඇතුළුව සත්ය භාවිතය.
සටහන: පහත ප්රතිදානය කපා ඇත; git තරමක් වාචික ය.
$ git status
# On branch master
# Changed but not updated:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: ecc/Desktop.php
# modified: ecc/Mobile.php
# deleted: ecc/ecc-config.php
# modified: ecc/readme.txt
# modified: ecc/test.php
# deleted: passthru-adapter.igs
# deleted: shop/mickey/index.php
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# ecc/upgrade.php
# ecc/webgility-config.php
# ecc/webgility-config.php.bak
# ecc/webgility-magento.php
ඉහළින් කරුණු 3 ක් සැලකිල්ලට ගන්න:
1) ප්රතිදානයේදී ඔබට නව ලිපිගොනු එකතු කිරීම ඇතුළුව ECC පැකේජයේ උත්ශ්රේණිගත කිරීමේ වෙනස්කම් දැකිය හැකිය.
2) මෙම /ecc
වෙනසෙන් ස්වාධීනව මා මකා දැමූ ලිපිගොනු දෙකක් ( ෆෝල්ඩරයේ නැත) ද ඇති බව සැලකිල්ලට ගන්න . එම ගොනු මකාදැමීම් සමඟ පටලවා ගැනීම වෙනුවට, එම ලිපිගොනු මකාදැමීම පිළිබිඹු ecc
කිරීම සඳහා මම cleanup
පසුව වෙනත් ශාඛාවක් සාදමි.
3) මම මගේ කාර්ය ප්රවාහය අනුගමනය කළේ නැත! මම නැවත වැඩ කිරීමට උත්සාහ කරන අතරතුර මට git ගැන අමතක විය.
පහළ: git commit -am "updated ecc package"
මම සාමාන්යයෙන් සියල්ල ඇතුළත් කරනවාට වඩා , මට අවශ්ය වූයේ /ecc
ෆෝල්ඩරයේ ගොනු එක් කිරීම පමණි . එම මකාදැමූ ලිපිගොනු විශේෂයෙන් මගේ කොටසක් නොවේ git add
, නමුත් ඒවා දැනටමත් git මගින් සොයාගෙන ඇති හෙයින්, මෙම ශාඛාවේ කැපවීමෙන් ඒවා ඉවත් කිරීමට මට අවශ්යය:
$ git checkout -b ecc
$ git add ecc/*
$ git reset HEAD passthru-adapter.igs
$ git reset HEAD shop/mickey/index.php
Unstaged changes after reset:
M passthru-adapter.igs
M shop/mickey/index.php
$ git commit -m "Webgility ecc desktop connector files; integrates with Quickbooks"
$ git checkout master
D passthru-adapter.igs
D shop/mickey/index.php
Switched to branch 'master'
$ git merge --no-ff ecc
$ git branch -d ecc
Deleted branch ecc (was 98269a2).
$ git push origin master
Counting objects: 22, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (14/14), done.
Writing objects: 100% (14/14), 59.00 KiB, done.
Total 14 (delta 10), reused 0 (delta 0)
To git@github.com:me/mywebsite.git
8a0d9ec..333eff5 master -> master
මෙම ක්රියාවලිය දිනකට 10+ වතාවක් භාවිතා කර ඇති අතර, විධාන ක්රියාත්මක කිරීම සඳහා කණ්ඩායම් ස්ක්රිප්ට් ලිවීමට මම කටයුතු කර ඇත්තෙමි, එබැවින් git_update.sh <branch> <"commit message">
ඉහත පියවරයන් කිරීම සඳහා මම නිසි පරිදි පාහේ ස්ක්රිප්ට් එකක් සෑදුවෙමි. මෙන්න එම පිටපත සඳහා සාරාංශ මූලාශ්රය .
ඒ වෙනුවට git commit -am
මම නිෂ්පාදනය කරන්නේ “වෙනස් කරන ලද” ලැයිස්තුවෙන් ගොනු තෝරාගෙන git status
මෙම ස්ක්රිප්ට් එකේ අලවන්න. මෙය සිදු වූයේ මා විසින් සංස්කරණ දුසිම් ගණනක් කළ නමුත් වෙනස්කම් සමූහගත කිරීමට විවිධ ශාඛා නාම අවශ්ය වූ බැවිනි.
--no-ff
විකල්පය සමඟ ඒකාබද්ධ වූ පසු ඔබට තවමත් ශාඛාවක් ආරක්ෂිතව මකා දැමිය හැකිද ?
පැහැදිලි ඒකාබද්ධ කිරීම : නව ඒකාබද්ධ කිරීමේ බැඳීමක් නිර්මාණය කරයි. (ඔබ භාවිතා කළහොත් ඔබට ලැබෙන්නේ මෙයයි --no-ff
.)
වේගයෙන් ඉදිරියට යාම ඒකාබද්ධ කිරීම: නව බැඳීමක් ඇති නොකර වේගයෙන් ඉදිරියට යන්න:
ප්රතිස්ථාපනය : නව මූලික මට්ටමක් ඇති කිරීම:
ස්කොෂ්: සමතලා වන පරිදි (යමක්) බලයෙන් පොඩි කරන්න හෝ මිරිකා ගන්න:
මෙම --no-ff
විකල්පය වගකීම උපවාසයක් ඉදිරියට ඒකාබද්ධ සිදු නොවන බව, ඒ හැම විටම නිර්මාණය කරනු ඇත, නව සිදු වස්තුව . විශේෂාංග ශාඛා වල ඉතිහාසය පවත්වා ගැනීමට ඔබට අවශ්ය නම් මෙය යෝග්ය වේ.
ඉහත රූපයේ, වම් පැත්ත භාවිතා කිරීමෙන් පසු git ඉතිහාසයට උදාහරණයක් වන git merge --no-ff
අතර දකුණු පැත්ත git merge
ff ඒකාබද්ධ කිරීමක් කළ හැකි තැන භාවිතා කිරීම සඳහා උදාහරණයකි .
සංස්කරණය කරන්න : මෙම රූපයේ පෙර සංස්කරණයේ දැක්වෙන්නේ ඒකාබද්ධ කිරීමේ කැපවීම සඳහා තනි මාපියෙකු පමණක් බවයි. ඒකාබද්ධ කිරීමේ කොමිට් වලට "විශේෂාංග ශාඛාවේ" සහ මුල් ශාඛාවේ ඉතිහාසය පවත්වා ගැනීමට git භාවිතා කරන බහු මාපිය කොමිස් ඇත. බහු මාපිය සබැඳි කොළ පැහැයෙන් දක්වා ඇත.
මෙය පැරණි ප්රශ්නයක් වන අතර මෙය අනෙක් පෝස්ට් වල තරමක් සියුම් ලෙස සඳහන් කර ඇත, නමුත් මෙම ක්ලික් කිරීම මට කළ පැහැදිලි කිරීම නම් වේගයෙන් ඉදිරියට නොයන ඒකාබද්ධ කිරීම් සඳහා වෙනම කැපවීමක් අවශ්ය වනු ඇති බවයි .
git merge --no-ff ecc
ඔබට git log
ශාඛා මාස්ටර් සඳහා අතිරේක ඒකාබද්ධ කිරීමක් සිදු කරනු ඇත . මාස්ටර් විසින් ec ජු මුතුන් මිත්තෙකු වෙත යොමු වන්නේ නම් එය තාක්ෂණිකව අවශ්ය නොවේ. නමුත් --no-ff විකල්පය සඳහන් කිරීමෙන් ඔබ එම ඒකාබද්ධ කිරීමේ බැඳීම නිර්මාණය කිරීමට බල කරයි. එහි මාතෘකාව ඇත:Merge branch 'ecc'