이번 TIL 은 유튜브 얄팍한 코딩사전님의 '가장 쉬운 Git 강좌 - (상) 혼자작업편' 을 바탕으로 작성되었습니다. (URL : https://www.youtube.com/watch?v=FXDjmsiv8fI)
뭔가를 만들고 프로젝트를 진행할때 특정 폴더에서 파일을 수정한다. 이에 관해 시간여행이 가능한 평행우주를 만들어둔다고 생각하면 된다. 모든 파일의 저장 상태를 과거로 돌려놓거나, 과거의 특정 내용을 현재로 가져올 수 있다. 메인 작업에서는 위험한 시도를 해보거나 할때 폴더를 복사할 필요없이 여러 버전의 우주를 만들어 넘나들 수 있다고 생각하면 된다.
일반적으로 CLI(Command Line Interface)에서 작업한다.
ctrl + ~ : IDE에서 터미널을 여는 단축키
git init
: 폴더가 git의 관리 하에 들어간다.
git config --global user.name “(내 이름)”
git config —global user.email “(내 메일 주소)”
: 이름과 이메일 등록
shift + command + . : 숨긴파일 보기
git status
: 아직 저장되지 않은 파일을 확인한다.
git add -A
: 모든 파일을 추가한다.
다시 git status
확인시 ‘묻을 것들’ 이 나열된다.
git commit -m “설명”
: 파일을 묻는다. ex) git commit -m “First Commit”
다시 git status
: 다 담아서 묻을게 없다고 나온다.
새로운 파일을 Sourcetree에서 추가해보기. 체크하고 설명쓰고 Commit 버튼 클릭.
파일을 수정하거나 삭제, 새로 생성해도 변경된 사실을 타임캡슐에 묻어둘 수 있다.
git log
로 캡슐의 정보들과 이력을 확인할 수 있다. Sourcetree에서는 History 탭에서 보다 깔끔하게 확인이 가능하다.
터미널에서 맨 아래에 기존의 입력줄이 뜨지 않고 글자도 안쳐진다면 vi 에디터가 실행중인 상황이니 :q
를 타이핑 해서 빠져나오면 된다.
과거로 돌아가는 방법에는 과감한 방법과 신중한 방법이 있다. Reset은 과감한 방법이다.
git log
에서 나온 결과물 중 일련번호 앞 6자리를 복사하고 git reset [ 일련번호 6자리 ] -- hard
를 입력하면 된다.
Sourcetree 에서는 History에서 원하는 시점에서 우클릭 후 Reset master to this commit 을 클릭하면 된다.
미래에 한발을 걸치고 과거로 가는 방법이다. git revert [일련번호 6자리]
를 엔터하면, 새 커밋 메세지를 작성하는 화면이 뜬다. 그대로 저장하겠다는 vi 명령어 :wq
을 입력한다.
Sourcetree에서는 역시 우클릭 - reverse commit
새로운 시도는 해보고 싶은데 회사 파일로 실험을 할 수는 없을때 나만의 평행우주를 만들 수 있다. 현재 시점에서 두 미래로 분기하는 방법이다.
git branch my-idea
나의 가지를 만드는 방법. master
파일과 분기된다.
git checkout my-idea
나의 가지로 넘어가는 방법. 역시 기존 파일로 넘어가기 위해서는 git checkout master
해주면 된다.
Sourcetree에서는 브랜치에서 탭하는 것 만으로 우주를 변경할 수 있다. Sourcetree에서 Branch를 탭, 또 다른 브랜치를 생성할 수 있다. 체크아웃까지 한번에 가능하다.
git merge my-another-idea(변화를 가져올 branch 이름)
: master
branch에 my-another-idea
branch를 병합한다. Mac에서는 저장하고 나가기 :wq
를 입력한다.
git log --graph --all --decorate
시각화된 두 분기의 작업내역을 볼 수 있다.
같은 파일의 같은 라인에 손을 대고 나서 merge를 하는 경우에는 conflict가 된다.
둘중의 하나의 내용을 수정한 다음에는 git add로 캡슐에 넣고 git commit까지만 쳐준다. 병합하는 것이라고 이미 메시지가 완료되어있고 :wq
로 저장해주면 merge가 완료 된다.
협업할때는 되도록 다른 브랜치들이 같은 파일을 수정하는 것을 삼가하도록 해야한다.
git rebase my-another-idea
분기들을 깔끔하게 한줄로 합친다.
git branch -D (브랜치명)
: 다 쓴 브랜치를 삭제할 때 사용한다.