코드 저장소

공부에는 끝이 없다!

Git

GIT - 소스트리 이용하기

VarcharC2K 2023. 12. 28. 15:46

이전 시간에는 소스트리를 설치하여 로컬 저장소를 연결하고, 원격 저장소에 있는 코드를 로컬로 받는 작업을 진행해 보았다.

이번에는 소스트리를 이용하여 실제로 Commit, Pull, Push등을 진행해 보겠다.

우선 로컬 저장소에 있는 코드를 조금 수정하여 Commit을 만들어보자.


소스트리를 이용하여 Commit과 Push하기

 

 

로컬 저장소에 있는 코드에 변경사항이 생기면 다음과 같이 소스트리가 코드 변경을 감지하여 커밋에 알림이 뜨게 된다.

(현재 app.js 파일에 코드를 일부 수정한 상태이다)

앞서 설명했듯이 Commit 작업을 진행하기 위해선 Add를 통하여 파일을 추가해 주어야 한다.

 

화면 하단을 보면 스테이지에 올라가지 않은 파일이라는 목록이 보일것이다.

하단 목록에는 우리가 파일을 변경하였지만, 아직 커밋되지 않은 파일의 목록이 나타난다.

파일 앞쪽에 보면 아이콘 표시가 있는데 이 표시들은 해당 파일의 상태를 말한다.

예를 들어, app.js파일은 이미 원격 저장소에 올라간 파일이므로 코드 변경이 된것으로 감지를 하지만, index.html은 원격저장소에 존재하지 않으므로 추적되지 않음이라는 상태로 나타날 것이다.

 

*추가적으로, .idea/~라는 파일이 보일텐데 이건 필자가 IntelliJ를 사용해서 생긴 IDE의 파일들이다. 해당 파일 자체는 원격 저장소에 올릴 필요가 없으므로, .gitignore에 .idea/라는 경로를 적어주어 해당 경로의 있는 모든 파일들을 무시하겠다라고 설정하면 목록에서 없어진다.

.gitignore 파일은 설정 > 고급에서 바로 편집이 가능하다.

 

그럼 수정된 파일들을 Add 하기 위하여 우측의 + 버튼을 눌러지면 스테이지로 올라가게 된다.

(이전에 우리가 Command로 했던 add 명령을 + 버튼 하나로 실행해주는 것이다.)

파일이 올라가면 화면 하단에 커밋 메시지를 작성한다.

 

작성이 끝났다면 화면 오른쪽 아래의 커밋 버튼을 눌러 커밋을 진행한다.

이전 CLI 방식을 사용하는 것보다 훨씬 간단하게 새로운 Commit을 생성한 것을 확인 할 수 있다.

 

추가적으로 눈여겨 볼만한 것이 하나 있는데, 위의 히스토리를 보면 우리가 방금 작성한 Commit 옆에는 master라는 태그가 붙어있고 아래에는 origin/master라는 태그가 붙어있는 것을 볼 수 있다.

origin은 원격저장소라는 의미이고 master는 우리가 defualt로 생성한 branch명이다.

따라서 히스토리만 보더라도 원격저장소는 현재 새로운 변경사항이라는 Commit 까지만 적용이 되어있고 로컬에는 새로운 커밋메시지 작성이라는 Commit까지 적용이 된 상태인 것을 알수 있다.

또한, 나중에 branch가 갈라지더라도 저 태그를 확인하여 각 branch가 어떤 위치에 있는지 한눈에 확인이 가능하다.

 

이제 생성된 Commit을 Push를 통하여 원격 저장소로 올려 보겠다.

Push는 더 간단한데 리본 탭에 있는 푸시버튼을 누르기만 하면 된다.

 

푸시버튼을 누르면 다음과 같은 선택창이 나타난다.

이것은 원격 저장소의 위치와 Branch를 지정하는 것으로 우리는 지금 단일 master branch만 사용하고 있기때문에 크게 관계가 없지만, 추후 필요에 따라 원하는 branch로 Push를 진행할 수 있게 해준다.

Push할 master branch의 체크를 하고 Push 버튼을 누르면 원격 저장소로 코드를 올리게 된다.

작업이 잘 끝나면 히스토리가 다음과 같이 표시될 것이다.

보면 아까와는 다르게 origin/master가 새로운 변경사항에서 위로 올라온 것을 확인할 수 있다.

이것은 원격 저장소와 로컬 저장소의 Commit 위치가 동기화 되었다는 의미도 된다.


소스트리를 이용하여 Pull 받기

그러면 Pull을 이용하여 원격 저장소에 있는 코드를 로컬로 받아보자.

사용자를 추가하기 위하여 리본탭 상단의 +버튼을 누르고 우리가 이전에 만들어 주었던 GitTestAnother 폴더를 로컬 저장소로 지정해주었다.

 

+를 누르면 새로운 로컬 저장소 추가가 가능하다.

이미지를 보면 이미 원격에 새로운 변경사항이 생긴것을 감지하고 Pull에 1이라는 메시지가 나타난 것이 보일 것이다.

그런데 히스토리를 보면 상태가 조금 이상한것이 보일것이다.

자세히 보면 로컬과 원격의 Commit 위치가 같다고 표시되어있다.

앞서서 우리는 원격 저장소에 Push를 보내 새로운 Commit을 만들었다. (즉 커밋이 3개여야한다.)

그런데 지금 GitTestAnother에서는 2개의 Commit만 보이고 로컬과 원격 저장소가 같은 위치에 있는 것으로 표시된다.

이것은 로컬에 아직 원격 저장소의 상태가 업데이트 되지 않았기 때문이다.

이를 동기화 하기 위해서는 Fetch라는 명령어를 실행해 줄 필요가 있다.

리본 탭의 패치를 누르면 원격 저장소의 상태를 로컬로 다시 내려받을 수 있다.

(진짜 코드를 내려받는 Pull과는 다르다! 상태만 감지하는 것이다)

 

패치가 완료되면 다음과 같이 정상적으로 히스토리가 나타나게 된다.

(origin/HEAD 태그는 일단 신경쓰지 말자)

 

 

보면 앞서 우리가 수행했던 Commit이 다시 나타난 것을 볼 수 있다.

그러면 이제 Pull을 눌러 실제 코드를 내려받아보자.

 

 

그럼 다음과 같은 창이 나타나게 된다. 

가져올 원격 브랜치와 몇가지 옵션들이 있는데 대부분 충돌이 발생했을때에 대한 옵션이라고 생각하면 된다.

우리는 크게 신경 쓸 것이 없으므로 그냥 Pull을 눌러 내려받는다.

 

 

그럼 정상적으로 로컬과 원격 저장소가 동기화 된 것을 확인 할 수 있다.

'Git' 카테고리의 다른 글

Git - Merge와 Conflict  (0) 2023.12.29
GIT - Branch 나누기  (2) 2023.12.29
Git - GUI 이용하기  (0) 2023.12.27
GIT 사용하기 - CLI를 이용한 Push  (1) 2023.12.26
GIT 사용하기 - CLI를 이용한 Commit  (0) 2023.12.25