What I Learned Today
요즘은 CLI와 GUI를 통한 Git 사용법에 대해서 배우고있다.
오늘 오전에는 git init, git add, git commit을 배웠다.
#일반 디렉토리를 Git 디렉토리(로컬 저장소)로 초기화 시키기
git init
#로컬 저장소에 있는 파일들을 staging 하기
git add
#git add를 통해 stage에 들어간 파일들을 index로 옮긴다.
git commit -m "커밋 메시지"
오후에는 branch와 merge, checkout, clone, push, pull을 사용하는 방법을 배웠다.
#브랜치를 만들고 싶으면
git branch -c 브랜치명
#브랜치를 바꾸고 싶다면
git switch 브랜치명
#하지만 만들고 따로 들어가기 귀찮다면 한번에 하는 방법이 있다.
git switch -c 브랜치명
#또는
git checkout -b 브랜치명
#브랜치를 삭제하려면
git branch -d 브랜치명1 브랜치명2 .. .. ..
#브랜치를 병합할때 사용하는 명령
git merge 브랜치명
#특정 커밋으로 이동
git checkout HEAD~HEAD로 부터 이동할 브랜치의 순서
#깃에서 특정 repo를 통째로 가져옴
git clone 주소
#로컬 저장소에 commit 되어있는 파일을 깃에 올리려면
git push
#깃에서 변경된 파일들을 가져오려면
git pull
The Problem I Faced
브랜치의 존재 이유가 무엇인지 모르겠고 이해가 잘 안됐다.
Fast-Forward merge, 3-way merge 등..
What I Tried to Do
쉬는시간에 배운 내용을 생각하며 검색도 해보고 그림도 그려보았다.
How I Solved It
그림을 그려가며 천천히 생각하니 해결되었다.
Fast-Forward merge는 기존 main 가지에 다른 브랜치의 커밋을 추가
3-way merge는 새로 생긴 브랜치의 커밋들을 선택하거나 병합한 후 기존 main 가지에 추가
So
Aha Moments
나는 원래 Git을 사용할때 터미널을 이용해서 사용했었다.
자주 사용하는 명령어를 빼고는 매번 검색해서 사용했었는데 이번 수업을 통해 GUI를 사용하는 방법을 알았다.
좌측 패널의 3번째 깃 아이콘을 누르면 다양한 기능을 클릭 한번으로 사용할 수 있다.
그리고 명령어에서 -와 --의 차이를 찾아볼 생각도 안했는데 이 둘의 차이는 약자와 풀네임의 차이다.
예) -v / --version
merge를 사용할때 나오던 메시지들이 오류가 아니고 머지의 방식이었다는게 충격이었다...
merge는 main에 중요한 코드를 넣어두고 새로운 브랜치를 만들어 main의 파생 코드를 만들고
마음대로 수정하다가 그 코드가 마음에 들면 병합을 할때 사용한다.
--250424--
팀원들과 함께 공부하다가 알아낸 충격적인 사실
#커밋에서 삭제
git rm --cached 파일명
#스테이지에서 삭제
git restore --staged 파일명
#이전 커밋 상태로 만들기
git restore 파일명