Answers:
git branch --merged master
ශාඛා මාස්ටර් සමඟ ඒකාබද්ධ කරන ලදි
git branch --merged
HEAD සමඟ ඒකාබද්ධ කරන ලද ශාඛා ලැයිස්තුගත කරයි (එනම් වත්මන් ශාඛාවේ අග)
git branch --no-merged
ඒකාබද්ධ නොකළ ශාඛා ලැයිස්තුගත කරයි
පෙරනිමියෙන් මෙය අදාළ වන්නේ දේශීය ශාඛාවලට පමණි. මෙම -a
ධජය යන දෙකම දේශීය හා දුරස්ථ ශාඛා පෙන්වනු ඇත, සහ -r
ධජය දර්ශන දුරස්ථ ශාඛා පමණි.
git branch -a --merged/no-merged
මෙම ක්රියාවලියේදී දේශීය ෙසොයා ගැනීෙම් ශාඛාවක් නිර්මාණය ෙකොට, පෙනෙන පරිදි, ද වැඩ කරයි.
git branch -r --merged/--no-merged
දුරස්ථ ශාඛා පමණක් සොයා ගැනීම සඳහා ය.
--merged/--no-merged
පසු විකල්ප බැඳීම් තර්කයක් ගන්නා බව සලකන්න . අවම වශයෙන් මගේ git (1.9.1) අනුවාදයේ, -a
හෝ -r
ධජය එකතු කිරීමෙන් පසුව මට මාරාන්තික දෝෂයක් ඇතිවේ . -a
හෝ ඊට -r
පෙර එකතු කරන්න --(no-)merged
.
git merge-base
ශාඛා දෙක අතර නවතම පොදු බැඳීම සොයා ගැනීමට ඔබට විධානය භාවිතා කළ හැකිය . එම කැපවීම ඔබේ ශාඛා ප්රධානියාට සමාන නම්, ශාඛාව සම්පූර්ණයෙන්ම ඒකාබද්ධ වී ඇත.
git branch -d
මේ වන විටත් මෙවැනි දේ කරන බව සලකන්න, මන්දයත් දැනටමත් සම්පුර්ණයෙන්ම ඒකාබද්ධ වී නොමැති ශාඛාවක් මකා දැමීම ප්රතික්ෂේප කරනු ඇත.
git branch -d
වත්මන් ශාඛාවට ඒකාබද්ධ නොකළ ශාඛාවක් මකා දැමීම ප්රතික්ෂේප කරනු ඇත. වත්මන් ශාඛාව මකා නොදමයි .
චිත්රක අතුරුමුහුණත් විසඳුමක් ද ඇත. ටයිප් කරන්න
gitk --all
නව යෙදුම් කවුළුවක් මඟින් ඔබේ මුළු ගබඩාවේ චිත්රමය නිරූපණයක් ලබා දෙනු ඇත, එහිදී ශාඛාවක් දැනටමත් ඒකාබද්ධ වී තිබේද නැද්ද යන්න වටහා ගැනීම ඉතා පහසුය
git
සේවාදායකයාගේ කොටසක් නොවන යෙදුමක් ස්ථාපනය කිරීම අවශ්ය වේ . උබුන්ටු මත , apt-get install gitk
.
brew install git-gui
, ලබා ගැනීමට gitk
ඇති commandline මත.
මම පහත දැක්වෙන bash ශ්රිතය භාවිතා කරමි: git-is-merged develop feature/new-feature
git-is-merged () {
merge_destination_branch=$1
merge_source_branch=$2
merge_base=$(git merge-base $merge_destination_branch $merge_source_branch)
merge_source_current_commit=$(git rev-parse $merge_source_branch)
if [[ $merge_base = $merge_source_current_commit ]]
then
echo $merge_source_branch is merged into $merge_destination_branch
return 0
else
echo $merge_source_branch is not merged into $merge_destination_branch
return 1
fi
}
භාවිතා කරන්න git merge-base <commit> <commit>
.
මෙම විධානය මඟින් කොමිට් දෙකක් අතර හොඳම පොදු මුතුන් මිත්තන් (ය) සොයා ගනී. පොදු මුතුන් මිත්තෙකු “ශාඛාවක” අවසාන කැපවීමට සමාන නම්, “ශාඛාවක්” දැනටමත් ස්වාමියා සමඟ ඒකාබද්ධ වී ඇතැයි අපට ආරක්ෂිතව උපකල්පනය කළ හැකිය.
මෙන්න පියවර
git merge-base <commit-hash-step1> <commit-hash-step2>
. Git merge-base පිළිබඳ වැඩි විස්තර https://git-scm.com/docs/git-merge-base .
master
ඒකාබද්ධ වී ඇත්දැයි මෙය ඔබට නොකියනු ඇත branch
, පසුව තවත් කොමිස් 4 ක් එකතු කරන ලදි branch
.
git log -1 $(git merge-base base-branch feature-branch)
සහ ඔබ feature-branch
ප්රතිදානයේ දැක්කොත් , ඔබ දන්නවා ඒවා ඒකාබද්ධ වී ඇති බව?
කුමන ශාඛා මාස්ටර් සමඟ ඒකාබද්ධ වී ඇත්දැයි තහවුරු කර ගැනීම සඳහා ඔබ මෙම විධානයන් භාවිතා කළ යුතුය:
git branch <flag[-r/-a/none]> --merged master
සියලුම ශාඛා ලැයිස්තුව ස්වාමියාට ඒකාබද්ධ කරන ලදි.git branch <flag[-r/-a/none]> --merged master | wc -l
ස්වාමියා සමඟ ඒකාබද්ධ කරන ලද සියලුම ශාඛා ගණන.කොඩි යනු:
-a
ධජය - (සියල්ල) දුරස්ථ හා දේශීය ශාඛා පෙන්වයි-r
ධජය - (දුරස්ථ) දුරස්ථ ශාඛා පමණක් පෙන්වයි<emptyFlag>
- දේශීය ශාඛා පමණක් පෙන්වයිඋදාහරණයක් ලෙස: git branch -r --merged master
මාස්ටර් සමඟ ඒකාබද්ධ කළ සියලුම දුරස්ථ ගබඩාවන් ඔබට පෙන්වනු ඇත.
දුරස්ථ ශාඛා පිරිසිදු කිරීමේ මාතෘකාව මත
git branch -r | xargs -t -n 1 git branch -r --contains
මෙය එක් එක් දුරස්ථ ශාඛා ලැයිස්තුගත කර ඇති අතර ඒවායේ නවතම SHAs දුරස්ථ ශාඛා ඇත.
කුමන දුරස්ථ ශාඛා ඒකාබද්ධ කර ඇති නමුත් මකා නොදැමූ ඒවා ඒකාබද්ධ වී නැති අතර ඒවා දිරාපත් වෙමින් තිබේද යන්න වටහා ගැනීමට මෙය ප්රයෝජනවත් වේ.
ඔබ 'ටිග්' භාවිතා කරන්නේ නම් (එය gitk වැනි නමුත් පර්යන්තය පදනම් කරගත්) එවිට ඔබට හැකිය
tig origin/feature/someones-decaying-feature
පිටවීමකින් තොරව ශාඛාවක බැඳීම් ඉතිහාසය බැලීමට
විශේෂාංග ශාඛා සඳහා පොදු අවස්ථාවක් වන ශාඛාවක් ඒකාබද්ධ වී ඇත්දැයි සොයා බැලීමට අවශ්ය වූ විට මගේ ශිල්පීය ක්රම මෙන්න.
මෙම ප්රවේශයන් දෙකම මෝඩ සාක්ෂි නොවේ, නමුත් මම ඒවා බොහෝ වාරයක් ප්රයෝජනවත් බව සොයාගෙන ඇත.
Gitk හෝ TortoiseGit වැනි දෘශ්ය මෙවලමක් භාවිතා කිරීම, හෝ --all සමඟ සරලව git log, ඉතිහාසය හරහා ගොස් ප්රධාන ශාඛාවට සියලු ඒකාබද්ධ කිරීම් දැක ගත හැකිය. මෙම විශේෂාංග ශාඛාව ඒකාබද්ධ වී තිබේද නැද්ද යන්න ඔබට හඳුනාගත හැකිය.
ඔබ විශේෂාංග ශාඛාවකට ඒකාබද්ධ වන විට සෑම විටම දේශීය හා දුරස්ථ ශාඛාව ඉවත් කිරීමේ හොඳ පුරුද්දක් තිබේ නම්, ඔබට සරලවම ඔබේ අනෙක් පරිගණකයේ දුරස්ථ යාවත්කාලීන කර කප්පාදු කළ හැකි අතර විශේෂාංග ශාඛා අතුරුදහන් වනු ඇත.
මෙය සිදු කිරීම මතක තබා ගැනීමට, මම දැනටමත් git flow දිගු (AVH සංස්කරණය) භාවිතා කරමි ගැනීම සඳහා, මගේ විශේෂාංග ශාඛා දේශීයව නිර්මාණය කිරීම හා ඒකාබද්ධ කිරීම සඳහා කරමි, එබැවින් දුරස්ථ ශාඛාව ස්වයංක්රීයව ඉවත් කිරීමට මට අවශ්ය දැයි මගෙන් විමසීමට මම පහත දැක්වෙන git flow කොක්ක එකතු කළෙමි.
උදාහරණ ශාඛාව නිර්මාණය / නිම කිරීම
554 Andreas:MyRepo(develop)$ git flow start tmp
Switched to a new branch 'feature/tmp'
Summary of actions:
- A new branch 'feature/tmp' was created, based on 'develop'
- You are now on branch 'feature/tmp'
Now, start committing on your feature. When done, use:
git flow feature finish tmp
555 Andreas:MyRepo(feature/tmp)$ git flow finish
Switched to branch 'develop'
Your branch is up-to-date with 'if/develop'.
Already up-to-date.
[post-flow-feature-finish] Delete remote branch? (Y/n)
Deleting remote branch: origin/feature/tmp.
Deleted branch feature/tmp (was 02a3356).
Summary of actions:
- The feature branch 'feature/tmp' was merged into 'develop'
- Feature branch 'feature/tmp' has been locally deleted
- You are now on branch 'develop'
556 Andreas:ScDesktop (develop)$
.git / කොකු / පශ්චාත් ප්රවාහ-විශේෂාංග-නිමාව
NAME=$1
ORIGIN=$2
BRANCH=$3
# Delete remote branch
# Allows us to read user input below, assigns stdin to keyboard
exec < /dev/tty
while true; do
read -p "[post-flow-feature-finish] Delete remote branch? (Y/n) " yn
if [ "$yn" = "" ]; then
yn='Y'
fi
case $yn in
[Yy] )
echo -e "\e[31mDeleting remote branch: $2/$3.\e[0m" || exit "$?"
git push $2 :$3;
break;;
[Nn] )
echo -e "\e[32mKeeping remote branch.\e[0m" || exit "$?"
break;;
* ) echo "Please answer y or n for yes or no.";;
esac
done
# Stop reading user input (close STDIN)
exec <&-
exit 0
ඔබ සෑම විටම දුරස්ථ ශාඛාව ඉවත් නොකරන්නේ නම්, ශාඛාව ඒකාබද්ධ වී තිබේද නැද්ද යන්න තීරණය කිරීම සඳහා ඔබට තවමත් ඒ හා සමාන කොමිස් සෙවිය හැකිය. මෙහි ඇති අවාසිය නම් දුරස්ථ ශාඛාව හඳුනාගත නොහැකි ලෙස නැවත සකස් කර ඇත්නම්, එනම් කොටු කිරීම හෝ කැපවීමේ පණිවිඩ වෙනස් කිරීම ය.
ප්රධාන ශාඛාවේ උදාහරණ විධාන:
gru
gls origin/feature/foo
glf "my message"
මගේ bash .profile config
alias gru='git remote update -p'
alias glf=findCommitByMessage
findCommitByMessage() {
git log -i --grep="$1"
}
git log --all --color --graph --decorate --topo-order --date=relative --abbrev-commit --pretty=format:"%C(green)%h %C(red bold)[%<(14)%ad] %Creset%s%Cred%d%C(blue) [%an]"
git log
ඔබට එක් --merges
කළ හැක්කේ ඒකාබද්ධ කිරීමේ කොමිස් පෙන්වීමට පමණි. stackoverflow.com/a/25986615/134761
ඔබගේ වර්තමාන ශාඛාව දුරස්ථ සම්භවයක් / ප්රධාන ශාඛාවක දත්ත වලින් බැහැරව තිබේද යන්න ඔබට දැනුම් දෙන කුඩා එක් ලයිනර් මෙන්න:
$ git fetch && git branch -r --merged | grep -q origin/master && echo Incorporates origin/master || echo Out of date from origin/master
විශේෂාංග ශාඛාවක වැඩ කරන විට සහ මගේම වෙනම වැඩකරන ශාඛාවකට ඇතුළත් කර ඇති නවතම කාර්යයන් මා සතුව ඇති බව තහවුරු කර ගැනීමට නිතරම අවශ්ය වන විට මට මෙම ප්රශ්නය හමු විය.
මෙම පරීක්ෂණය සාමාන්යකරණය කිරීම සඳහා මම පහත දැක්වෙන අන්වර්ථය මගේ ~ / .gitconfig වෙත එක් කර ඇත:
[alias]
current = !git branch -r --merged | grep -q $1 && echo Incorporates $1 || echo Out of date from $1 && :
එවිට මට ඇමතිය හැකිය:
$ git current origin/master
මම වත්මන් දැයි පරීක්ෂා කිරීමට.
git branch --merged
පසුව දේශීය හා දුරස්ථ ශාඛා මකා දැමුවෙමි.