Git에서 Push와 Pull은 로컬에서 원격저장소와 소통하는 방법이다. Push는 로컬에서 내가 만든 변경사항을 원격 저장소로 전송하는 개념이고, Pull은 원격 저장소에 있는 변경사항을 내 로콜로 가져오는 개념이다.
때문에 Xcode에서 원격저장소(ex:GitHub)를 설정하고 Git으로 버전 관리를 시작 했다면 커밋과 함께 가장 먼저 마추지는 기능들이다. 지난 포스팅(Xcode에서 소스코드 커밋하기)에서 원격저장소인 GitHub를 다루지 않고, 로컬 상태에서 2개의 커밋(변경사항)을 만들었었다.
Xcode에서 소스코드 커밋하기
커밋 이란?커밋(Commit) 이란, 내가 작성한 코드의 스냅샷을 저장하는 행위이다. Git은 내가 수정한 내용을 추적하고, 커밋이라는 단위를 기준으로 "어느 시점에, 누가, 무엇을 어떻게 바꿨는지"를
johjo.tistory.com
이제 커밋한 내용들을 원격저장소인 GitHub에 Push 해 볼 차례다.
소스컨트롤네비게이터
우선, 소스컨트롤네비게이터의 Changes탭을 확인해 보면, 2개의 커밋이 존재 하는 것을 확인 할 수 있고, Repositories 탭을 보면 2개의 항목이 원격저장소인 GitHub보다 앞서 가는것을 볼 수 있다. 즉 2개의 Push 할 항목이 존재 한다는 것이다.
Push해보기
Xcode의 Integrate 메뉴에서 Push를 찾을 수 있다.
이제 여기서 Push 버튼을 누르면 원격저장소인 GitHub로 올라간다.
Push 후에 Xcode를 다시 확인해 보면, 아래 그림과 같이 변동 사항들이 모두 없어졌음을 확인 할 수 있다. 만약 Push 후에 Repositories 탭에 아직 숫자가 남아 있다면, Xcode를 재실행시키면 완전히 반영 된다. (Xcode의 문제점...)
이제 원격저장소인 GitHub 에서 확인해 보면, main 브랜치에서 3개의 커밋이 있고, 커밋 내용들이 최종 반영된 것을 확인 할 수 있다.
우리는 2개의 커밋 내역만 Push를 했는데, 왜 3개 일까? Commits 버튼을 눌러보면 커밋 상세 내역을 볼 수 있다.
Initial Commit 이라는 것이 존재하는데, Xcode에서 원격저장소 만들기를 할 때 최초 커밋으로 1번 커밋이 진행된 후 원격저장소가 생성된 것이다. 그렇기 때문에 우리가 진행한 총 커밋은 3개가 맞다. 이로서 로컬에서 내가 만든 변경사항은 Push를 통해 모두 원격저장소에 반영되었다.
Xcode에서 GitHub원격저장소 만들기
Xcode를 실행해 보면, 아래 그림과 같이 로컬에서 새로운 프로젝트를 만들 것인지 (Create New Project) 원격 저장소에 있는 프로젝트를 복재해와서 진행 할 것인지 (Clone Git Repository) 의 갈림길이 처음
johjo.tistory.com
Pull해보기
이제 원격저장소에서 변경사항을 만들어 Pull을 사용해 볼 차례다. GitHub웹페이지에서 Add file 버튼을 눌러 신규 파일을 생성해 본다.
TestView.swift 라는, "원격저장소에서 수정 했어요." 라는 주석만 있는 파일을 만들고 Commit changes 버튼을 누르면 커밋메시지를 입력 하고 저장 할 수 있다.
이제 원격저장소인 GitHub에는 4개의 커밋이 존재한다.
이제 다시 Xcode로 돌아와 본다. 내 컴퓨터의 Xcode는 로컬영역이기 때문에 원격저장소에서 어떤일이 일어났었는지, 추가 커밋 내역이 있는지 확인이 되지 않는다.
원격저장소에서 변경사항이 있음을 모른채 작업을 한다고 가정해 보자. JoView.swift 라는 SwiftUIView 파일을 신규로 생성 했다.
이제 "Hello"를 "Jo"로만 변경 시키고 이것을 커밋 한다.
이어서 Push를 진행해 보면 Xcode로 부터 다음 메세지를 받게 된다.
The local repository is out of date.
Make sure all changes have been pulled from the remote repository and try again.
모든 변경 사항을 원격 저장소에서 가져온 후 다시 시도하세요.
지금 상황을 Git 그래픽툴인 GitKraken 으로 확인을 해보면 아래 그림과 같다. 원격저장소에 신규 파일이 로컬에 반영되지 않아 최신 상태가 아닌데 로컬에서 신규 파일을 생성하여 원격저장소로 최신화를 위해서 Push를 하려고 한 것이다.
다시 Xcode의 소스컨트롤네비게이터에서 Repositories 탭을 주목해 보자. Push 할 항목도 존재 하지만, Pull 할 항몯고 존재 한다.
이제 원격저장소의 변경사항을 먼저 Pull 로 가져와서 내 로컬에 병합하고, 로컬에서 있던 변경사항을 Push 해서 최종적으로 로컬과 원격저장소 모두 최신 상태로 만들어야 한다.
Pull은 Push와 마찬가지로 Xcode의 Integrate 메뉴에서 찾을 수 있다.
Pull 버튼을 눌러 원격저장소의 변경사항을 가져온다.
이제 Push할 항목은 본래 목적이었던 로컬에서 생성한 JoView.swift 파일 생성한 변경사항과, 원격저장소로 부터 병합받은 변경사항 총 2가지 이다. 이제 Push 할 수 있다.
Push를 해보면 아래와 같이 원격저장소와 로컬이 모두 최신 상태인 것을 확인 할 수 있다.
'Programming > GitHub' 카테고리의 다른 글
README와 .gitignore파일 생성 및 설정 (0) | 2025.06.29 |
---|---|
Git Branch 생성과 병합 등 관리방법 (Stash, Merge) (0) | 2025.06.28 |
Xcode에서 소스코드 커밋하기 (0) | 2025.06.28 |
Xcode에서 GitHub원격저장소 만들기 (0) | 2025.06.27 |
GitHub계정 Xcode설정 방법 (0) | 2025.06.27 |