이번에 과제를 진행하면서 이전에 그냥 아~ 이런게 있구나 했던것들에 대한 개념이 조금더
자리를 잡은듯한 느낌을 받았습니다.
이전에는 그냥 fork 후 commit - pr - merge 중간중간 충돌 해결 등 이 과정들의 그냥 반복이었다면.
이번 과제를 통해 진짜 branch를 사용하고 그와중에 revert의 개념이 정확히 무엇을 하는지 외에도 reset,restore 가 무엇인지 또
upstream 이 무엇인지, rebase, amend가 무엇을 하기위한 명령어인지 정확하게 인지를 한거같습니다.
외에 강의에서의 이슈등록이나 체리픽, 자소서, vim편집기, 칸반등 다양한 개념을 다시 한번 리마인드하고, 기억하는 계기가 되었습니다.

1. revert
revert 이녀석 정확히 무엇인고.. 항상 깃 커밋 푸시중 오류가 발생하면 아 일단 revert하자 했는데 드디어
revert와 reset, restore의 차이점이 무엇인지 정확하게 인지하였다.
reset : --soft , mixed(기본) , --hard 세가지 옵션이 있으며 각각
- 커밋 기록은 지우고 변경된 파일은 유지하고 스테이징 영역에 올려둔다.
- 커밋 기록을 지우고 변경파일들도 워킹 디렉토리로 옮긴다.
- 커밋, 스테이징, 작업 파일까지 전부 삭제 완전 초기화
또한 HEAD~ 표기법을 통해 빠르게 한단계 전으로 되돌릴 수 있다.
restore : 과거 커밋기록에는 영향을 주지않고, 워킹 디렉토리나 스테이징 영역에서 변경 사항만 되돌릴 수있다,
전체 커밋단위가 아닌 파일단위로 작업을 조작하며 수정중인 파일을 현재 커밋상태로 되돌릴 수 있다.
--staged 옵션이있으며 실제 변경 내용은 유지되지만 스테이징 영역에서 내려가 추적되지 않는다.
revert : 기존 커밋내용을 취소하면서 기록을 보관, 새로운 커밋을 생성. 즉 커밋이 2개가 생기는거다.
-n 옵션을 사용하면 변경사항만 취소하고 새로운 커밋은 생성하지 않을 수 있다.(관리의 용이)
2. rebase
이놈이놈이 아주 물건이다.
나는 이전에 개인 프로젝트를 하면서 이걸몰라서 브런치를 매번 지우고 새로만들고 반복을했는데, 이젠 그럴 필요가 없다..
물론 깃허브에서 pull하고 그걸 가져올 수 있지만, 왜인지 가끔 안되는 경우가 있어서 이 rebase를 하는게 짱인거같다.
내가 만약 dev 에서 작업을 하고있는데 누군가 main 에 commit merge를 3개를 했다고 생각해보자.
어? 그럼 내가 지금 작업하는 내용과 실제로 main에 코드가 달라서 어떤 에러가 발생할지 아무도 모르게된다..
허 그럼 main과 내 버전을 맞춰야 할거같은데.. 이런상황에서 사용하는게 rebase이다.

먼저 내가 떙겨보고싶은 버전을
git fetch origin 을해주고
이후 git rebase origin/main 을실행해주면. main 브랜치의 내용이 작업중인 브랜치에 담기는 것을 확인 할 수있다.
그리고 만약 내가 커밋을 진행한 상황이라면
* git fetch origin : 원격 저장소의 현재 최신 커밋정보 다운로드 실제 반영은 x
아래 사진처럼 커밋이 맨 앞으로 나가는 것을 확인 할 수 있다.



3. amend
이것도 나름 쏠쏠 한 기능이다.
만약 내가 커밋을 했는데 아차! 파일을 까먹고 올리지 않았다 혹은 추가로 수정한 파일도 올려야한다. 그럼 같은 이름으로 커밋을 두번 하면 될까? ㄴㄴ 그러면 괜히 커밋수만 늘어나고 관리가 힘들어짐..
그럴때 사용하는게 amend이다 이 기능을 사용하면 이미 생성된 커밋에 추가적인 내용들을 더할 수 있다.
추가할 파일을 add 한다음
git add [파일명]
git commit —amend
실행
그러면 아래와같은 vim편집기가 나오고 커밋이름을 수정해도 되지만 나는 안할거니까 그냥 :wq로 저장후 빠져나왔다.


그러면 성공적으로 커밋에 새로운 파일 더하기가 성공한것을 확인할 수 있다.
4. Squash
이거는 처음본거라 진심 신기했다...

커밋을 여러번 하면 머지를 할때 여러개의 커밋이 한번에 올라가는데, 이때 너무 지저분하다고 생각되면(관리가 힘들어짐)
Squash merge 를 진행하면 모든 커밋이 하나의 커밋으로 묶여서 깃허브에 올라가게 된다.


이렇게 하나의 커밋으로 합쳐진것을 볼 수 있다!
역시 나는 아직 많은 경험을 해보진못한 개발자라는 것을 뼈져리게 느낀듯하다.
내가 남들보다 조금 더 할줄안다고 해서 거만하지말고,
다른분들의 역량을 끌어올리는 만큼 나도 올라간다는 생각으로 많이 도움을 드리고 같이 성장하고싶다.
'TIL' 카테고리의 다른 글
| 객체지향 이해하기 -1 (배경 지식) (0) | 2026.01.09 |
|---|---|
| Hello Java! (1) | 2026.01.08 |
| 트러블슈팅 (git protect branch from merge.) (0) | 2026.01.07 |
| 트러블슈팅(git branch에 대한 이해 및 Review 방법) (1) | 2026.01.06 |
| 저장소 클론 후 브랜치, 커밋,PR,CodeReview 까지 해보자 (0) | 2026.01.06 |