티스토리 뷰
Commit
커밋이란 깃으로 관리하는 형상들에 변경이 일어났을 때 변화에 대한 기록입니다. 커밋을 하면 하나의 체크 포인트가 생성되고 원할 때 언제든지 복구를 할 수 있으며 잘 관리된 커밋 내용은 프로젝트를 파악하는데 큰 도움이 됩니다.
git commit -m "메시지를 입력하세요"
기본적으로 커밋할 때는 메시지를 필수로 입력해야 합니다.
user@AL01724100 Git-Study % git log --oneline
4229d8e (HEAD -> master) dd zzz
da7f725 (cc) 첫번째 c1
55831da * c1
868fa2f c1
09002ce update cc
9240159 update aa, cc
a9d0be9 Merge branch 'master' into cc
80687b0 update cc
6aeab4f update bb
50609c2 update aa
5f2bb4b update aa, bb
36ea497 update cc
72230c2 update aa, bb
또한 커밋을 하면 4229d83, da7f725 같이 해당 커밋에 고유한 ID가 부여되고 언제든지 해당 지점으로 복구할 수 있습니다. 그리고 이러한 커밋 내용을 push를 통해 리모트 레포지토리에 저장하게 됩니다.
reset
깃에서 커밋 내용은 무척 중요합니다. 커밋 내용을 어떻게 관리하느냐에 따라 프로젝트 관리를 쉽게 할 수 있기 때문입니다. 그렇기 때문에 종종 기존의 커밋 내용이 맘에 들지않아 수정하고 싶을 때가 있습니다.
reset 명령어는 특정 커밋으로 돌아가고 기존 내용을 지우는 명령어 입니다.
user@AL01724100 Git-Study % git log --oneline
50609c2 (HEAD -> master) update aa
5f2bb4b update aa, bb
36ea497 update cc
72230c2 update aa, bb
fdade9c update master
13d9796 Merge branch 'cc'
5c7d508 stash cc pop
50ea1f1 (bb) stash cc commit bb
d8e1ec4 abc
483cd42 aa
9469405 Merge pull request #2 from rkdxowhd98/feature/GIT-0
1285cc5 (origin/feature/GIT-0) GIT-0
40b7807 Merge pull request #1 from rkdxowhd98/feature/GIT-1
f49ac62 (origin/feature/GIT-1) new
9a0ba22 first commit
git log 명령어를 통해 지금까지 작성된 커밋 내용을 확인할 수 있으며 각 커밋에 ID를 확인할 수 있습니다.
user@AL01724100 Git-Study % git reset --hard 5f2bb4b
HEAD의 현재 위치는 5f2bb4b입니다 update aa, bb
user@AL01724100 Git-Study % git log --oneline
5f2bb4b (HEAD -> master) update aa, bb
36ea497 update cc
72230c2 update aa, bb
fdade9c update master
13d9796 Merge branch 'cc'
5c7d508 stash cc pop
50ea1f1 (bb) stash cc commit bb
d8e1ec4 abc
483cd42 aa
9469405 Merge pull request #2 from rkdxowhd98/feature/GIT-0
1285cc5 (origin/feature/GIT-0) GIT-0
40b7807 Merge pull request #1 from rkdxowhd98/feature/GIT-1
f49ac62 (origin/feature/GIT-1) new
9a0ba22 first commit
git reset 명령어를 통해 특정 커밋으로 HEAD를 옮길 수 있습니다. (복구할 수 있습니다.) 다시 git log로 확인하면 복구된 커밋 이후에 작성된 커밋은 모두 사라진 것을 확인할 수 있습니다.
reset에는 3가지 타입이 있으며 기본값은 mixed입니다.
| 모드명 | 인덱스 | 작업트리 |
| soft | 변경 안 함 | 변경 안 함 |
| mixed | 변경함 | 변경 안 함 |
| hard | 변경함 | 변경함 |
리모트 레포지토리에 이미 공개된 커밋들을 reset을 사용하여 삭제하는 행동은 매우 위험합니다. 이미 다른 팀원들은 기존 커밋 로그를 이어서 작업을 진행하고 있을 가능성이 매우 크고 나중에 합칠 때 혼잡한 충돌을 야기시킵니다.
revert
revert를 통해 안전하게 커밋 내용을 지울 수 있습니다. revert는 reset과 다르게 커밋 내용을 지우는 것이 아닌 지우고자 하는 커밋에서 변경된 사항을 복구하고, 새로운 커밋 내용을 만듭니다.
user@AL01724100 Git-Study % git checkout -b ee
새로 만든 'ee' 브랜치로 전환합니다
user@AL01724100 Git-Study % git add *
user@AL01724100 Git-Study % git commit -m "ee"
[ee 1f41c3a] ee
1 file changed, 1 insertion(+)
create mode 100644 ee
user@AL01724100 Git-Study % git checkout master
'master' 브랜치로 전환합니다
user@AL01724100 Git-Study % git merge ee
업데이트 중 762f3b0..1f41c3a
Fast-forward
ee | 1 +
1 file changed, 1 insertion(+)
create mode 100644 ee
user@AL01724100 Git-Study %
ee라는 브랜치를 만들고 ee.txt파일을 만들어서 작업하고 커밋 후 master와 merger를 진행했다고 가정합니다.
user@AL01724100 Git-Study % ls
aa bb cc dd ee
user@AL01724100 Git-Study % git log --oneline
1f41c3a (HEAD -> master, ee) ee
762f3b0 dd
5f2bb4b update aa, bb
36ea497 update cc
72230c2 update aa, bb
ee라는 파일이 존재하며 커밋 내용에도 존재합니다.
user@AL01724100 Git-Study % git revert 1f41c3a
[master ff71836] Revert "ee"
1 file changed, 1 deletion(-)
delete mode 100644 ee
user@AL01724100 Git-Study % ls
aa bb cc dd
user@AL01724100 Git-Study % git log --oneline
ff71836 (HEAD -> master) Revert "ee"
1f41c3a (ee) ee
762f3b0 dd
5f2bb4b update aa, bb
36ea497 update cc
72230c2 update aa, bb
revert 명령어를 실행하면 revert를 통해 새로운 커밋 내용이 생기고 ee에서 작성한 모든 내용을 복구합니다. 결과를 확인하기 위해 ls 명령어를 실행하면 ee 파일이 없는 것을 확인할 수 있으며, log 명령어를 실행하면 Revert에 관련된 새로운 커밋이 생긴 것을 확인할 수 있습니다.
commit --amend
기존 커밋의 내용을 덮어쓸 때 사용합니다. 수정할 내용을 add를 통해 스테이징에 반영하고 명령어를 실행합니다.
git add .
git commit --amend
기존 커밋에 추가를 할 때 사용하지만 커밋 메시지 수정을 위해 사용할 수도 있습니다.
'Git' 카테고리의 다른 글
| Git Cherry-Pick - 커밋 내용 합치기 (0) | 2022.02.09 |
|---|---|
| Git Rebase - 커밋 히스토리를 깔금하게 (0) | 2022.02.08 |
| Git Stash - 작업하던 내용을 임시 저장하기 (0) | 2022.02.08 |
- Total
- Today
- Yesterday
- observable
- DART
- gradle
- ConcatAdapter.Config
- isActive
- viewmodel
- Flowable
- 클린 코드
- Flutter
- commit
- ViewModelProvider
- Kotlin
- git
- 연산자
- CancellationException
- ConcatAdapter
- 함수
- Exception
- rxjava
- Widget
- 보이스카우트 규칙
- DSL
- Android
- 코루틴
- ViewModelStoreOwner
- Coroutine
- null
- 클린코드
- TDD
- clean code
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
