본문 바로가기
작업/Linux, etc

Sourcetree(소스트리)로 Git Commit, Push

 

 

Sourcetree(소스트리)를 사용해서 Github(원격저장소)와 상호작용 하는 과정입니다.

Git의 Commit, Push, Pull 등 Git으로 수행할 수 있는 작업들은 Sourcetree에서 GUI로 제공합니다.

가장 핵심인 Commit, Push 수행에 대한 정리입니다.

 

 

1. Commit

 

커밋(Commit)로컬저장소에서 작업한 내용을 하나의 버전으로 올리는(업데이트) 과정입니다.

 

아래의 그림으로 설명하자면,

현재 작업 중인 PC의 로컬저장소에는 원격저장소(Github)에서 가져온 버전3의 파일들이 있습니다.

이 중 파일1의 내용을 수정했습니다. 하지만 수정했다는 것은 본인만 압니다.

 

 

Git을 통해 새로 수정한 파일1에 대한 내용을 업데이트(기록)하고 싶습니다.

Commit을 통해 변경된 내용이 있음을 명시하는 것입니다.

버전 관리를 위한 하나의 가지를 새로 만들어 낸다고 생각하면 됩니다.

 

 

※ 이 과정에서 원격저장소(Github)에 업데이트 내용이 반영되지 않습니다.

작업 중인 로컬저장소는 개인이 작업 중인 버전들을 관리하는 역할을 수행하는 것입니다.

최종 업데이트로 원격저장소의 공식적인 반영을 위해서는 "Push" 해야 합니다.

 

Commit 설명

 

 

 

Sourcetree에서 Commit하는 과정입니다.

먼저 작업하는 로컬저장소 탭을 열어야 합니다.

Sourcetree에서 [Local] 탭을 선택 후 작업하고자 하는 로컬저장소를 선택합니다.

 

(1) 로컬저장소 선택

 

 

 

로컬저장소 작업 탭이 나타나며 이전에 있었던 기록들을 확인할 수 있습니다.

해당 화면을 그대로 둔 상태에서 파일 수정 작업을 해보겠습니다.

 

(2) 로컬저장소 탭 등장한 것 확인

 

 

 

 

로컬저장소(GitClone)에 Test 이름의 txt 파일을 하나 생성했습니다.

안에 간단한 문장도 적었습니다.

로컬저장소에서는 파일이 하나 생성되었다는 이벤트가 발생한 것입니다.

 

(3) 로컬저장소에 파일을 하나 추가해서 변경 사항 만들기

 

 

 

 

이벤트가 발생했으니 Sourcetree에서 기록에 대한 내용이 나타났을 것입니다.

"파일 상태"와 "History"에서 변경 사항을 확인할 수 있습니다.

"스테이지에 올라가지 않은 파일"에 변경된 내용이 추가됩니다.

 

 

History 창에서 변경 내용을 확인할 때는

상단의 그래프에서 "커밋하지 않은 변경 사항"을 선택합니다.

 

(4)-1 "파일 상태" 창에서 확인한 업데이트 내용

 

 

(4)-2 "History" 창에서 확인한 업데이트 내용

 

 

파일을 선택하면 내용을 확인할 수 있습니다.

 

(4)-3 파일을 선택하면 변경 내용을 확인 가능

 

 

 

파일 내역의 오른쪽을 보면   +   모양의 버튼이 있습니다.

선택해서 "스테이지에 올라간 파일"에 위치시킵니다.

해당 위치에 있는 파일들이 최종 Commit에 반영되는 파일입니다.

 

올라간 파일을 선택하면 이전 버전과 어떤 차이가 있는지 색상과 설명으로 표현됩니다.

 

(5) Commit할 파일 스테이지에 올리기

 

이제 최종 Commit을 할 차례입니다.

 

Commit을 위해서는 해당 버전에 어떤 변경 내용이 있었는지 설명할 필요가 있습니다.

입력 공간에 변경 내용에 대한 간단한 설명을 작성합니다.

 

이후에 "커밋" 버튼을 선택하면 최종 반영됩니다.

 

 

선택사항인 즉시 푸시는 "Push"를 커밋을 수행함과 동시에 진행할 것인지 정하는 것입니다.

선택한 상태에서 커밋을 수행하면 원격저장소(Github)에 변경된 버전이 즉시 업데이트됩니다.

선택하지 않으면 로컬저장소에서만 변경된 버전이 업데이트됩니다.

 

(6) Commit에 대한 설명 작성 후 "커밋" 수행

 

 

 

 

Commit 완료한 상태를 확인하겠습니다.

가지가 하나 새로 생기면서 "Master" 포인터가 Commit 한 곳으로 이동했습니다.

하지만 원격저장소(PCB = 원격저장소 이름{별명})에 기록된 "PCB/Master" 포인터는 이전 버전을 가리킵니다.

 

 

"Push"를 통해 원격저장소에 변경 내용을 공시하지 않았기 때문입니다.

이 점을 참고해서 보시면 좋겠습니다.

 

(7) Commit 완료한 상태의 저장소 기록

 

 

 


 

2. Push

 

이제 Commit 한 버전을 원격저장소(Github)에도 같이 반영되도록 Push 하겠습니다.

Push를 완료하면 로컬저장소에서 변경한 최신 버전을 원격저장소도 알게 됩니다.

 

즉, 공동 프로젝트에서 개인이 작업했던 최신 버전의 파일을

같은 프로젝트를 하는 팀원도 확인할 수 있게 되는 것입니다.

 

아래 그림은 Push에 대한 과정을 설명합니다.

 

Push 과정 설명

 

 

 

 

Sourcetree에서는 Push 할 항목이 생기면 숫자로 표시됩니다.

숫자의 개수만큼 Push할 내용이 대기 중이라는 뜻입니다.

Push 버튼을 눌러서 대화 상자를 엽니다.

 

Push 대기 중인 표시

 

 

 

Push 작업에 대한 설정 창에서 "리모트 브랜치"를 확인합니다.

각각 어떤 버전을 포인팅하고 있는지 확인하는 것이 중요합니다.

 

Sourcetree에서 "master"라고 적혀 있는 포인팅 위치는 현재 로컬저장소에 저장되어 있는 버전입니다.

그래프에서 가장 위쪽에 위치할수록 최신 상태입니다.

 

 

블로그 기준으로 "PCB/master"는 원격저장소에 저장되어 있는 버전입니다.

원격저장소의 버전을 가리키는 포인터는 "원격저장소 별명(이름)/master"인 것입니다.

 

 

아래 그림에서는 로컬저장소 버전(Master)이 원격저장소 버전(PCB/Master)보다 최신임을 알 수 있습니다.

"리모트 브랜치"에서 원격저장소에 반영하고자 하는 버전의 포인터를 지정합니다.

 

 

설정을 완료하면 "Push" 버튼을 누릅니다.

 

원격저장소에 기록할 버전의 포인터 지정 (리모트 브랜치)

 

 

 

 

Push가 완료되면 로컬저장소의 master와 원격저장소의 PCB/master가 같이 위치한 것을 볼 수 있습니다.

 

원격저장소도 로컬저장소의 최신 버전을 알 수 있게 되었다.

 

 

 

Github에 들어가면 이전과 다르게 Push 한 내용이 반영된 것을 확인할 수 있습니다.

 

원격저장소(Github)에 Push한 결과가 반영

 

 

 

이렇게 Push를 통해 로컬저장소에 변경된 내용을 원격저장소에도 반영할 수 있게 되었습니다!!

 

 

 

-끝-