평소 Version Control 을 위해서는 GitKraken 을 쓴다. CLI 기반은 어렵고 직관적이지 않아 GUI 기반인 GitKraken 을 쓰면 그나마 덜 어려워서 애용한다. 하지만 이번에 Xcode 내에서도 Source Control 이 가능하다는 것을 깨달았고, 기본적인 이용 방법을 정리하고자 한다.
우선 프로젝트를 만들 때 위와 같이 Create Git repository on my Mac 란에 체크 표시를 적용한다.
프로젝트 생성 후 좌측 상단의 저 네모난(?) 아이콘을 누르면 Source Control 하는 곳으로 진입이 된다. 보다시피 Initial Commit 가 자동으로 이미 되어있는 것을 볼 수 있으면, main branch 가 하나 있는 것 역시 볼 수 있다.
프로젝트 내에서 기능을 좀 추가하고 이제 커밋해야겠다 싶으면 상단 메뉴의 Source Control -> Commit 을 누르면 된다.
Commit 을 누르면 위와 같은 창이 뜨게 되는데, 여기서 어떤 파일에 변경사항이 생겼는지 한 눈에 확인할 수 있다.
해당 창 아래에서는 commit message 역시 작성할 수 있게 되어 있다.
그렇게 Commit 을 누르게 되면, 정상적으로 commit 이 반영된 것을 볼 수 있다.
혹여나 프로젝트 중에 원치 않은 코드를 마구마구 작성했다고 치자. 예를 들어 위처럼 toggle 버튼을 아무 곳에다 막 배치한 나쁜 경우를 보자. 이런 경우 그 전 version 으로 돌아가고 싶을 것이다. 즉, 마지막 커밋한 시점으로 돌아가고 싶은거다.
그럴 땐 상단 메뉴 바의 Source Control -> Discard All Changes 를 누르면 된다.
짜잔. 이전 모습으로 돌아갔다.
특정 시점에서 Branch 를 생성하고 싶으면 어떻게 해야 할까?
원하는 시점의 커밋 부분을 우클릭하고, Branch from "" 을 클릭하면 된다.
Branch 사이에서 움직이고 싶으면, 즉 check out 하고 싶으면 해당 branch 를 우클릭하고 checkout 을 누르면 된다. 정말 쉽다!
Merge 하는 방법 역시 쉽다. 만약 milk-design 이라는 branch 를 main branch 에다가 merge 를 시키고 싶다면, 우선 현재 브랜치가 main이어야 한다. 그 다음에 merge 하기를 원하는 브랜치를 우클릭하고, merge "milk-design" into "main"을 클릭하면 된다.
가끔 특정 커밋 시점, 즉 게임으로 치자면 save-point 로 가고 싶은 경우도 있다. 그럴 때 돌아가기를 원하는 커밋 부분을 우클릭하고, Checkout 을 누르면 된다.
Xcode 우측 상단의 화살표 모양이 2개 있는 아이콘은, 서로 다른 두 브랜치에 있는 동일한 파일을 비교할 때 요긴하게 쓰인다. 왼쪽 코드는 milk-design 브랜치에 있는 ViewController 파일이고, 오른쪽 코드는 main 브랜치에 있는 ViewController 파일이다. 친절하게도 어떤 부분이 다른지 Xcode 가 파란색으로 칠해서 보여준다!
그럼 내 맥에서 작업한 프로젝트를 깃허브에 푸쉬하고 싶다면? Xcode 설정에 들어가서 Accounts -> 더하기 버튼 -> Github -> Continue 를 눌러주고 본인 깃허브 계정과 비밀번호를 입력하여 계정을 추가한다.
그런 다음에 맨 처음에 언급한 좌측 상단의 네모난? 아이콘을 누르고, 프로젝트를 우클릭하여 New "프로젝트명" Remote 을 클릭해준다.
그러면 본인 깃허브에 이렇게 repository 가 생성된 것을 볼 수 있다.