얄팍한 코딩사전 : Git은 뭐고, Github는 뭔가요?
프로젝트를 진행하다 보면
나중에 ① 이전 기능을 다시 가져오게 될 수도 있고,
② 누가 실수로 잘못된 코드를 섞으면 복원해야할 때도 있고,
③ 바뀌기 전 내역들도 중간중간 저장을 해 두어야 한다.
그리고 최악의 경우, ④ 클라이언트가 "제일 처음 것이 낫네요"라고 하면..!! 되돌려야하는 경우가 생김
협업 프로젝트를 진행하다 보면,
누가 언제 뭘 어떻게 건드렸는지 파악하기도 힘들고 버전별 관리도 함께 진행해야 한다.
커밋을 통해 프로그램의 변화가 있을 때 마다 저장해 둘 수 있다.
커밋은 전체 파일이 저장되는 것이 아닌, 변경사항들만 기록되는 거라서 여러번 박제를 한다고 해서 용량을 많이 차지하지 않는다.
브랜치라는 작업을 통해서 주가 되는 메인 프로젝트에서 나만의 별도 작업을 진행할 수 있고, 또 그것을 부분 병합하는 것도 가능하다!
얄팍한 코딩사전 : 가장 쉬운 Git 강좌 - (상) 혼자작업편
Git, VS Code (IDE프로그램), Source Tree를 설치한다.
※ 원래 사용하던 IDE프로그램인 Sublime Text가 있었지만, 터미널 작동법이 어려워서 얄코님의 강의대로 VS Code를 설치했다.
일반적으로는 CLI나 PowerShell, 맥에서는 터미널에서 폴더의 경로를 찾아서 들어가지만, VS Code를 사용하면 쉽게 터미널을 사용할 수 있다.
git에 올릴 프로젝트 파일을 열고, Ctrl + 역따옴표
를 누르면 VS Code 하단에 터미널이 열리고, 현재 폴더의 경로가 이미 설정되어 있다.
명령어 git init
를 입력하면 빈 저장소가 만들어 졌다는 문구가 뜬다.
이후 다음의 명령어를 이용하여, 사용자 이름과 이메일을 등록한다.
숨겨진 파일보기
를 누르면, .git
이라는 숨김 폴더가 생성되어 있는 것을 확인할 수 있다.
2)에서 생성된 .git
폴더를 삭제한 후 시작한다.
Source Tree를 실행 시킨 다음, +Create
를 누르고, 탐색
버튼을 통해 작업중인 프로젝트 파일을 연다.
VS Code의 터미널에서 git status
를 입력하면, 아직 담기지 않은 파일들이 보인다.
git add -A
명령어를 넣고, git status
를 사용해서 커밋 될 파일이 잘 들어가 있는지 확인한다.
확인한 후에는 git commit -m
을 명령어로 어떤 시점의 커밋인지 간단하게 설명을 써 준 다음, 커밋을 진행하여야 한다. (커밋의 제목이 됨)
3-1) 상태에서 Source Tree로 들어가 보면 커밋할 내용이 없다고 뜬다.
새 파일을 추가해서 다시 커밋을 진행한다고 보면,
VS Code에서는 git status
를 입력하여 새롭게 커밋할 내용이 있는지를 확인해야 하지만, Source Tree에서는 +
버튼을 눌러서 스테이지에 add해 준다.
아래 칸에서 간단한 설명을 넣은 다음 commit
버튼을 눌러 커밋을 완료한다.
먼저 cat
파일을 삭제하고, mouse
의 내용을 name : mickey
로 변경한다.
새 파일 penguin
을 만들고 내용을 name : pororo
입력한 후 저장.
VS Code 터미널에서 git status
를 입력하면
cat
파일 삭제, mouse
파일 수정, 새 파일 penguin
이 차례로 나타난다.
Source Tree 에서도 다음과 같이 확인 가능
다시 VS Code 터미널에서 git status
를 입력해서 보면, 더 이상 커밋할 것이 없다는 문구를 확인할 수 있다.
VS Code 터미널에서 git log
명령어를 입력하면,
지금까지 커밋한 내역들을 볼 수 있다.
여기서 ADD DOG
의 부분으로 되돌아가기 위해서, 앞 여섯자리를 복사한다.
git reset 여섯자리 --hard
를 입력하면 다시 그 전 상태인 ADD DOG
커밋으로 돌아간 것을 확인할 수 있다.
다시 Reset 하기 전 ADD MODIFY DELETE
상태로 만들어 두고, Source Tree에서 되돌아갈 커밋에서 마우스 오른쪽 클릭
→ 이 커밋까지 현재 브랜치를 초기화
→ hard
를 선택한다.
git log
명령어를 사용하여, 지금까지 저장된 커밋들을 확인한다.
아까 Reset과 달리, 취소할 시점의 커밋 일련번호 앞 여섯자리를 복사한다.
git revert 여섯자리
를 입력하고 난 뒤,
새 커밋 메세지를 작성하겠다는 메세지가 뜨면,
그대로 저장하겠다는 vi 명령어 :wq
를 입력한다.
혹시 다음과 같은 메세지가 뜨지 않는다면, git commit -m "revert"
를 입력해서 커밋을 진행 해 준다.
git log
명령어로 확인해 보면 Reset처럼 커밋이 삭제된 것이 아니라, 새로운 커밋이 생성되어있는 것을 확인할 수 있다.
취소할 커밋에서 마우스 오른쪽 클릭을 하여 커밋 되돌리기
를 눌러준다.
Revert 새 커밋이 생성된 것을 알 수 있다.
git branch 브랜치명
을 입력한다.
git branch
를 다시 입력해 보면, 기존 브랜치인 Master
와 my idea
라는 새로 만든 브랜치가 보인다.
(브랜치 명을 입력할 때 띄어쓰기가 있다면, 하이픈-
으로 연결해 준다.)
git checkout 브랜치명
을 입력하면 해당 브랜치에서의 작업을 할 수 있다.
git checkout my-idea
를 입력하여 mouose
파일을 삭제 후,
dinosaur
파일을 새로 만들어 name : dooly
라는 내용을 입력한다.
git add -A
, git commit -m "dino"
라고 명령하여 my-idea
브랜치에서의 새로운 변화를 커밋한다.
다시 Master로 돌아가고 싶다면, 터미널에서 git checkout master
을 입력하면된다.
제일 왼쪽 하단을 보면 현재 어느 브랜치에서 작업을 하고 있는지 확인할 수 있다.
우선, my-idea에서 새로운 브랜치 my-another-idea
를 만든다.
my-another-idea
에서 변경된 내용을 master
로 가져와서 병합해야 한다.
먼저, git checkout master
를 입력하여, master브랜치로 체크아웃 해 준다.
git merge 브랜치명
을 입력하여, 현재 체크아웃 상태인 master브랜치와 my-another-idea브랜치를 병합한다.
Source Tree에서는 브랜치에서 마우스 오른쪽 클릭을 하면, 쉽게 합병할 수 있다.
다른 브랜치에서 같은 파일의 같은 부분을 수정한 뒤, Merge하는 경우 충돌이 일어난다.
이 경우, 둘 중 하나를 선택하여 삭제를 해 준뒤, git add -A
를 진행한다. (터미널에서 커밋을 할 경우에는 반드시 git add
를 실행한 뒤 커밋을 진행해야 한다.)
이번에는 git merge 브랜치명
이 아닌 git commit
을 입력한다. (git commit -m "커밋명"
을 사용하지 않는다.)
각각 다른 브랜치들을 Merge로 병합하면 복잡해지지만, Rebase를 사용하면 한 라인으로 깔끔하게 작업내역을 만들 수 있다.
git rebase 브랜치명
을 입력하여 사용한다.
프로젝트의 성격에 따라, Merge와 Rebase를 적절히 활용하면 된다.
Source Tree에서는 마우스 오른쪽을 클릭한 후, 재배치를 눌러주면 된다.
VS Code 터미널 :git branch -D 브랜치명
Source Tree : 마우스 오른쪽을 클릭한 후, 브랜치 삭제
를 눌러 진행해 준다.