Bibi's DevLog ๐ค๐
[์ง์ฅ์์ ์จ Git] 3. ๋ธ๋์น - ์๋ฆฌ, branch, merge, checkout, fast-forward, Auto-merging&CONFLICT, stash, reset ๋ณธ๋ฌธ
[์ง์ฅ์์ ์จ Git] 3. ๋ธ๋์น - ์๋ฆฌ, branch, merge, checkout, fast-forward, Auto-merging&CONFLICT, stash, reset
๋น๋น bibi 2021. 2. 9. 00:133. ๊น๊ณผ ๋ธ๋์น
3.1 ๋ธ๋์น๋?
๋ธ๋์น branch
: ๋ฒ์ ๊ด๋ฆฌ ์์คํ
์์, ์ฌ๋ฌ ๊ฐ๋๋ก ํผ์ง๋ ๋ฐ์ดํฐ ํ๋ฆ์ ๊ฐ๋ฆฌํค๋ ๋ง.
(๋๋ญ๊ฐ์ง - ๋๋ฌด๊ฐ ๊ฐ์ง์์ ์ค๊ธฐ๋ฅผ ๋ป๋ ๋ชจ์์ฒ๋ผ.)
๋ธ๋์น์ ๋์์๋ฆฌ
- ๊น์ผ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ฅผ ์์ํ๋ฉด ๊ธฐ๋ณธ ๋ธ๋์น์ธ main๋ธ๋์น๊ฐ ๋ง๋ค์ด์ง๋ค.
- main๋ธ๋์น = (๊ตฌ) master๋ธ๋์น.
- HEAD๋ ํ์ฌ ์์
์ค์ธ ๋ธ๋์น๋ฅผ ๋ปํ๋ค.
HEAD -> master
: ํ์ฌ ์์ ์ค์ธ ๋ธ๋์น๊ฐ master๋ธ๋์น์์ ๋ปํจ
- *๋ธ๋์น๋ ์ปค๋ฐ์ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ด๋ค.
์ฌ์ฉ์๊ฐ ์ปค๋ฐํ ๋๋ง๋ค main๋ธ๋์น๋ ์ต์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํจ๋ค. *
ํฌ์ธํฐpointer : (ํ๋ก๊ทธ๋๋ฐ) ๋ค๋ฅธ ๋ณ์(์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์ฃผ์)๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ณ์๋ฅผ ๋ปํจ.
๊ฐ์ ์ฐธ์กฐ - ๊ฐ์ ์ง์ ์ฐ๋ ๊ฒ ์๋ ํน์ ๋ฉ๋ชจ๋ฆฌ๋ฒ์ง์ ๊ฐ์ ์ฝ์ด์ ์ฐ๋๋ก ํ๋ ๊ฒ.
ํฌ์ธํฐ๋ ์๋ก ๋ค๋ฅธ ํจ์ ๋ด์ ๋ณ์๋ฅผ, ์ฃผ์๋ฅผ ํตํด ์ ์ดํ ์ ์๊ฒ ํ๋ค.
*๋ถ๊ธฐ(branch) *
: main๋ธ๋์น์์ ๋ป์ด๋์ค๋ ์ ๋ธ๋์น๋ฅผ ๋ง๋๋ ๊ฒ.
- ์ ๋ธ๋์น๋ฅผ ๋ง๋ค๋ฉด, ๊ธฐ์กด ํ์ผ ๋ด์ฉ์ main๋ธ๋์น์ ์ ์งํ๋ฉด์
๊ธฐ์กด ํ์ผ์ ์์ ํ๊ฑฐ๋ ์๋ก์ด ํ์ผ์ ์ถ๊ฐํ ์ ์๋ค.
*๋ณํฉ(merge, ๋จธ์ง) *
: ๋ถ๊ธฐํ๋ ๋ธ๋์น๋ฅผ main๋ธ๋์น์ ํฉ์น๋ ๊ฒ.
- ์ ๋ธ๋์น์์ ์ํ๋ ์์ ์ ๋๋ธ ํ, ์ ๋ธ๋์น์ ํ์ผ์ main๋ธ๋์น์ ํฉ์น๋ค.
3.2 ๋ธ๋์น ๋ง๋ค๊ธฐ / ํ์ธํ๊ธฐ (branch)
git branch
: ๋ธ๋์น๋ฅผ ํ์ธํ๋ ๋ช ๋ น์ด.- ํ์ฌ ์ฌ์ฉ ์ค์ธ ๋ธ๋์น์
*
๊ฐ ํ์๋๋ค. - ์๋ฌด ๋ธ๋์น๋ ์์ฑํ์ง ์์๋ค๋ฉด
master
๋ง ์กฐํ๋๋ค.
- ํ์ฌ ์ฌ์ฉ ์ค์ธ ๋ธ๋์น์
git branch ๋ธ๋์น๋ช
: ํ์ฌ ๋ธ๋์น์์ ํด๋น ์ด๋ฆ์ ๊ฐ์ง ๋ธ๋์น๋ฅผ ์์ฑํ๋ ๋ช ๋ น์ด.git branch apple
:apple
์ด๋ผ๋ ๋ธ๋์น๋ฅผ ์์ฑํ๋ค.- ์์ฑ ํ
git log
:(HEAD -> master, apple)
master, apple
: ๋ธ๋์น๊ฐ master์ apple์ด ์๋ค.HEAD -> master
: ํ์ฌ master๋ธ๋์น์์ ์์ ์ค์ด๋ค.
rnala@DESKTOP-SL978IQ MINGW64 ~/manual (master)
$ git log
commit 80e828572041dac3ffbf45d66e8aa59c8639cfbe (HEAD -> master, ms, google, apple)
Author: Haina <bibi6666667@kakao.com>
Date: Mon Feb 8 23:51:16 2021 +0900
work3
- master, ms, goolge, apple ๋ธ๋์น๊ฐ
work3
์ปค๋ฐ ์ํ์์ ๋ง๋ค์ด์ก๋ค.
(master, ms, google, apple๋ธ๋์น์์๋ ์ต์ ์ปค๋ฐ์ดwork3
์ด๋ค)
rnala@DESKTOP-SL978IQ MINGW64 ~/manual (master)
$ git log --oneline
dffeb82 (HEAD -> master) master content 4
80e8285 (ms, google, apple) work3
9c6f763 work2
4353937 work1
HEAD -> master
: ํ์ฌ ๋ธ๋์น๋ master์ด๋คdffeb82 (HEAD -> master) master content 4
: master๋ธ๋์น์ ์ต์ ์ปค๋ฐ80e8285 (ms, google, apple) work3
: ms, google, apple๋ธ๋์น์ ์ต์ ์ปค๋ฐ
๋ธ๋์น ์ฌ์ด ์ด๋ํ๊ธฐ (checkout)
์ฌ๋ฌ ๋ธ๋์น ์ฌ์ด๋ฅผ ์ค๊ฐ๋ฉด์ ์์ ํ ์ ์๋ค.
git checkout ๋ธ๋์น๋ช
: ํ์ฌ ๋ธ๋์น์์ ํด๋น ๋ธ๋์น๋ก ์ด๋.- apple๋ธ๋์น๋ก ์ด๋ :
git checkout apple
= apple๋ธ๋์น๋ก ์ฒดํฌ์์.
- apple๋ธ๋์น๋ก ์ด๋ :
rnala@DESKTOP-SL978IQ MINGW64 ~/manual (apple)
$ git log --oneline
80e8285 (HEAD -> apple, ms, google) work3
9c6f763 work2
4353937 work1
(HEAD -> apple, ...)
: ํ์ฌ apple๋ธ๋์น๋ฅผ ์ฌ์ฉ ์ค์ด๋ค.- apple๋ธ๋์น ๋ถ๊ธฐ ์ ๊น์ง master๋ธ๋์น์ ์๋ ์ปค๋ฐ๋ค์ ๊ทธ๋๋ก apple๋ธ๋์น์ ๋ณต์ฌ๋์๋ค.
3.3 ๋ธ๋์น ์ ๋ณด ํ์ธ
์ฌ๋ฌ ๋ธ๋์น์์ ๊ฐ๊ฐ ์ปค๋ฐํ ๋ ์ด๋ค ๊ด๊ณ๊ฐ ๋๋์ง ํ์
ํด์ผ ํ๋ค.
๋, ๋ธ๋์น ์ฌ์ด์ ์ฐจ์ด์ ์ ํ์ธํ ์ ์์ด์ผ ํ๋ค.
rnala@DESKTOP-SL978IQ MINGW64 ~/manual (apple)
$ git log --oneline
e55ae67 (HEAD -> apple) apple content 4
80e8285 (ms, google) work3
9c6f763 work2
4353937 work1
(HEAD -> apple)
: ํ์ฌ apple๋ธ๋์น์ ์ฒดํฌ์์ํ ์ํ์ด๋ค.e55ae67 (HEAD -> apple) apple content 4
: apple๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ ํด์๊ฐ e55ae67์ธ ์ปค๋ฐ์ด๋ค.
rnala@DESKTOP-SL978IQ MINGW64 ~/manual (apple)
$ git log --oneline --branches
e55ae67 (HEAD -> apple) apple content 4
dffeb82 (master) master content 4
80e8285 (ms, google) work3
9c6f763 work2
4353937 work1
git log --oneline --branches
: ๊ฐ ๋ธ๋์น์ ์ปค๋ฐ์ ํ๊บผ๋ฒ์ ํ ์ค๋ก ์กฐํํจ.
e55ae67 (HEAD -> apple) apple content 4
: ํ์ฌ apple๋ธ๋์น ์ฌ์ฉ ์ค์ด๋ฉฐ, ์ต์ ์ปค๋ฐ์e55ae67
ํด์์ธ ์ปค๋ฐ์ด๋คdffeb82 (master) master content 4
: master๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ ํด์๊ฐ dffeb82์ธ ์ปค๋ฐ์ด๋ค80e8285 (ms, google) work3
: ms๋ธ๋์น์ google๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ ํด์๊ฐ 80e8285์ธ ์ปค๋ฐ์ด๋ค.
rnala@DESKTOP-SL978IQ MINGW64 ~/manual (apple)
$ git log --oneline --branches --graph
* e55ae67 (HEAD -> apple) apple content 4
| * dffeb82 (master) master content 4
|/
* 80e8285 (ms, google) work3
* 9c6f763 work2
* 4353937 work1
git log --oneline --branches --graph
: ๋ชจ๋ ๋ธ๋์น์ ์ปค๋ฐ์ ๊ด๊ณ๋ฅผ ๊ทธ๋ํ ํํ๋ก ํ์ํจ
|
์/
์ด ์ปค๋ฐ๊ณผ ์ปค๋ฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค.- apple๋ธ๋์น์์๋ work1, work2, work3 ๋ค์์ apple content 4๊ฐ ๋ง๋ค์ด์ก๋ค.
- master๋ธ๋์น์์๋ work1, work2, work3 ๋ค์์ master content 4๊ฐ ๋ง๋ค์ด์ก๋ค.
- apple๋ธ๋์น์ master๋ธ๋์น๋ ๊ฐ์ ๋ถ๋ชจ ์ปค๋ฐ(work3)์ ๊ฐ์ง๊ณ ์๋ค.
- apple๊ณผ master๋ work3 ์ปค๋ฐ๊น์ง๋ ๊ฐ๊ณ , ๊ทธ ์ดํ ๋ธ๋์น๋ง๋ค ๋ค๋ฅธ ์ปค๋ฐ์ ํ๋ค.
๋ธ๋์น ์ฌ์ด์ ์ฐจ์ด์ ํ์ธ
rnala@DESKTOP-SL978IQ MINGW64 ~/manual (apple)
$ git log master..apple
commit e55ae678491ed0bf9d47e54738f351009c565ede (HEAD -> apple)
Author: Haina <bibi6666667@kakao.com>
Date: Tue Feb 9 11:38:09 2021 +0900
apple content 4
rnala@DESKTOP-SL978IQ MINGW64 ~/manual (apple)
$ git log apple..master
commit dffeb8201be8fb9e31efb4b0befafe40ce643659 (master)
Author: Haina <bibi6666667@kakao.com>
Date: Tue Feb 9 11:09:30 2021 +0900
master content 4
git log ๋ธ๋์น1..๋ธ๋์น2
: ๋ธ๋์น1๊ธฐ์ค์ผ๋ก ๋ธ๋์น2์ ๋น๊ตํจ
git log master..apple
: master๋ธ๋์น ๊ธฐ์ค์ผ๋ก apple๋ธ๋์น์ ๋น๊ตํจ- master๋ธ๋์น์ ๋น๊ตํ์ ๋ apple๋ธ๋์น์๋ง ์๋ ์ปค๋ฐ
apple content 4
์ถ๋ ฅ๋จ
- master๋ธ๋์น์ ๋น๊ตํ์ ๋ apple๋ธ๋์น์๋ง ์๋ ์ปค๋ฐ
git log apple..master
: apple๋ธ๋์น ๊ธฐ์ค์ผ๋ก master๋ธ๋์น์ ๋น๊ต- master๋ธ๋์น์๋ง ์๋ ์ปค๋ฐ
master content 4
๊ฐ ์ถ๋ ฅ๋จ
- master๋ธ๋์น์๋ง ์๋ ์ปค๋ฐ
3.4 ๋ธ๋์น ๋ณํฉํ๊ธฐ (merge)
-
๋ณํฉ(merge)
: ๋ธ๋์น์์ ์์ ์ ๋๋ด๊ณ ๊ธฐ์กด ๋ธ๋์น์ ํฉ์น๋ ๊ฒ. -
๋ธ๋์น๋ฅผ ๋ณํฉํ๋ ค๋ฉด ๊ฐ์ฅ ๋จผ์ master๋ธ๋์น๋ก ์ฒดํฌ์์ํด์ผ ํ๋ค.
git checkout master
์๋ก ๋ค๋ฅธ ํ์ผ ๋ณํฉํ๊ธฐ
-
git merge ๋ธ๋์น๋ช
: ํด๋น ๋ธ๋์น๋ฅผ ํ์ฌ ๋ธ๋์น์ ๋ณํฉํ๋ค. -
merge
์ํ ์ ์๋์ผ๋ก ๋น์ด ์ผ์ง๊ณ ์ปค๋ฐ๋ฉ์์ง๊ฐ ๋ํ๋๋ค.- ๋ฉ์์ง๋ฅผ ์์ ํ ์๋ ์๊ณ , ๊ทธ๋๋ก ์ฌ์ฉํ ์๋ ์๋ค.
-
git merge ๋ธ๋์น๋ช --no-edit
: ๋น์ผ๋ก ์ปค๋ฐ๋ฉ์์ง๋ฅผ ํธ์งํ์ง ์๊ณ ๊ทธ๋๋ก ์ฌ์ฉํ๊ณ ์ถ์ ๋. -
git merge ๋ธ๋์น๋ช --edit
: ์์--no-edit
์ค์ ์ ํด์ ํ๊ณ ์ถ์ ๋.
rnala@DESKTOP-SL978IQ MINGW64 ~/manual-2 (o2)
$ git log --oneline --branches --graph
* 804ba7b (HEAD -> o2) o2 work 2
| * da9f226 (master) master work 2
|/
* a85fbbe work 1
// ์ด ์ํ์์..
rnala@DESKTOP-SL978IQ MINGW64 ~/manual-2 (master)
$ git log --oneline --branches --graph
* c782675 (HEAD -> master) Merge branch 'o2' into master
|\
| * 804ba7b (o2) o2 work 2
* | da9f226 master work 2
|/
* a85fbbe work 1
- o2๋ธ๋์น์
o2 work 2
์ปค๋ฐ์ด master๋ธ๋์น์ ๋ณํฉ๋๊ณ ,Merge branch 'o2' into master
์ปค๋ฐ์ด ์๋ก ์๊ฒผ๋ค.
fast-forward merge ๋นจ๋ฆฌ๊ฐ๊ธฐ ๋ณํฉ
- master๋ธ๋์น์์ ๋ธ๋์น๋ฅผ ๋ถ๊ธฐํ ๋ค์, master๋ธ๋์น์ ์๋ฌด ๋ณํ๊ฐ ์๋ค๋ฉด (์๋ก์ด ์ปค๋ฐ์ด ์๋ค๋ฉด) : ๋ถ๊ธฐํ ๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ master๋ธ๋์น๊ฐ ๊ฐ๋ฆฌํค๋๋ก ํ๋ฉด ๋์ด๋ค.
- ์ด ๊ฒฝ์ฐ
Fast-forward
๋ฉ์์ง๊ฐ ๋ํ๋๊ณ , ์ปค๋ฐ ํด์ฌ๊ฐ ์ ๋ฐ์ดํธ๋๋ค.updating ์ปค๋ฐํด์ฌ1..์ปค๋ฐํด์ฌ2
Fast-forward
- ๋จ์ํ ํฌ์ธํฐ๋ง ์์ง์ธ ๊ฒ์ด๋ฏ๋ก ์ปค๋ฐ ๋ฉ์์ง ์ฐฝ์ ์ด๋ฆฌ์ง ์๋๋ค.
๊ฐ์ ๋ฌธ์์ ๋ค๋ฅธ ์์น๋ฅผ ์์ ํ์ ๋ ๋ณํฉํ๊ธฐ (Auto-merging)
๋๊ฐ์ด git checkout master
, git merge ๋ธ๋์น๋ช
์ผ๋ก ๋ณํฉํ๋ค.
$ git merge o2
Auto-merging work.txt
Merge made by the 'recursive' strategy.
work.txt | 1 +
1 file changed, 1 insertion(+)
Auto-merging ํ์ผ๋ช
: ๋ณํฉ ์๋ฃ ๋ฉ์์ง.
๊ฐ์ ๋ฌธ์์ ๋ค๋ฅธ ์์น๋ฅผ ์์ ํ๊ธฐ ๋๋ฌธ์ (๊ฒน์น๋ ์์ ์ฌํญ์ด ์๊ธฐ ๋๋ฌธ์)
์์ฐ์ค๋ฝ๊ฒ ํ๋์ ํ์ผ๋ก ์๋์ผ๋ก ํฉ์ณ์ง๋ค.
๊ฐ์ ๋ฌธ์์ ๊ฐ์ ์์น๋ฅผ ์์ ํ์ ๋ ๋ณํฉํ๊ธฐ (CONFLICT)
๊น์ ์ค ๋จ์๋ก ๋ณ๊ฒฝ์ฌ๋ถ๋ฅผ ํ์ธํ๊ธฐ ๋๋ฌธ์,
์๋ก ๋ค๋ฅธ ๋ธ๋์น๊ฐ ๊ฐ์ ํ์ผ์ ๊ฐ์ ์ค์ ์์ ํ ํ ๋ณํฉํ๋ฉด ๋ธ๋์น ์ถฉ๋(conflict)์ด ๋ฐ์ํ๋ค.
๋๊ฐ์ด git checkout master
, git merge ๋ธ๋์น๋ช
์ผ๋ก ๋ณํฉํ๋ค.
rnala@DESKTOP-SL978IQ MINGW64 ~/manual-3/manual-4 (o2)
$ git checkout master
Switched to branch 'master'
rnala@DESKTOP-SL978IQ MINGW64 ~/manual-3/manual-4 (master)
$ git merge o2
Auto-merging work.txt
CONFLICT (content): Merge conflict in work.txt
Automatic merge failed; fix conflicts and then commit the result.
rnala@DESKTOP-SL978IQ MINGW64 ~/manual-3/manual-4 (master|MERGING)
$
CONFLICT (content): Merge conflict in work.txt Automatic merge failed; fix conflicts and then commit the result.
: work.txt๋ฅผ ์๋ ๋ณํฉํ๋ ๋์ ์ถฉ๋์ด ๋ฐ์ํ์์ ์๋ฏธํจ.
์ถฉ๋์ด ์๊ธด ๋ฌธ์๋ ์๋์ผ๋ก ๋ณํฉ๋์ง ์์ผ๋ฏ๋ก(Automatic merge failed;
)
์ฌ์ฉ์๊ฐ ์ง์ ์ถฉ๋ ๋ถ๋ถ์ ํด๊ฒฐํ ํ ์ปค๋ฐํด์ผ ํจ.
- ๋น์์ ํด๋น ๋ฌธ์๋ฅผ ์ด์ด ์ง์ ์์ ํ๋ค.
๋ฌธ์์๋ ์ถฉ๋์ด ์ผ์ด๋ ๋ ๋ธ๋์น์ ๋ด์ฉ์ด ํ๊บผ๋ฒ์ ๋ํ๋ ์๋ค.
# title
content
<<<<<<< HEAD
master content 2
=======
o2 content 2
>>>>>>> o2
# title
content
<<<<<<< HEAD
master content 2
=======
: ํ์ฌ ๋ธ๋์น์์ ์์ ํ ๋ด์ฉ.=======
o2 content 2
>>>>>>> o2
: o2๋ธ๋์น์์ ์์ ํ ๋ด์ฉ.
-
๋ด์ฉ์ ์ํ๋ ๋๋ก ์์ ํ ํ,
<<<<<<< HEAD
,=======
,>>>>>>> o2
๋ฅผ ์ญ์ ํ๊ณ ๋ฌธ์๋ฅผ ์ ์ฅํ๋ค. -
์์ ํ ๋ฌธ์๋ฅผ add, commitํ๋ค.
๋จธ์ง ๋ฐ ์ถฉ๋ ํด๊ฒฐ ํ๋ก๊ทธ๋จ
: ๋จธ์ง์ ์ถฉ๋์ ์๋์ผ๋ก ํด๊ฒฐํด ์ฃผ๋ ํ๋ก๊ทธ๋จ๋ค.๋ณํฉ ์๊ณ ๋ฆฌ์ฆ ์ค 2way merge / 3way merge(๊ถ์ฅ)๋ฅผ ์ง์ํ๋ ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ค.
P4Merge, Meld, Kdiff3, Araxis Merge ๋ฑ.
๋ณํฉ์ด ๋๋ ๋ธ๋์น ์ญ์ ํ๊ธฐ
๋ณํฉ ํ ๋ ์ด์ ์ฌ์ฉํ์ง ์์ ๋ธ๋์น๋ ์ญ์ ํ๋ค.
*๋จ, ๋ธ๋์น๋ฅผ ์ญ์ ํ๋๋ผ๋ ๊ฐ์ ์ด๋ฆ์ ๋ธ๋์น๋ฅผ ๋ค์ ๋ง๋ค๋ฉด ์์ ๋ด์ฉ์ ๋ณผ ์ ์๋ค.
์ฌ์ค์ ์ญ์ ๊ฐ ์๋, ๊น์ ํ๋ฆ์์ ๊ฐ์ถ๋ ๊ฒ ๋ฟ์ด๋ค.
git checkout master
: ๋ธ๋์น ์ญ์ ๋ฅผ ํ ๋๋ ๊ฐ์ฅ ๋จผ์ master๋ธ๋์น๋ก ์ฒดํฌ์์ํด์ผ ํ๋ค.git branch -d ๋ธ๋์น๋ช
: ํด๋น ๋ธ๋์น๋ฅผ ์ญ์ ํ๋ค.git branch -D ๋ธ๋์น๋ช
: ํด๋น ๋ธ๋์น๋ฅผ ์ญ์ ํ๋ค. ํด๋น ๋ธ๋์น๊ฐ master์ ๋ณํฉ๋์ง ์์๋ค๊ณ ํด๋ ์ญ์ ํ๋ค.- ๊ฒฐ๊ณผ ๋ฉ์์ง :
Deleted branch o2 (was ์ปค๋ฐํด์)
3.5 ๋ธ๋์น ๊ด๋ฆฌํ๊ธฐ
๊น๊ณผ ๋ธ๋์น๋ฅผ ํธํ๊ฒ ๊ด๋ฆฌํ๊ธฐ ์ํ ๋ช ๋ น๋ค.
๋ธ๋์น์์ checkout์ reset์ ์๋ ์๋ฆฌ
๋ธ๋์น๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๋ checkout
์ฌ์ฉํ๊ธฐ -HEAD
์ ์ด
-
git checkout
์HEAD
๋ฅผ ์ ์ดํด ๋ธ๋์น๋ฅผ ์ด๋ํ ์ ์๋ค. -
HEAD
๋ ํ์ฌ ์์ ํธ๋ฆฌ๊ฐ ์ด๋ค ๋ฒ์ ์ ๊ธฐ๋ฐ์ผ๋ก ์์ ์ค์ธ์ง ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ์ด๋ค.HEAD
๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ง์คํฐ ๋ธ๋์น๋ฅผ ๊ฐ๋ฆฌํจ๋ค.- ๋ธ๋์น๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉํ๋
git checkout
๋ช ๋ น์ด๋ ๊ณง,HEAD
๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ์ ์ดํ๋ ๋ช ๋ น์ด์ด๋ค.git checkout sub
์ฒ๋ผ ๋ธ๋์น๋ฅผ sub๋ก ๋ณ๊ฒฝํ๋ฉด,HEAD
๋ sub๋ฅผ ๊ฐ๋ฆฌํจ๋ค.
-
๊ฐ ๋ธ๋์น๋ ๊ธฐ๋ณธ์ ์ผ๋ก, ๋ธ๋์น์ ์ปค๋ฐ ์ค ๊ฐ์ฅ ์ต์ ์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํจ๋ค.
- ์๋ก ์์ฑ๋ ๋ธ๋์น ์ญ์ ๋ณต์ฌ๋ ์ปค๋ฐ๋ค ์ค ๊ฐ์ฅ ์ต์ ์ ์ปค๋ฐ์ ๊ฐ๋ฆฌํจ๋ค.
๋ธ๋์น๊ฐ ์ฌ๋ฌ ๊ฐ์ผ ๋ reset
์ฌ์ฉํ๊ธฐ
-
git reset
์HEAD
๊ฐ ๊ฐ๋ฆฌํค๋ ๋ธ๋์น์ ์ต์ ์ปค๋ฐ์ ์ํ๋ ์ปค๋ฐ์ผ๋ก ์ง์ ํ ์ ์๋ค. -
ํ์ฌ ๋ธ๋์น๊ฐ ์๋ ์ด๋ค ๋ธ๋์น์ ์๋ ์ปค๋ฐ์ด๋ ๊ณจ๋ผ์ ์ต์ ์ปค๋ฐ์ผ๋ก ์ง์ ํ ์ ์๋ค.
git reset ์ปค๋ฐํด์
(๋ค๋ฅธ ๋ธ๋์น์ ์ปค๋ฐํด์๋ฅผ ๋ฃ๋๋ค) -
๊ฒฐ๊ณผ ๋ฉ์์ง :
Unstaged changes after reset: ํ์ผ๋ช
-
๋ธ๋์น์์ ์ฐ๊ฒฐ์ด ๋๊ธด ์ปค๋ฐ์ ์ญ์ ๋๋ค.
์์ ์ค์ธ ํ์ผ ๊ฐ์ถ๊ธฐ ๋ฐ ๋๋๋ฆฌ๊ธฐ
stash
: ์์
ํธ๋ฆฌ์์ ํ์ผ ์์ ํ, ์์ง ์ปค๋ฐํ์ง ์์ ์ํ์์ ๋ค๋ฅธ ํ์ผ์ ์ปค๋ฐํด์ผ ํ ๋
์์ง ์ปค๋ฐํ์ง ์์ ํ์ผ์ ์ ์ ๊ฐ์ถฐ๋๋ ๋ฐฉ๋ฒ์ด๋ค.
-
git stash
(๋๋git stash save
)
: ์ปค๋ฐํ์ง ์์ ์์ ํธ๋ฆฌ์ ์์ ๋ด์ฉ์ ์ ์ ๋ณด๊ดํ๋ (๊ฐ์ถฐ๋๋) ๋ช ๋ น์ด.- ํ์ผ๋ค์ด ์ฌ๋ผ์ง๋ ๊ฒ์ด ์๋ ์ ์ ๊ฐ์ถฐ๋๋ ๊ฒ์ผ ๋ฟ์ด๋ค.
- ๊ฒฐ๊ณผ ๋ฉ์์ง :
Saved working directory and index state WIP on ๋ธ๋์น๋ช : ์ปค๋ฐํด์ ํ์ผ๋ช
git stash
์ดํgit status
๋ก ์กฐํํ๋ฉด, ์ปค๋ฐํ ๊ฒ์ด ์๋ค๊ณ ๋์จ๋ค.
(nothing to commit, working tree clean
)
-
git stash list
:stash
๋ ํ์ผ๋ค์ ๋ชฉ๋ก์ ํ์ธํ๋ ๋ช ๋ น์ด.
stash list๋ ์คํ ๋ฐฉ์์ผ๋ก ์ ์ฅ๋์ด stash stack์ด๋ผ๊ณ ๋ ํ๋ค.stash@{0}
์ ํญ์ ๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐ๋ ํ์ผ์ด ๋ด๊ธด๋ค.- ์๋ก์ด ํญ๋ชฉ์ด ์ถ๊ฐ๋๋ฉด ๊ธฐ์กด ํ์ผ์
stash@{1}
๋ก ๋ฐ๋ ค๋๊ณ , ์ ํ์ผ์ดstash@{0}
์ด ๋๋ค.
๊ธํ ์์ ์ ๋ง์น๊ณ , stashํด๋ ํ์ผ์ ๋ค์ ๊บผ๋ด์ ์์ ํ ์ ์๋ค.
git stash pop
: stash list์์ ๊ฐ์ฅ ์ต๊ทผ ํญ๋ชฉ (stash@{0}
)์ ๋๋๋ฆฐ๋ค. (stash ์ด์ ์ํ๋ก)git stash apply
: stash list์์ ๊ฐ์ฅ ์ต๊ทผ ํญ๋ชฉ์ ๋๋๋ฆฌ์ง๋ง, ์ ์ฅ ๋ด์ญ์ ๊ทธ๋๋ก ๋จ๊ฒจ๋๋ค.- stash list์ ์์ ๋ด์ฉ์ ๋์ค์ ๋ ์ฌ์ฉํ ์ ์์ ๋ ํ์ฉํจ.
git stash drop
: stash list์์ ๊ฐ์ฅ ์ต๊ทผ ํญ๋ชฉ์ ์ญ์ ํ๋ค.