์ƒˆ์†Œ์‹

IT & Security/Git & GitHub

Git Commit์˜ ๋‚ ์งœ ๋ณ€๊ฒฝ ๋ฐ ์ปค๋ฏธํ„ฐ(Committer)๋ณ€๊ฒฝํ•˜๊ธฐ | Committer

  • -
๋ฐ˜์‘ํ˜•

๋ชจ๋“  ํฌ์ŠคํŒ…์€ ๊ตฌ๋ฆ„์—๋“€ ๊ฐ•์ขŒ ์ค‘ "Git์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํ˜‘์—… ๋ฐ ์˜คํ”ˆ์†Œ์Šค ํ”„๋กœ์ ํŠธ" ์˜ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ์œผ๋ฉฐ

์ถœ์ฒ˜๋Š” ์•„๋ž˜์˜ ์ฃผ์†Œ๋กœ "๋‚˜๋™๋นˆ"๋‹˜์˜ ์ž๋ฃŒ์ž…๋‹ˆ๋‹ค. 

์ƒ์—…์ ์ธ ์˜๋„๊ฐ€ ์•„๋‹Œ ๊ณต๋ถ€ํ•œ ๊ฒƒ์„ ์ •๋ฆฌํ•ด๋†“๋Š” ๋ชฉ์ ์œผ๋กœ ํฌ์ŠคํŒ… ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

edu.goorm.io/learn/lecture/11528/git์œผ๋กœ-์‹œ์ž‘ํ•˜๋Š”-ํ˜‘์—…-๋ฐ-์˜คํ”ˆ์†Œ์Šค-ํ”„๋กœ์ ํŠธ/info

 

๊ตฌ๋ฆ„EDU - ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋งž์ถคํ˜• IT๊ต์œก

๊ตฌ๋ฆ„EDU๋Š” ๋ชจ๋‘๋ฅผ ์œ„ํ•œ ๋งž์ถคํ˜• IT๊ต์œก ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ๊ฐœ์ธ/ํ•™๊ต/๊ธฐ์—… ๋ฐ ๊ธฐ๊ด€ ๋ณ„ ์ตœ์ ํ™”๋œ IT๊ต์œก ์†”๋ฃจ์…˜์„ ๊ฒฝํ—˜ํ•ด๋ณด์„ธ์š”. ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹ค๋ฌด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ต์œก, ์ „๊ตญ ์ดˆ์ค‘๊ณ /๋Œ€ํ•™๊ต ์˜จ๋ผ์ธ ๊ฐ•์˜, ๊ธฐ์—…/

edu.goorm.io

 


# Git Commit์˜ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ๋ณ€๊ฒฝ

๊ธฐ๋ณธ์ ์œผ๋กœ ๊นƒ์€ ํŠน์ •ํ•œ ํ”„๋กœ์ ํŠธ์˜ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์–ธ์ œ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€๋ฅผ ๊ฐ์ง€ํ•ด์„œ ๊ทธ ์ด๋ ฅ์„ ์•Œ๋ ค์ค€๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

์ฆ‰ ์ปค๋ฐ‹์ด ์ง„ํ–‰๋œ ์‹œ์ ์„ ๊ธฐ์–ตํ•˜์—ฌ ๊นƒ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ ๊นƒ ์ปค๋ฐ‹ ๋‚ ์งœ๋Š” ๋ณ€๊ฒฝํ•˜๊ธฐ ์–ด๋ ต๊ฑฐ๋‚˜ ๋ชปํ•œ๋‹ค๊ณ  ์•„๋Š” ์‚ฌ๋žŒ์ด ๋งŽ์€๋ฐ, ์‹ค์ œ๋กœ๋Š” ์ด ๋‚ ์งœ ๋˜ํ•œ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

 

 

์‹ค์Šต์„ ์œ„ํ•ด ์ด์ „์‹œ๊ฐ„๊ณผ ๋™์ผํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ฃผ๊ณ , git init์„ ํ•ด์ค€๋‹ค.

(๋งŒ์•ฝ ์ด์ „์— ๋กœ๊ทธ๊ฐ€ ๋‚จ์•„์žˆ๋‹ค๋ฉด "rm -rf .git" ๋ช…๋ น์–ด๋กœ ์ง€์›Œ์ค€ ํ›„ ๋‹ค์‹œ git init๋ฅผ ํ•ด์ฃผ์–ด๋„ ๋œ๋‹ค.)

 

 

๊ทธ๋ฆฌ๊ณ  ์ƒˆ๋กœ ํ…์ŠคํŠธ ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์ค€ ๋’ค ์ปค๋ฐ‹ ์‹œ์ผœ์ค€๋‹ค.

 

๋‹ค์–‘ํ•œ ์ปค๋ฐ‹ ๋กœ๊ทธ๋“ค์„ ๋‚จ๊ธฐ๊ธฐ ์œ„ํ•ด ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์ค€ ํ›„ ๋‹ค์‹œ ์ปค๋ฐ‹์„ ์‹œ์ผœ์ค€๋‹ค.

 

์œ„์™€ ๊ฐ™์€ ์ž‘์—…์„ Example2.txt๋ผ๋Š” ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ ์‹คํ–‰์‹œ์ผœ์ฃผ๋ฉด ์ด 4๋ฒˆ์— ์ปค๋ฐ‹ ๋กœ๊ทธ๊ฐ€ ๋‚จ๊ฒŒ ๋œ๋‹ค.

 

 

git log ๋ฅผ ์ฐ์–ด๋ณด๋ฉด ์ •์ƒ์ ์œผ๋กœ 4๋ฒˆ์ด ์ถœ๋ ฅ๋œ๋‹ค.

ํ”ํžˆ commit๋œ ๋‚ ์งœ๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด 2๊ฐ€์ง€์˜ ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•œ๋‹ค.

 

1. git rebase๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•. 

 

์ˆ˜์ •ํ•˜๊ณ ์ž ํ•˜๋Š” ๋‚ด์šฉ๋งŒ ์„ ํƒํ•˜์—ฌ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์•„๋ž˜๋Š” git rebase์˜ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

lucete1230-cyberpolice.tistory.com/414

 

git rebase -i <hash value> 

์œ„ ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ˆ˜์ •ํ•˜๊ณ ์ž ํ•˜๋Š” ์ปค๋ฐ‹๋‚ด์—ญ์˜ ์˜ต์…˜์„ ๋ฐ”๊พธ์–ด ์ฃผ์ž

์ˆ˜์ •ํ•  ์ปค๋ฐ‹์€ Add Example2.txt์ด๋‹ค. ์˜ต์…˜์€ edit๋กœ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๋‹ค์Œ์œผ๋กœ๋Š” ์ƒ์„ธํ•œ ๋ณ€๊ฒฝ ๋‚ด์šฉ์„ ๊ธฐ์žฌํ•ด์ฃผ๋ฉด ๋œ๋‹ค.(10์›” 1์ผ 10์‹œ๋กœ ์„ค์ •)

์ฐธ๊ณ ๋กœ ์š”์ผ์˜ ๋Œ€ํ•œ ์ •๋ณด๋Š” ์ ์ง€ ์•Š์•„๋„ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๊ฐ€ ๋œ๋‹ค.

 

GIT_COMMITER_DATE="Oct 1 10:00:00 2019 +0000" git commit --amend --no-edit --date "Oct 1 10:00:00 2019 +0000"

amend ์˜ต์…˜์œผ๋กœ ์„ฑ๊ณต์ ์œผ๋กœ ๋‚ ์งœ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

log๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๋ณ€๊ฒฝํ•˜๊ณ ์ž ํ•˜๋Š” Add Example2.txt์˜ ๋‚ ์งœ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

amend๋ž€?

lucete1230-cyberpolice.tistory.com/407

 

์ดํ›„ rebase ๋ช…๋ น์–ด์— continue ์˜ต์…˜์„ ๋ถ™์—ฌ์„œ ๋ณ€๊ฒฝ๋œ ๋‚ด์—ญ์„ ๋ฐ˜์˜ํ•˜๊ฒ ๋‹ค๊ณ  ๋„ฃ์–ด์ฃผ๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ์™„์ „ํžˆ ๋ฐ˜์˜์ด ๋œ๋‹ค.

 

git rebase --continue

 

 

2. filter ๊ธฐ๋Šฅ ์ด์šฉํ•˜๊ธฐ

๊นƒ์—์„œ๋Š” ํ•„ํ„ฐ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค. ํ•„ํ„ฐ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๋ฉด ๋ชจ๋“  ์ปค๋ฐ‹์˜ ๋‚ด์—ญ๋“ค์„ ๋‹ค ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณด๋ฉฐ ํ•„ํ„ฐ๋ง์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋Š” ๊ฒฝ์šฐ ์˜ค๋žœ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ธฐ๋„ ํ•˜๋‹ค.

 

๋ช…๋ น์–ด๋Š” 

 

git filter-branch -f --env-filter \

 

ํ•„ํ„ฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” ์ฝ• ์ฐ์–ด์„œ ๊ทธ ๋ถ€๋ถ„๋งŒ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•„ํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•„ํ„ฐ๋ง์„ ์ˆ˜ํ–‰ํ•  ์ง€ ์ˆ˜ํ–‰ํ•  ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์“ธ ์ˆ˜ ์žˆ๋Š”๋ฐ, if ๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•ด๋‹น ์ปค๋ฐ‹ ํ•ด์‹œ๊ฐ’์„ ๋„ฃ์–ด์ฃผ๊ณ  ์กฐ๊ฑด๋ฌธ์œผ๋กœ ํ•„ํ„ฐ๋ฅผ ์ง„ํ–‰ํ•ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ

์˜์ƒ๊ณผ ๋™์ผํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•ด๋„ ๊ณ„์† ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋‚˜ ์ฐพ์•„๋ณด๊ณ  ์žˆ๋‹ค.

 

์ผ๋‹จ ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•๋„ ์žˆ๊ตฌ๋‚˜ ํ•˜๊ณ  ์˜์ƒ์„ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

youtu.be/ys0lVeTHl7c

 

์ด๋ ‡๊ฒŒ ๋ณ€๊ฒฝ๋œ ํ›„ ๋˜ ํ•œ๊ฐ€์ง€์˜ ํŠน์ง•์ด๋ผ ํ•˜๋ฉด, ๋ณ€๊ฒฝ๋œ ์‹œ์ ๋ถ€ํ„ฐ ๊ทธ ์ดํ›„์˜ ๋ชจ๋“  ์ปค๋ฐ‹์— ๋Œ€ํ•ด ํ•ด์‰ฌ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ๋‹ค๋Š” ์ ์ด๋‹ค.

 

์ด๋ฒˆ์—๋Š” ํ•„ํ„ฐ๋ง์„ ์ด์šฉํ•ด์„œ, ์ปค๋ฏธํ„ฐ ์ฆ‰ ์ปค๋ฐ‹์„ ํ•œ ์‚ฌ์šฉ์ž๋ฅผ ๋ฐ”๊พธ๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๋„๋ก ํ•˜์ž.

 

# ์ปค๋ฏธํ„ฐ ๋ฐ”๊พธ๊ธฐ

 

์ด๋ฒˆ์—๋„ ์ „์— ํ•„ํ„ฐ๋ฅผ ํ–ˆ๋˜ ๋ฐฉ์‹๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ์กฐ๊ธˆ๋” ๊ธธ๋‹ค.

๋จผ์ €  " git filter-branch -f --env-filter ' " ๋ช…๋ น์„ ์ž…๋ ฅ ํ›„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค.

OLD_EMAIL="test2@test.com"
CORRECT_NAME="ndb792"
CORRECT_EMAIL="ndb796@naver.com" 

if [ $GIT_COMMITTER_EMAIL = $OLD_EMAIL ]
then                
  export GIT_COMMITTER_NAME="$CORRECT_NAME"                                                               
  export GIT_COMMITTER_EMAIL=$"CORRECT_EMAIL"
fi
if [ $GIT_AUTHOR_EAMIL = $OLD_EMAIL ]
then                
  export GIT_AUTHOR_NAME="$CORRECT_NAME"  
  export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi'

 

๋‚˜๋™๋นˆ๋‹˜์˜ ๊ฐ•์˜๋ฅผ ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์งฐ์ง€๋งŒ, ์—๋Ÿฌ์ฒ˜๋ฆฌ๊ฐ€ ๋‚˜์„œ ์ด๋ถ€๋ถ„๋„ ๋‚˜์ค‘์— ๋”ฐ๋กœ ํฌ์ŠคํŒ… ํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค (์—๋Ÿฌํ•ด๊ฒฐ ๋ฌธ์ œ)

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ์ž‘์„ฑ์ž๊ฐ€ ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ฆ‰, ๋‘ ๊ฐ€์ง€ ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚ ์งœ, ์‹œ๊ฐ„, ์ž‘์„ฑ์ž ๋“ฑ ์ˆ˜์ •์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ github ์ฆ‰ ์›๊ฒฉ ์ €์žฅ์†Œ์—์„œ๋„ ๋ณ€๊ฒฝ์ด ์ ์šฉ๋˜๋ฉฐ, ์ด์ „ ๋…„๋„ ํ˜น์€ ์ง€๋‚œ ๋‚ ์ด๋ผ๋„ ๋ณ€๊ฒฝ์ด ์ •์ƒ์œผ๋กœ ์ ์šฉ๋˜๋‹ค.

youtu.be/ys0lVeTHl7c

 

๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜๊ธธ ๋ฐ”๋ž€๋‹ค.

๋ฐ˜์‘ํ˜•
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.