ඉතිහාසයේ එක් විශේෂිත කැපවීමක කතුවරයා වෙනස් කිරීමට මට අවශ්යය. එය අවසාන කැපවීම නොවේ.
මෙම ප්රශ්නය ගැන මම දනිමි - කැපවීමක කර්තෘ වෙනස් කරන්නේ කෙසේද?
නමුත් මම යමක් ගැන සිතමින් සිටිමි, එහිදී මම කැපවීම හෑෂ් හෝ කෙටි-හැෂ් මගින් හඳුනා ගනිමි.
ඉතිහාසයේ එක් විශේෂිත කැපවීමක කතුවරයා වෙනස් කිරීමට මට අවශ්යය. එය අවසාන කැපවීම නොවේ.
මෙම ප්රශ්නය ගැන මම දනිමි - කැපවීමක කර්තෘ වෙනස් කරන්නේ කෙසේද?
නමුත් මම යමක් ගැන සිතමින් සිටිමි, එහිදී මම කැපවීම හෑෂ් හෝ කෙටි-හැෂ් මගින් හඳුනා ගනිමි.
Answers:
ඔබ වෙනස් කිරීමට අවශ්ය කැපවීමට වඩා ඉතිහාසයේ පෙර ලක්ෂ්යයක අන්තර්ක්රියාකාරී ප්රතිප්රහාරය ( git rebase -i <earliercommit>
). Rebased කරමින් අනාචාරයේ ලැයිස්තුවේ, සිට පෙළ වෙනස් pick
කිරීමට edit
ඔබට වෙනස් කිරීමට අවශ්ය එක් හැෂ් ලබන. බැඳීම වෙනස් කිරීමට git ඔබෙන් විමසූ විට, මෙය භාවිතා කරන්න:
git commit --amend --author="Author Name <email@address.com>" --no-edit
උදාහරණයක් ලෙස, ඔබගේ ඉතිහාසය සිදු වුණොත් වේ A-B-C-D-E-F
සමග F
ලෙස HEAD
, ඔබ කතුවරයා වෙනස් කිරීමට අවශ්ය C
හා D
ඔබ බව, ...
git rebase -i B
( විධානය ක්රියාත්මක කිරීමෙන් පසු ඔබ දකින දේට උදාහරණයක් මෙහි දැක්වේgit rebase -i B
)
A
භාවිතා කරන්නgit rebase -i --root
C
හා D
සිට pick
කිරීමටedit
:wq
).C
git commit --amend --author="Author Name <email@address.com>"
git rebase --continue
D
git commit --amend --author="Author Name <email@address.com>"
නැවතත්git rebase --continue
git push -f
යාවත්කාලීන කළ කොමිස් සමඟ ඔබේ සම්භවය යාවත්කාලීන කිරීමට භාවිතා කරන්න .git rebase -i <commit>
vim
ඇත. සුරැකීමට සහ ඉවත් වීමට, Esc: wq Enter ටයිප් කරන්න. අනෙක් අතට, එය නැනෝ නම් සහ "WriteOut: ^ O" වැනි දෑ පතුලේ ඔබ දකින්නේ නම්, ඔබ ඒ වෙනුවට Ctrl + O, Enter, Ctrl + X භාවිතා කළ යුතුය.
--no-edit
විකල්පය භාවිතා කරන්න . git commit --amend --reset-author --no-edit
සංස්කාරකයක් විවෘත නොකරයි. Git 1.7.9 සිට ලබා ගත හැකිය.
git rebase -i --root
මෙම ප්රශ්නයට පිළිගත් පිළිතුර අන්තර්ක්රියාකාරී ප්රතිප්රහාරයේ පුදුමාකාර ලෙස භාවිතා කිරීමකි, නමුත් අවාසනාවකට මෙන්, පසුව ඒකාබද්ධ වූ ශාඛාවක සිටි කතුවරයා වෙනස් කිරීමට අප උත්සාහ කරන්නේ නම් එය ගැටුම් පෙන්නුම් කරයි. වඩාත් සාමාන්යයෙන් එය ක්රියාත්මක නොවේ අවුල් සහගත ඉතිහාසය හැසිරවීමේදී.
Git ඉතිහාසය නැවත ලිවීම සඳහා පරිසර විචල්යයන් සැකසීම සහ සැකසීම මත රඳා පවතින ස්ක්රිප්ට් ධාවනය කිරීම පිළිබඳව මා තුළ බියක් ඇති බැවින්, මම මෙම ලිපිය පදනම් කරගෙන නව පිළිතුරක් ලියන්නේ මෙම පිළිතුරට සමාන නමුත් වඩා සම්පූර්ණයි.
සම්බන්ධිත පිළිතුර මෙන් නොව පහත සඳහන් දෑ පරීක්ෂා කර ක්රියා කරයි. නිරාවරණයේ පැහැදිලිකම සඳහා උපකල්පනය කරන්න, 03f482d6
එය අපි කතුවරයා වෙනුවට ආදේශ කිරීමට උත්සාහ කරන 42627abe
අතර නව කතුවරයා සමඟ ඇති බැඳීමයි.
අප වෙනස් කිරීමට උත්සාහ කරන කැපවීම පරීක්ෂා කරන්න.
git checkout 03f482d6
කතෘ වෙනස් කරන්න.
git commit --amend --author "New Author Name <New Author Email>"
දැන් අපට හෑෂ් සමඟ නව බැඳීමක් තිබේ 42627abe
.
මුල් ශාඛාව පරීක්ෂා කරන්න.
පැරණි බැඳීම නව එකක් සමඟ දේශීයව ප්රතිස්ථාපනය කරන්න.
git replace 03f482d6 42627abe
ප්රතිස්ථාපනය මත පදනම්ව සියලු අනාගත කොමිස් නැවත ලියන්න.
git filter-branch -- --all
පිරිසිදුකම සඳහා ප්රතිස්ථාපනය ඉවත් කරන්න.
git replace -d 03f482d6
නව ඉතිහාසය තල්ලු කරන්න (පහත සඳහන් දෑ අසමත් වුවහොත් පමණක් භාවිතා කරන්න - සහ සනීපාරක්ෂාව පරීක්ෂා කිරීමෙන් පසුව git log
සහ / හෝ git diff
).
git push --force-with-lease
4-6 වෙනුවට ඔබට නව කැපවීමක් කළ හැකිය:
git rebase -i 42627abe
git rebase -i
. git replace
මීට පෙර කවදාවත් මේ ගැන අසා නැත . +1
--force-with-lease
වෙනුවට භාවිතා කිරීමට මම නිර්දේශ කරමි -f
. එය ආරක්ෂිතයි.
git filter-branch -- --all
මුල් කැපවීම සිදු වූ සෑම ශාඛාවකම කොමිස් වෙනස් වන බව මතක තබා ගන්න. ඔබට ප්රමාණවත් අක්තපත්ර නොමැති නම් (හෝ ඔබට වෙනත් ශාඛා ඉතිහාසය වෙනස් කිරීමට අවශ්ය නැත), මෙම පිළිතුර සමඟ ප්රවේශම් වීම හොඳය.
ගිතූබ් ප්රලේඛනයෙහි ශාඛාවක ඇති සියලුම කැපවීම් සඳහා බැඳීම් තොරතුරු ප්රතිස්ථාපනය කරන පිටපතක් අඩංගු වේ .
විචල්ය අගයන් වෙනස් කිරීමෙන් පසු පහත ස්ක්රිප්ට් පර්යන්තයෙන් ධාවනය කරන්න
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
නිවැරදි කළ ඉතිහාසය GitHub වෙත තල්ලු කරන්න:
git push --force --tags origin 'refs/heads/*'
නැතහොත් ශාඛා වල තෝරාගත් යොමු යොමු කිරීමට ඔබ කැමති නම් භාවිතා කරන්න
git push --force --tags origin 'refs/heads/develop'
clone
/ භාවිතා කිරීමෙන් වැළකී සිටියහොත් push
, ඔබ උපස්ථ නාම අවකාශයකින් අවසන් වන බව සලකන්න refs/original/
. මෙම නාම අවකාශය බුද්ධිමත්ව ඉවත් කිරීමට මට ක්රමයක් සොයාගත නොහැකි විය, එබැවින් මම ඩිරෙක්ටරිය මකා දැමීම අවසන් කළෙමි .git/refs/original
.
git push -f
වෙත තල්ලු වෙනස්කම් කිරීමට බල කළ යුතුය.
ඔබගේ විද්යුත් ලිපිනය ගෝලීයව වින්යාසයට යළි පිහිටුවන්න:
git config --global user.email example@email.com
සංස්කරණයකින් තොරව ඔබගේ කැපවීමේ කතුවරයා නැවත සකසන්න:
git commit --amend --reset-author --no-edit
It's not last commit.
ඉතින් ඔවුන් amend
එය කරන්නේ කෙසේද?
git reset HEAD~
ඔබ විසින් යෝජනා කරන ලද රේඛා ධාවනය කර, ඊළඟ කැපවීම නැවත අතින් සිදු කරන ලදී. හොඳින් වැඩ කළා!
git config --local user.name FirstName LastName
හා git config --local user.email first.last@example.com
. ඉන්පසු අවසාන කොමිස් හයට අදාළ වේ git rebase --onto HEAD~6 --exec "git commit --amend --reset-author --no-edit" HEAD~6
. අවසාන වශයෙන් එය දුරස්ථ Git repo භාවිතයෙන් තල්ලු කරන්න git push --force-with-lease
.
පහත දැක්වෙන විධානය භාවිතා කර ඔබට අවසාන කැපවීමේ කර්තෘ වෙනස් කළ හැකිය.
git commit --amend --author="Author Name <email@address.com>"
කෙසේ වෙතත්, ඔබට කර්තෘගේ නම එකකට වඩා වෙනස් කිරීමට අවශ්ය නම්, එය ටිකක් උපක්රමශීලී ය. ඔබ අන්තර්ක්රියාකාරී ප්රතිප්රහාරයක් ආරම්භ කළ යුතු අතර, කොමිස් සංස්කරණය ලෙස සලකුණු කර ඒවා එකින් එක සංශෝධනය කර අවසන් කරන්න.
සමඟ නැවත ආරම්භ කිරීම ආරම්භ කරන්න git rebase -i
. එය ඔබට මේ වගේ දෙයක් පෙන්වනු ඇත.
ඔබට කර්තෘගේ නම වෙනස් කිරීමට අවශ්ය කොමිට්ස් සඳහා pick
මූල පදය වෙනස් කරන්න edit
.
ඉන්පසු සංස්කාරකය වසා දමන්න. ආරම්භකයින් සඳහා, තට්ටු කර Escape
ටයිප් :wq
කර පහර දෙන්න Enter
.
එවිට කිසිවක් සිදු නොවූවාක් මෙන් ඔබේ පර්යන්තය ඔබට පෙනෙනු ඇත. ඇත්ත වශයෙන්ම ඔබ සිටින්නේ අන්තර්ක්රියාකාරී ප්රතිප්රහාරයක ය. ඉහත විධානය භාවිතා කර ඔබගේ කැපවීමේ කර්තෘගේ නම සංශෝධනය කිරීමට දැන් කාලය පැමිණ තිබේ. එය නැවත සංස්කාරකය විවෘත කරනු ඇත. ඉවත්ව නැවත ඉදිරියට යන්න git rebase --continue
. ඔබට සංස්කරණය කිරීමට අවශ්ය බැඳීම් ගණන සඳහා එයම නැවත කරන්න. ඔබට No rebase in progress?
පණිවිඩය ලැබුණු විට අන්තර්ක්රියාකාරී ප්රතිප්රහාරය අවසන් වූ බවට ඔබට සහතික විය හැකිය .
pick
ක්රියාවට ඉඩ දිය හැකි අතර , එක් එක් පේළියට පසුව එකතු කරන්නexec git commit --no-edit --amend --author="MyNewAuthor <my@new-auth.or>"
ඔබ සම්බන්ධ කළ ප්රශ්නයේ පිළිතුරු හොඳ පිළිතුරු වන අතර ඔබේ තත්වය ආවරණය කරයි (අනෙක් ප්රශ්නය වඩාත් පොදු වන්නේ එය නැවත නැවත ලිවීම සම්බන්ධ වන බැවිනි).
අත්හදා බැලීමට නිදහසට කරුණක් ලෙස git filter-branch
, දී ඇති කැපවීමක් සඳහා කර්තෘගේ නම සහ / හෝ කර්තෘගේ විද්යුත් ලිපිනය නැවත ලිවීමට මම පිටපතක් ලිවීය:
#!/bin/sh
#
# Change the author name and/or email of a single commit.
#
# change-author [-f] commit-to-change [branch-to-rewrite [new-name [new-email]]]
#
# If -f is supplied it is passed to "git filter-branch".
#
# If <branch-to-rewrite> is not provided or is empty HEAD will be used.
# Use "--all" or a space separated list (e.g. "master next") to rewrite
# multiple branches.
#
# If <new-name> (or <new-email>) is not provided or is empty, the normal
# user.name (user.email) Git configuration value will be used.
#
force=''
if test "x$1" = "x-f"; then
force='-f'
shift
fi
die() {
printf '%s\n' "$@"
exit 128
}
targ="$(git rev-parse --verify "$1" 2>/dev/null)" || die "$1 is not a commit"
br="${2:-HEAD}"
TARG_COMMIT="$targ"
TARG_NAME="${3-}"
TARG_EMAIL="${4-}"
export TARG_COMMIT TARG_NAME TARG_EMAIL
filt='
if test "$GIT_COMMIT" = "$TARG_COMMIT"; then
if test -n "$TARG_EMAIL"; then
GIT_AUTHOR_EMAIL="$TARG_EMAIL"
export GIT_AUTHOR_EMAIL
else
unset GIT_AUTHOR_EMAIL
fi
if test -n "$TARG_NAME"; then
GIT_AUTHOR_NAME="$TARG_NAME"
export GIT_AUTHOR_NAME
else
unset GIT_AUTHOR_NAME
fi
fi
'
git filter-branch $force --env-filter "$filt" -- $br
පෙර කැප වන්න:
සියලු කැපවීම් සඳහා කර්තෘ නිවැරදි කිරීමට ඔබට @ ඇම්බර්ගේ පිළිතුරෙන් විධානය යෙදිය හැකිය:
git commit --amend --author="Author Name <email@address.com>"
නැතහොත් ඔබේ නම සහ විද්යුත් තැපෑල නැවත භාවිතා කිරීමට ඔබට ලිවිය හැකිය:
git commit --amend --author=Eugen
විධානය අනුව කටයුතු කරන්න:
උදාහරණයක් ලෙස ආරම්භ වන සියල්ල වෙනස් කිරීමට 4025621
:
ඔබ ධාවනය කළ යුතුයි:
git rebase --onto 4025621 --exec "git commit --amend --author=Eugen" 4025621
සටහන: නමක් සහ ඊමේල් ලිපිනයක් වැනි අවකාශයන් අඩංගු කතුවරයකු ඇතුළත් කිරීමට නම්, කතුවරයා පැන ගිය උපුටා දැක්වීම් වලින් වට විය යුතුය. උදාහරණයක් වශයෙන්:
git rebase --onto 4025621 --exec "git commit --amend --author=\"Foo Bar <foo@bar.com>\"" 4025621
හෝ මෙම අන්වර්ථය මෙයට එක් කරන්න ~/.gitconfig
:
[alias]
reauthor = !bash -c 'git rebase --onto $1 --exec \"git commit --amend --author=$2\" $1' --
ඉන්පසු ධාවනය කරන්න:
git reauthor 4025621 Eugen
git shortlog -e -s
.
කිරීමට තව දුරටත් වැඩි දී Eugen Konkov පිළිතුර, root සිට ආරම්භ නසා, භාවිතා කිරීමට --root
ධජය. මෙම --no-edit
ධජය එය සමග ඔබ එක් එක් සිදු සඳහා සංස්කාරකට අදාල වී නැත ඇති නිසා, ද ප්රයෝජනවත් වේ.
git rebase --root --exec "git commit --amend --author='name <email>' --no-edit"
--interactive
, මොකද ඒක නැතිව වැඩ කළා.
--no-edit
යනු මෙය සැබවින්ම පහසු කරයි! +1
ඔබ මධ්යගත ගබඩාවක් භාවිතා කරන්නේ නම් ඇම්බර්ගේ පිළිතුරට තවත් එක් පියවරක් ඇත :
git push -f
මධ්යම නිධිය යාවත්කාලීන කිරීමට බල කිරීම.
එකම ශාඛාවක වැඩ කරන පුද්ගලයින් විශාල සංඛ්යාවක් නොසිටින බවට වග බලා ගන්න.
එසේ කරන විට git rebase -i
ලේඛනයේ මෙම සිත්ගන්නා සුළු කොටස ඇත:
ඔබ එක් බවට අනාචාරයේ දෙකක් හෝ ඊට වැඩි නමන්න කිරීමට අවශ්ය නම්, මෙම විධානය වෙනුවට
"pick"
දෙවැනි හා ඉන් පසුව අනාචාරයේ සඳහා"squash"
හෝ"fixup"
. කොමිෂන් සභාවට විවිධ කතුවරුන් සිටියේ නම්, නැමුණු බැඳීම පළමු කැපවීමේ කතුවරයාට ආරෝපණය වේ. නැමුණු බැඳීම සඳහා යෝජිත බැඳීම් පණිවිඩය නම් පළමු බැඳීමේ සහ"squash"
විධානය ඇති අයගේ බැඳීම් පණිවිඩ සංයුක්ත කිරීමයි , නමුත් විධානය සමඟ බැඳීම් පණිවිඩ ඉවත් කරයි"fixup"
.
A-B-C-D-E-F
,B
සහ D
(= 2 කොමිස්) වෙනස් කිරීමට අවශ්යය ,එවිට ඔබට කළ හැකිය:
git config user.name "Correct new name"
git config user.email "correct@new.email"
git commit --allow-empty -m "empty"
git rebase -i B^
B^
හි මවුපියන් තෝරා ගනී B
.pick
කිරීමටsquash
.කුමක් සඳහා උදාහරණය git rebase -i B^
ඔබට ලබා දෙන :
pick sha-commit-B some message
pick sha-commit-C some message
pick sha-commit-D some message
pick sha-commit-E some message
pick sha-commit-F some message
# pick sha-commit-empty1 empty
# pick sha-commit-empty2 empty
එය වෙනස් කරන්න:
# change commit B's author
pick sha-commit-empty1 empty
squash sha-commit-B some message
# leave commit C alone
pick sha-commit-C some message
# change commit D's author
pick sha-commit-empty2 empty
squash sha-commit-D some message
# leave commit E-F alone
pick sha-commit-E some message
pick sha-commit-F some message
පණිවිඩ සංස්කරණය කිරීමට එය ඔබෙන් විමසනු ඇත:
# This is a combination of 2 commits.
# The first commit's message is:
empty
# This is the 2nd commit message:
...some useful commit message there...
ඔබට පළමු පේළි කිහිපයක් ඉවත් කළ හැකිය.
පරිශීලකයා ඉක්මනින් වෙනස් කළ හැකි සහ අනෙක් අයට කිසිදු අතුරු ආබාධයක් ඇති කළ හැකි මාර්ගයක් සොයා ගන්න.
git config user.name "New User"
git config user.email "newuser@gmail.com"
git log
git rebase -i 1f1357
# change the word 'pick' to 'edit', save and exit
git commit --amend --reset-author --no-edit
git rebase --continue
git push --force-with-lease
git log
git config user.name "New User"
git config user.email "newuser@gmail.com"
git rebase -i 1f1357
# change word pick to edit, save and exit
edit 809b8f7 change code order
pick 9baaae5 add prometheus monitor kubernetes
edit 5d726c3 fix liquid escape issue
edit 3a5f98f update tags
pick 816e21c add prometheus monitor kubernetes
Stopped at 809b8f7... change code order
You can amend the commit now, with
git commit --amend
Once you are satisfied with your changes, run
git rebase --continue
refs/heads/master.
# each continue will show you an amend message
# use git commit --amend --reset-author --no-edit to comfirm
# use git rebase --skip to skip
git commit --amend --reset-author --no-edit
git rebase --continue
git commit --amend --reset-author --no-edit
...
git rebase --continue
Successfully rebased and updated refs/heads/master.
git push --force-with-lease
ඔබට වෙනස් කිරීමට අවශ්ය කැපවීම අවසාන කැපවීම නොවේ නම්, පහත පියවර අනුගමනය කරන්න. ඔබේ කැපවීම විවිධ ශාඛාවල තිබේ නම් පළමුව එම ශාඛාවට මාරු වන්න.
git checkout branch_name
ඔබට වෙනස් කිරීමට අවශ්ය කැපවීමට පෙර කැපවීම සොයාගෙන එහි හැෂ් සොයා ගන්න. ඉන්පසු rebase විධානය නිකුත් කරන්න.
git rebase -i -p hash of commit
එවිට ඔබට වෙනස් කිරීමට අවශ්ය කොමිස් සඳහා සංස්කාරකයක් විවෘත කර 'සංස්කරණය' ඇතුළත් කරනු ඇත. සුපුරුදු 'පික්' විකල්පය සමඟ අනෙක් අයව තබන්න. වෙනස් වූ පසු 'esc' යතුර ඇතුළත් කර wq! පිටවීමට.
ඉන්පසු සංශෝධන විකල්පය සමඟ git commit විධානය නිකුත් කරන්න.
git commit --amend --author = "පරිශීලක නාමය විද්යුත් තැපෑල" - no-edit
ඉන්පසු පහත විධානය නිකුත් කරන්න.
git rebase - දිගටම
දේශීය නිධිය තුළ කර්තෘ යාවත්කාලීන කළ පසු, වෙනස්කම් දුරස්ථ ගබඩාවට තල්ලු කරන්න.
මෙම ගැටළුව සඳහා කම්මැලි ප්රවේශයක් ද ඇත, විශේෂයෙන් ඔබට වෙනස් කිරීමට අවශ්ය එකකට වඩා වැඩි ගණනක් තිබේ නම්. මගේ නඩුවේදී, වැරදි කතුවරයකු සමඟ බැඳීම් කිහිපයක් සහිත නව ශාඛාවක් මා සතුව තිබුණි, එබැවින් මට උපකාරවත් වූයේ කුමක්ද:
ඔබේ මුල් ශාඛාවට යන්න:
git checkout develop
එයින් නව ශාඛාවක් සාදන්න:
git checkout -b myFeature develop
එක් බැඳීමක් ලෙස තොරතුරු නොමැතිව එය ඒකාබද්ධ කරන්න:
git merge --no-commit --squash branchWrongAuthor
ඔබට වෙනස්කම් කිරීමට අවශ්ය විය හැකිය:
git stage .
කතුවරයාගේ නම වෙනස් කර වෙනස්කම් කරන්න:
git commit --amend --author "New Author Name <New Author Email>" -m "new feature added"
ඒක තමයි, ඔබට වෙනස්කම් තල්ලු කළ හැකිය.
git push
ඔබට පසුව වැරදි කතුවරයකු සමඟ ශාඛාව මකා දැමිය හැකිය.
කැපවීමෙන් පසු කර්තෘගේ නම නැවත නම් කිරීමට පියවර
git rebase i HEAD ~ 10 (10 යනු ප්රතිස්ථාපනය සඳහා ප්රදර්ශනය කිරීමට ඇති මුළු කැපවීමයි)
If you Get anything like below
fatal: It seems that there is already a rebase-merge directory, and
I wonder if you are in the middle of another rebase. If that is the
case, please try
git rebase (--continue | --abort | --skip)
If that is not the case, please rm -fr
".git/rebase-merge"
and run me again. I am stopping in case you still have something
valuable there.
ඉන්පසු ඔබේ අවශ්යතාවය අනුව "git rebase --continue" හෝ "git rebase --abort" ටයිප් කරන්න
pick 897fe9e simplify code a little
pick abb60f9 add new feature
pick dc18f70 bugfix
දැන් ඔබට සංස්කරණය කිරීමට අවශ්ය කැපවීමට පහළින් පහත විධානය එකතු කළ යුතුය
pick 897fe9e simplify code a little
exec git commit --amend --author 'Author Name <author.name@mail.com>'
pick abb60f9 add new feature
exec git commit --amend --author 'Author Name <author.name@mail.com>'
pick dc18f70 bugfix
exec git commit --amend --author 'Author Name <author.name@mail.com>'
එය එයයි, දැන් ESC ඔබන්න ,: wq සහ ඔබ සියල්ල සූදානම්
එවිට git push සම්භවය HEAD: BRANCH NAME -f [කරුණාකර -f Force push ගැන සැලකිලිමත් වන්න]
කැමති git push -f
හෝgit push origin HEAD: dev -f
git push
විධාන උදාහරණයකින් 6 වන ස්ථානය යාවත්කාලීන කළ හැකිද?
ගෝලීය වශයෙන් ඔබේ කොමිටර් නම සහ විද්යුත් තැපෑල වෙනස් කිරීම:
$ git config --global user.name "John Doe"
$ git config --global user.email "john@doe.org"
ඔබේ ගබඩාවේ නම සහ විද්යුත් තැපෑල වෙනස් කිරීම:
$ git config user.name "John Doe"
$ git config user.email "john@doe.org"
කර්තෘගේ තොරතුරු වෙනස් කිරීම ඊළඟ කැපවීම සඳහා පමණි:
$ git commit --author="John Doe <john@doe.org>"
ඉඟිය : වෙනත් තත්වයන් සඳහා සහ වැඩිදුර තොරතුරු කියවන්න පශ්චාත් යොමුව කියවන්න .
ඔබට වෙනස් කිරීමට අවශ්ය වන්නේ අන්තිම කැපවීමේ කර්තෘ වන අතර වෙනත් කිසිවෙකු ඔබේ ගබඩාව භාවිතා නොකරන්නේ නම්, ඔබ සමඟ කළ අවසන් බැඳීම අහෝසි කළ හැකිය:
git push -f origin last_commit_hash:branch_name
ඔබගේ කැපවීමේ කර්තෘගේ නම වෙනස් කරන්න:
git commit --amend --author "type new author here"
විවෘත වන සංස්කාරකයෙන් ඉවත් වී ඔබේ කේතය නැවත තල්ලු කරන්න:
git push
ඒකාබද්ධ කිරීමේ පණිවිඩය සඳහා, rebase
අවම වශයෙන් ගිට්ලැබ් භාවිතා කිරීමෙන් මට එය සංශෝධනය කළ නොහැකි බව මට පෙනී ගියේය. එය ඒකාබද්ධ කිරීම බැඳීමක් ලෙස පෙන්වන නමුත් මට එම # ෂා වෙත නැවත පැමිණිය නොහැක. මෙම ලිපිය ප්රයෝජනවත් බව මට පෙනී ගියේය.
git checkout <sha of merge>
git commit --amend # edit message
git rebase HEAD previous_branch
මෙම කේත පේළි තුන ඒකාබද්ධ කිරීමේ පණිවිඩය (කර්තෘ වැනි) වෙනස් කිරීමේ කාර්යය ඉටු කළේය.
ඔබට මෙම විධානයන් github හි නිල පිටුවෙන් භාවිතා කළ හැකිය
https://help.github.com/en/github/using-git/changing-author-info
මෙන්න විධාන
#!/bin/sh
git filter-branch --env-filter '
OLD_EMAIL="your-old-email@example.com"
CORRECT_NAME="Your Correct Name"
CORRECT_EMAIL="your-correct-email@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
මෙහි ඔබට පැරණි විද්යුත් තැපෑල නව පරිශීලක නාමය සහ විද්යුත් තැපැල් ලිපිනය ලෙස වෙනස් කළ හැකිය.