본문 바로가기
Programming/GitHub

Xcode에서 소스코드 커밋하기

by 조현성 2025. 6. 28.

썸네일

커밋 이란?

커밋(Commit) 이란, 내가 작성한 코드의 스냅샷을 저장하는 행위이다. Git은 내가 수정한 내용을 추적하고, 커밋이라는 단위를 기준으로 "어느 시점에, 누가, 무엇을 어떻게 바꿨는지"를 기록해준다. 그 기록은 과거로 되돌아가거나, 다른 사람과 협업할 때 무척 유용하다. 지난 포스팅에서 프로젝트 생성 직후 원격저장소를 생성하며 코드 수정은 없었다.

 

Xcode에서 GitHub원격저장소 만들기

Xcode를 실행해 보면, 아래 그림과 같이 로컬에서 새로운 프로젝트를 만들 것인지 (Create New Project) 원격 저장소에 있는 프로젝트를 복재해와서 진행 할 것인지 (Clone Git Repository) 의 갈림길이 처음

johjo.tistory.com

 

이제 로컬PC에서 소스코드를 수정하고 커밋을 해볼 차례다. (이번 포스팅에서는 원격저장소 GitHub를 다루지는 않는다.) 많은 개발자들이 커밋을 이야기 하면 Git, GitHub, Terminal을 떠올리겠지만, 사실 Xcode만으로도 커밋은 완벽하게 가능하다. 이 번포스팅 역시 GUI로만 진행하며 Xcode안에서 내가 작성한 소스코드를 로컬에서 커밋하는 방법을 소개한다.

 

새로운 프로젝트 생성

현재 Xcode의 상태는 프로젝트를 생성한 직후여서 ContentView.swift 파일과 XcodeSourceControlApp.swift 파일만 존재하는 상태다.

Xcode

이 상태에서 ContentView.swift 파일의 소스코드만 아래와 같이 수정 했다.

import SwiftUI

struct ContentView: View {
    var body: some View {
        VStack {
            Image(systemName: "heart.fill")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("Hello, Josync!")
        }
        .padding()
    }
}

#Preview {
    ContentView()
}

소스코드 변경라인에는 아래 그림과 같이 파랑색 음영표시가 나타난다.

소스코드 변경 라인

이것을 눌러보면, 아래 그림과 같이 자세히 확인해 볼 수 있다.

음영표시 클릭

 

Xcode에서 커밋하기

커밋을 위해 [Option] + [Command] + [C] 단축키를 누르거나 Xcode의 [Integrate] → [Commit...] 메뉴를 이용해 진입해 본다.

Integrate 메뉴

그럼, 아직 로컬 저장소에 커밋되지 않은 변경사항을 확인 할 수 있다. 코드라인이 없는 줄은 커밋 할 때 코드가 삭제 되고 코드라인이 있는줄로 대체 되게 된다.

소스코드 변경사항

커밋 하기전, [Stage All] 버튼을 눌러 모든 변경사항을 '스테이징'에 올려야(또는 넣어야) 한다. 변경사항이 스테이징 상태에 있어야만 커밋을 할 수 있기 때문이다. (스테이징은 별도 포스팅으로 다룰 예정이다) 우선 [Stage All] 버튼을 누르면 화면이 어떻게 변하는지 주시해 보자.

스테이징 상태

[Stage All] 버튼을 눌렀더니 모든 변경사항이 스테이징으로 넘어갔고, 수정(Modifiy)를 의미 하는 M버튼에는 파랑색 음영표시가 들어왔다. 그러나 아직 [Commit] 버튼은 비활성화 상태다. 아직 커밋메세지 (Commit Message) 를 입력하지 않았기 때문이다.

블로그 포스팅을 위한 ContentView Image 및 Text 수정

커밋 메세지를 입력 한 후에는 아래와 같이 [Commit] 버튼이 활성화 된 것을 확인 할 수 있다.

커밋 버튼 활성화

이제 드디어 [Commit] 버튼을 누르면 로컬저장소에는 커밋이 완료가 되고, 상태가 'U'자로 변경 된다. 이것은 로컬저장소에는 커밋을 했지만, 원격저장소에는 Uncommitted 상태이기 때문에 원격저장소인 GitHub에 Push가 필요하다는 의미이다. (이번 포스팅에서는 Push를 하지 않는다.)

Xcode에서 U표시의 의미

이제 다시 프로젝트네비게이터로 돌아와서, 새로운 SwiftUI파일인 SyncView.swift를 생성한다.

신규 파일 생성

새로운 SwiftUI 파일이 생성 되면, 아래 화면과 같이 기본 코드가 표시 된다.

SyncView

import SwiftUI

struct SyncView: View {
    var body: some View {
        Text("Hello, Josync!")
    }
}

#Preview {
    SyncView()
}

기본 코드를 위와 같이 수정 했다. World를 Josync로만 변경한 상태다. 이제 다시 커밋을 위해 Commit 메뉴로 이동해 본다. (Option + Command + C)

커밋창

파일이 신규 생성됐음을 의미하는 A(Add)와 변경사항이 있다는 M(Modify)가 함께 표시되고 있다. 이제 다시 [Stage All] 버튼을 눌러 스테이징 상태로 올리고 커밋 메세지를 작성 후 [Commit] 버튼을 누르면 아래와 같이 2개의 로컬 커밋이 완료된 상태가 된다.

커밋완료