Git ¸í·É¿¡ ´ëÇÑ ÆÁÀÌ´Ù. * ±âº»ÀûÀÎ Ä¿¹Ô°ú ÆÄÀÏ ¿Ã¸®±â git pull --rebase origin master
//Àüü ¼öÁ¤µÈ ÆÄÀÏ ¿Ã¸®±â git add . git commit -m "git test" git push * ¸®¸ðÆ® ºê·£Ä¡ È®ÀÎ //µî·ÏµÈ ¸®¸ðÆ® ÀúÀå¼Ò È®ÀÎ
$ git remote origin //-v ¿É¼ÇÀ¸·Î µî·ÏµÈ À̸§°ú ÁÖ¼Ò¸¦ È®ÀÎÇÒ¼ö ÀÖ´Ù. $ git remote -v origin https://github.com/myon/javaWeb.git (fetch) origin https://github.com/myon/javaWeb.git (push) //·ÎÄà ºê·£Ä¡ ¸ñ·Ï Á¶È¸ $ git branch * main //¸®¸ðÆ® ºê·£Ä¡ ¸ñ·Ï Á¶È¸ $ git branch -r origin/main //¸ðµç ºê·£Ä¡ ¸ñ·Ï Á¶È¸ $ git branch -a * main remotes/origin/main * pull --reabase Ãæµ¹½Ã ÇØ°á¹æ¹ý git pull --rebase origin master
test.cpp ÆÄÀÏ conflict ¹ß»ý ¹®Á¦ ÆÄÀÏ ¼öÁ¤ÈÄ git add test.cpp git rebase --continue * ¿ø°ÝÀúÀå¼Ò¿¡ ºê·£Ä¡ »ý¼º //master ºê·£Ä¡¿¡¼ child ºê·£Ä¡¸¦ »õ·Î »ý¼ºÇÑ´Ù
//¶Ç´Â ´ÙÀ½°ú °°ÀÌ ÇÒ¼öµµ ÀÖ´Ù = git checkout -b child git branch child master //¿ø°ÝÀúÀå¼Ò¿¡ Àû¿ë git push origin child //child ºê·£Ä¡·Î À̵¿ git checkout child //push/pull ¸í·É½Ã ¿ø°Ý ÀúÀå¼ÒÀÇ child ºê·£Ä¡¸¦ ÀÚµ¿ ÁöÁ¤Çϵµ·Ï ¼³Á¤ÇÑ´Ù. git branch -u origin/child -u ¸í·ÉÀº --set-upstream-to ¸í·É°ú µ¿ÀÏÇÏ´Ù ·ÎÄà branch°¡ ¾î¶² ¿ø°Ý ºê·£Ä¡¿Í ¿¬°á µÇ¾î ÀÖ´ÂÁö º¼·Á¸é "git branch -vv" ¸í·ÉÀ» »ç¿ëÇÏ¸é µÈ´Ù. -vv ¿É¼ÇÀ¸·Î child°¡ ¾î¶² ¸®¸ðÆ® ºê·£Ä¡¸¦ ÀÚµ¿À¸·Î Âü°í ÇÏ´ÂÁö È®ÀÎÇغ¸ÀÚ. git branch -u »ç¿ë Àü child 2bfebc1 first * master 2bfebc1 [origin/master] first git branch -u »ç¿ë ÈÄ * child 2bfebc1 [origin/child] first master 2bfebc1 [origin/master] first * ¿ø°ÝÀúÀå¼Ò ºê·£Ä¡ »èÁ¦ //·ÎÄà child ºê·£Ä¡ »èÁ¦, Ä¿¹ÔÀÌ ³²¾Æ ÀÖ´Ù¸é -D ¿É¼ÇÀ¸·Î °Á¦ »èÁ¦¸¦ ÇÑ´Ù.
git branch -d child //¿ø°ÝÀúÀå¼Ò child ºê·£Ä¡ »èÁ¦ git push origin -d child * unstaged ÆÄÀÏÀ» head ³»¿ëÀ¸·Î µÇµ¹¸®±â (svn revert ¸í·É¾î¿Í µ¿ÀÏ) //ÀÛ¾÷ÁßÀÎ ³»¿ëÀº ³¯¶ó°¡¸ç º¹±¸´Â ºÒ°¡´ÉÇÏ´Ù
git checkout -- filenmae //¸ðµç ÆÄÀÏ°ú Æú´õ¸¦ µÇµ¹¸°´Ù. git checkout -- . //"--" ¸í·ÉÀ» »ý·«ÇÏ°í ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ¼ö ÀÖ´Ù. git checkout filenmae git checkout . * ·ÎÄà ÀÛ¾÷ µð·ºÅ丮¿¡¼ Ä¿¹Ô Ãë¼Ò, Ä¿¹Ô ³»¿ëµµ °°ÀÌ Ãë¼Ò //¸¶Áö¸· Çìµå Ä¿¹Ô Ãë¼Ò
git reset --hard HEAD^ //¸¶Áö¸· Çìµå Ä¿¹Ô Ãë¼Ò, À§¿Í µ¿ÀÏ git reset --hard HEAD~1 //¸¶Áö¸· Çìµå Ä¿¹Ô 3°³ Ãë¼Ò git reset --hard HEAD~3 * untracked ÆÄÀÏ Á¦°Å git clean -fd
//À§¿Í µ¿ÀÏÇÑ ¸í·É git clean -f -d -f: ÆÄÀÏ Á¦°Å -d: µð·ºÅ丮 Á¦°Å -x: .gitignore ¸ñ·Ï¿¡ ÀÖ´Â ÆÄÀÏ Á¦°Å * ·ÎÄÿ¡¼ push ¾ÈµÈ ¸¶Áö¸· commit ³»¿ë ¼öÁ¤ ÄܼÖâ¿¡¼ ÀÔ·ÂÇÏ´Â ÄÄ¸Çµå ¹æ½Ä°ú git gui·Î »ç¿ëÇÏ´Â ¹æ½Ä µÎ°¡Áö¸¦ ¾Ë¾Æ º»´Ù.
- ÄÄ¸Çµå ¹æ½Ä ¼öÁ¤µÈ ³»¿ë addÇÏ°í commit --amendÇÑ´Ù > git add main.c > git commit --amend - git gui ¹æ½Ä ¿À¸¥ÂÊ ¾Æ·¡ "Amend Last Commit" üũ ¹Ú½º¸¦ ¼±ÅÃÇÏ°í "Unstaged Changes" ºä¿¡¼ Ãß°¡ÇÒ Ä¿¹Ô ÆÄÀÏÀ» ¼±ÅÃÈÄ "Commit" ¹öÆ°À» ´©¸¥´Ù. * git cherry-pickÀ¸·Î ƯÁ¤ Ä¿¹Ô °¡Á®¿À±â °³¹ß ºê·£Ä¡ÀÇ Æ¯Á¤ Ä¿¹ÔÀ» ¸¶½ºÅÍ·Î º´ÇÕÇØ º¸ÀÚ. // °³¹ß ºê·£Ä¡¿¡¼ Çؽ¬ È®ÀÎÀ» À§ÇØ Ä¿¹Ô ·Î±×¸¦ ÇÑÁÙ·Î º»´Ù.
$ git log --pretty=oneline // ¸¶½ºÆ® ºê·£Ä¡·Î º¯°æÇÑ´Ù. $ git checkout master // °³¹ß ºê·£Ä¡ÀÇ a775840 Çؽ¬¸¦ ¸¶½ºÅÍ·Î °¡Á®¿Â´Ù. $ git cherry-pick a775840 git cherry-pickÀº Ä¿¹ÔÀ» °¡Á®¿Â´Ù°í Ç¥ÇöÇßÁö¸¸ ¾ö¹ÐÇÏ°Ô ¸»ÇÏ¸é °¡Á®¿Ã Ä¿¹ÔÀ» »õ·Î ¸¸µé¾î¼ ÇöÀç ºê·£Ä¡¿¡ »õ·Î¿î Ä¿¹ÔÀ» Ãß°¡ÇÑ´Ù. °³¹ß Ä¿¹Ô ID(Çؽ¬)¿Í ¸¶½ºÅÍ Ä¿¹Ô ID°¡ ´Ù¸£´Ù. Áï, »õ·Î¿î Ä¿¹ÔÀ» Çϴ°Ͱú °°´Ù. * git cherry-pickÀ¸·Î ¿©·¯°³ÀÇ Çؽ¬ ü¸®ÇÈ Çϱâ //°ø¹éÀ» ÁÖ°í Çؽ¬¸¦ Ãß°¡ÇÑ´Ù
$ git cherry-pick a775840 ab36a56 //cherry-pickÀ» °è¼ÓÇÑ´Ù. git cherry-pick --continue //cherry-pick ÀÛ¾÷À» Áß´ÜÇÏ°í ÀÌÀü ü¸®ÇÈ ÀÛ¾÷µµ Ãë¼Ò°¡ µÈ´Ù. git cherry-pick --abort ÂüÁ¶) https://ardalis.com/clean-up-unused-git-branches https://www.previousnext.com.au/blog/intro-cherry-picking-git git rebase, cherry-pick, merge https://www.tuwlab.com/ece/22218 ¼öÁ¤ÇÑ°Í µÇµ¹¸®±â http://hochulshin.com/git-revert-changes/ ¸®º£À̽º http://blog.appkr.kr/work-n-play/git-rebase/ |