[iOS] Xcode에서 Git 사용하기

 

 

사실 개발을 처음 했을 때 git이 굉장히 어려웠다. 따로 가르쳐주는 사람도 없었을뿐더러 터미널에서 하려니 문자만 딱 남겨진 게 굉장히 이해하기도 사용하기도 어려웠었다. 하지만 Git을 사용하는 방법에는 여러 가지 방법이 있다는 것을 알게 되었고, 그중 간단하게 Xcode에서 사용할 수 있는 방법을 남겨보려고 한다.

 

 

1. VCS

VCS(version control system) -> 파일의 변화를 추적하고 관리하는 시스템.

 

즉, 버전 관리를 할 수 있는 것이 바로 VCS이다. 그럼 왜 버전 관리를 해야할까?

  • 프로젝트 진행 중 과거의 특정 시점으로 돌아갈 수 있기 때문에
  • 여러 사람이 같은 프로젝트를 맡게 될 경우, 각자 수정하고 작업한 내용을 간편하게 동기화하기 위해서
  • 코드의 변경 사항, 코드 작성자에 대한 추적, 작성한 코드에 대한 의미 파악에 용이
  • 기존 프로젝트에 영향을 최소화하면서, 새로운 부분을 개발하기 위해서 필요

 

2. Git이란??

 

 Git이란 로컬에서 관리되는 버전 관리 시스템이다. Git은 로컬에 저장소가 있고, 다른 사람과 공유할 필요가 있을 때 Push를 하는 방식으로 저장소를 공유할 수 있다. 이런 공유 방식 덕분에 원격 저장소에 문제가 생기더라도 분산되어 있는 로컬 저장소를 이용해 원격 저장소를 복원할 수는 특징을 가졌다. 또 혼자 작업하는 경우에는 Git만 사용해도 되나 물리적 이슈나 백업 등으로 GitHub까지 함께 사용한다.

 

 

 

 

3. GitHub

노트북(local) vs GitHub(remote)

 

 GitHub는 예를 들자면, 구글 드라이브와 같다고 생각하면 이해하기 쉽다. 여러 사람과 문서를 작업할 때나 공유할 때 사람들은 구글 드라이브를 쓰곤 한다. 파일을 구글 드라이브에 올리고 링크를 공유해서 다운로드하거나 그 문서를 바로 확인하는 것처럼 코딩으로 작업한 것들도 마찬가지이다. 구글 드라이브와 같이 작업한 내용들을 업로드하는 사이트 중 가장 유명한 곳이 GitHub이다. 우리는 GitHub(remote)를 통해서 최신 코드나 이전 코드들을 가져오고, 새로 작업한 내용들을 업로드할 수 있다. 이때 local은 노트북이나 컴퓨터의 저장공간을 말하고, remote는 구글 드라이브처럼 코드를 공유할 수 있게 올려놓은 공간을 말한다. 그리고 앞으로 자주 사용할 remote는 GitHub의 각자의 레퍼지토리가 될 것이다.

 

 


Wordking Directory -> Xcode로 우리가 project를 작업하던 공간
Staging Area -> 어떤 파일을 올릴지 관리하는 공간
Local Repository -> Staging Area에서 commit 한 것을 저장하는 공간(내 노트북에만 존재)
Remote Repository -> 구글드라이브에 업로드하듯 github에 업로드(push 한다고 함)

 

 

Working Directory

Working Directory는 Xcode 내에서 각 파일로 개발자들이 작업하는 공간이다. 

 

파일을 수정하면 파일옆에 M이라고 나타난다. 이 뜻은 modified 상태라는 의미이며, 아직 git에 반영되지 않은 수정된 파일임을 의미한다.

또 A는 추가된 파일이며, 역시 git에 반영되지 않은 추가된 파일임을 뜻한다.

 

Staging Area

Staging Area에선 Working Directory에서 수정된 파일을 Local Repository에 반영(Commit) 하기 전, 최종적으로 반영할 파일을 결정하는 곳이다. 만약 이곳이 없다면 Commit 할 때 한 번에 수정된 모든 것을 Commit해야 해서 코드를 자유롭게 수정하는 데 있어 제한적일 수 있다.

 

여기서 Staged란 수정한 소스코드 및 파일을 곧 Commit할 것이라고 표시해 놓은 상태이다.

 

Repository

Repository는 Commit 된 파일들을 버전별로 관리할 수 있는 영역으로, Staging Area에 있는 파일을 Commit 하여 Repository에 영구적인 스냅샷으로 저장이 가능하다.!

 

committed는 Staged 된 파일들이 안전하게 저장되었다는 상태로 committed가 된 파일은 Working Directory 영역으로 다시 돌아가게 된다고 한다.

 

Repository는 저장소 위치에 따라 Local과 Remote로 나뉘어 있으며, 자신의 노트북 혹은 컴퓨터엔 Local Repository가 있고, GitHub과 같은 클라우드엔 Remote Repository가 있다.

 

 

 

 

4. Xcode에서 Git 사용하기

 앞서 개념을 설명했으니, 이제 Xcode에서 간편하게 Git을 사용해 보자!!

 

 

 우선 Local Repository를 만들어줘야 한다. Xcode의 메뉴 중 integrate - New Git Repository를 누른다.

 

그럼 Xcode 좌상단의 왼쪽에서 두 번째 버튼을 눌러보면 Repositories 탭에 본인이 만든 프로젝트가 생길 것이다. 그리고 눌러보면 Initial Commit과 함께 main이라고 보일 것이다. 이 상태는 지금까지 작성한 코드들이 Local Repository에 Commit 된 상태이다! (아직 Remote Repository엔 업로드되지 않았다!!)

 

 

그 후 코드를 수정하고, 파일을 추가하면 위 사진과 같이 M, A 표시가 나타나게 된다.

 

 

그 후 Xcode 메뉴에서 Integrate - Commit을 누르면

 

 

좌측 Changes 부분에 Modified 된 부분과 Added 된 부분이 나타나게 될 것이다.

 

 

그리고 우측엔 위와 같이 코드가 나타나게 되는데, 이때 우측 상단에 A와 M 표시가 나타난다. 저 부분을 클릭하면

 

 

Commit을 할 파일인지 아닌지 선택할 수 있게 버튼이 나타난다. Stage Changes를 눌러서 우선 Commit 할 파일이라고 설정해 두자.

만일 모든 파일을 다 Commit 할 것이라면 Stage All 버튼을 눌러도 좋다!!

 

 

그리고 Commit할 메시지를 적어주고 오른쪽 윗부분에 있는 Commit 메시지를 눌러주자.

 

 

 

 

만약 모든 파일을 Stage 하면 위와 같이 M과 A의 배경색이 칠해지게 된다. (비어있으면 Stage 되지 않았다는 뜻)

 

여기까지가 Local Repository에 Commit을 하는 방법이다. 하지만 보통 Git은 Local에서 끝나지 않는다.  

 

 

 

 

 

그럼 클라우드인 Github에 연결을 한번 해보자.

 

 

 

메뉴에서 Xcode - Settings을 누르면 

 

 

위와 같은 창이 뜰 것이다. 여기서 Accounts로 이동해서 좌측 하단에 + 버튼을 누르자!

 

그럼 여러 개를 선택하는 창이 뜨는데 GitHub를 누르고 Continue를 해준다.

 

 

 

그럼 위와 같은 창이 뜨는데 Account와 Token을 입력해줘야 한다. 

 

만약에 Github에 가입이 안되어 있다면, 가입 후 토큰까지 만들자!!

 

 

여기까지 완료했다면 Github Id와 연결이 끝났다. 이제 Remote Repository를 만들어서 업로드만 시켜주면 된다.

 

 

Remote Repository를 만드는 방법은 간단하다. Local Repository를 볼 수 있는 Xcode 좌측 2번째 탭을 누른 후

아까 만든 Local Repository를 우클릭한다. 그리고 New ~~~ Remote.... 버튼을 눌러준다.

 

 

 

 

그럼 Remote Repository를 만들기 위한 간단한 설정을 할 수 있는 창이 나온다.

Account와 Owner는 따로 건드릴 필요가 없고

만약 Repository의 이름을 변경하고 싶으면 Repository Name을 수정해 주면 된다.

 

그리고 다른 사람들이 이 레포지토리를 볼 수 없게 하고 싶다면 Private을, 봐도 된다면 Public을 선택하고 Create를 해주자.

 

 

 

그럼 자신의 GitHub에 새로운 Repository가 생긴 것을 볼 수 있고 클릭해서 들어가면

이렇게 생긴 페이지를 볼 수 있다. 몇 번 커밋을 했는지, 브랜치는 몇 개인지 몇 분 전이 마지막 작업인지 마지막 커밋 메시지는 무엇인지 등이 한눈에 볼 수 있게 구성되어 있다.

 

 

 

 

마지막으로

다시 Repository 탭으로 돌아가서 

 

push를 눌러주면 된다.(Commit은 아까 했으니까!) 그럼 Remote Repository에 업로드가 완료된다. 

 

 

 

 

이후에는 Github에 연결하는 과정 필요 없이 Stage 하고 Commit 한 후 Push를 해주면 된다.

 

 

 

 

터미널보다 Xcode를 쓰는 방법.... 참 쉽죠...? 개인적인 생각이지만 처음부터 터미널로 Git을 접하는 것보다 GUI 화면으로 접하는 게 좀 더 이해하고 사용하기 쉽다고 생각한다. 개발자의 가오가 있지라고 말하며 초보임에도 무조건 터미널만 고집하지는 말자!! ㅎㅎ