본문 바로가기
Tools

소스트리 완벽분해 가이드 (1)

by 휴몬이 2020. 1. 31.

안녕하세요.

휴몬랩 초보 안드로이드 앱 개발자(Ho Park)가 작성하는 초보 안드로이드 앱 개발자를 위한 글 입니다.

이 글은 초보 개발자 기준으로 개인적인 생각과 경험을 바탕으로 작성되었습니다.

 

이번 글은 개발 협업 유용하게 사용되는 SourceTree 대한 입니다.

 

SourceTree는 윈도우와 MAC 사용자를 위한 GIT 을 그래픽화 시킨 GIT GUI Repository로써 소스관리를 쉽게 도와주며 좀 더 코딩에 집중할 수 있게 만들어주는 프로그램 입니다.

 

소스트리 이외에도 다양한 프로그램들이 있지만 적은 인원으로 Private하게 무료로 사용할 수 있는 장점이 있습니다.

 

제일먼저 소스트리를 실행하였을 나오는 상단 툴바에 대해서 하나씩 설명하겠습니다.
[ 버전 : 3.3.7 기준으로 제작됨 ]
UI
버전으로 충분히 모든 것이 가능하기에 Terminal(터미널) 대한 설명은 따로 하지 않겠습니다.

 

한글버전일지라도영문버전으로바꿔서진행하도록합니다.
추후 다른 프로그램을 사용경우를 대비해 만인의 공통어 영어로 하는게 좋겠죠? (그래도 혼합으로..) 
도구옵션일반– Repo Settings – 언어: English – 재시작

 

제일 상단에 있는 바를 (Tool Bar)라고 합니다.
바에는 현재 버전(3.3.7)기준으로 13가지가 있네요.
그럼 하나씩 살펴보도록 하겠습니다.

 

살펴보기에 앞서 알아두면 좋고 유용한 몇가지 용어를 설명하고 넘어가겠습니다.

 

Repository

흔히 프로젝트 저장소 라고 하는데, 앞으로 진행 모든 소스들은 곳에 저장된다고 보시면 됩니다.
Repository는 크게 2개로 나뉘어 집니다.

1) Local 

원격을 제외한 현재 저장소 = 개인이 작업하고있는 컴퓨터에 저장되어있는 공간  

2) Remote

원격 저장소 = 네트워크상에 존재하고있는 저장소를 말합니다.

 

Refresh

새로고침 (단축키:  F5)
이번 버전에선 간혹 바로 변경사항이 적용안되는 경우가 있을 땐 F5를 눌러주시면 됩니다.

 

 

commit
파일 폴더의 추가 변경 사항을 버전화하여 Repository에 기록하는

 

Pull

Pull을 하게되면 Remote Repository(원격 저장소)에 있는 소스를 개인 Local REpository(로컬 저장소)로 가지고 오게됨

순서: fetch-> pull

 

Push

푸쉬를 하게되면 로컬저장소에 있는 소스가 원격 저장소에 올라가짐

순서: commit -> push

 

Fetch 
꺼내다, 가지고오다, 호출하다 라는 의미로 Fetch (페치) 눌렀을 ,
원격서버(Repository)에서 정보를 가져오지만 merge 하지 않는다.
인터넷창에서 새로고침 (F5) 라고 보면 됩니다.

 

Branch

Branch 하면 나뭇가지가 생각이 나겠죠?

소스나무(SourceTree)인만큼 여러갈래로 브랜치가 뻗어 나가는걸 상상할 수 있습니다.

그런의미의 브랜치로 소스를 작성하다보면 A라는 작업을 할 수도있고 도중에 A작업이 다 끝나지 않았는데 B작업을 새로 시작할 수도있고 급하게 또다를 C작업을 할 수도있고 A 와 B 작업을 합칠 수도있고 등등 여러가지 상황이 발생하게 됩니다. 이럴 때 소스트리는 Branch를 사용해서 어떤 작업인지 명시하고 그 Branch 상황별로 작업을 잘 할 수 있다면 깔끔한 버전관리가 가능하게 됩니다.

 

Merge

어떠한 작업들(Branches)을 서로 합친다는 의미로 병합이라고 합니다.

 

Conflict

제일 짜증나고 보기싫은 단어죠.. 여러명이서 작업할같은 위치의 같은 소스를 수정 삭제를 , merge한다면어떻게될까요? . Conflict(충돌)생기면서 오류가 납니다.

해결방법: Working copy 영역에서해당파일오른쪽마우스클릭> Resolve Conflicts 선택 > Mark Resolved(내가충돌을해결했다라는의미) > 해당파일이 Staging Area 이동 > Commit

 

Stash(스태쉬)

Local에서 작업한 소스를 임시로 다른 곳에 저장해두는 기능입니다.
짧게 요약하자면, 소스트리 사용 자체가 협업의 이유, 소스 저장 공유, 버전관리용 등의 이유로 사용하는데 어떠한 포인트에서 작업중 급하게 다른 포인트에서 작업을 하게 경우를 대비해서 임시로 저장해 두었다가 원할 꺼내쓸 있는 그런 의미로 필요한 기능이라 있습니다.


*
주의 – Stash 하지않고 다른 포인트(또는 브랜치) 체크아웃을 경우 작업중이던 소스들이 사라질 있음!!!
, 작업하고 있는상황에서 commit 하지않고 branch 이동할 경우 오류문구가 Stash 해결하면 된다는거죠.

 

Stash관련하여 세밀하고 자세하게 설명된 좋은 글이 있어 공유합니다!

 

Discard (폐기)

Revert Changes, Commit하기 전 수정사항 취소하기/되돌리기
이 기능 하나로 필요없는 수정사항을 하나씩 지우기보다는 한번에 되돌릴 수 있다는 편의성의 기능이 아닐까 합니다.
중요한건Commit 직전의 수정된 소스를 처음 수정 직전의 상태로 되돌리는건데 여기서 Discard의 사용 목적은 단지 편의성이 아닐까 합니다.

 

Tag (태그)

commit을 참조하기 쉽도록 만드는 것이 Tag입니다. Tag를 사용하는 이유는 개발자 마음대로겠지만 주로 버전이 바뀌었거나 특정 표시를 남기고 싶을 때 사용합니다. 간단하게 Tag를 남기게되면 예전 소스를 찾을 때 매우 유용하고 관리도 깔끔하게 더 잘 되겠죠?

 

<태그활용법>
태그는 Lightweight (가벼운) Annotated (주석이 달린) 종류가 있습니다.


1) Lightweight Tag : 특정 commit 대한 포인터만 저장됨 (로컬에서만 적용)
2) Annotated Tag : tag
만든 사람의 이름/이메일, 생성일자, 메세지, 서명 등을 모두 저장

Tag 가장 차이점은 Annotated Tag 다른사람과 공유가 가능한 태그라는 사실!

 

 

Git-flow (깃 플로우)

흔히들 전략이라고 말합니다. 전쟁을 준비하기 전에 전략을 짜듯이 소스관리전에 미리 전략을 짜는거라고 해야할까요?

소스트리를 사용함에 있어서 제일먼저 준비하고 알맞게 사용한다면 잘 짜여진 트리를 활용할 수 있습니다.

깃플로우에 대해선 OG님이 잘 정리해 주셨어요!!

 

Remote (원격)

원격 저장소(Remote Repository)를 뜻하는 RemoteLocal Repository(로컬 저장소)와 연결하여 모든 소스들을 네트워크상의 저장소에서 백업해놓는 기능입니다.
이 버튼을 클릭하면 연결되있는 원격 저장소가 열립니다.

 

Terminal (터미널)

GUI로는 너무 복잡하다 하시는 분은 터미널 사용법을 익히시면 됩니다.

 

Explorer (탐색기)

저장소를 생성한 위치 또는 폴더로 이동한다.

 

Settings (설정)

저장소 설정 페이지에서는 Gitignore을 설정할 수 있습니다. Ignore이라는 사전적 의미는 무시하다 라는 뜻인데요, 버전관리에 있어서 실제로 들어가면 안되는 정보라든가 불필요한 정보들을 미리 설정하여 제외하는 기능을 말합니다.

이 부분에 관련하여 더 자세한 정보는 여기를 클릭해주세요~~ about Gitignore

 

소스트리만 오랜 시간 투자하며 사용하였는데도 여전히 힘든점이 많아 이번 계기로 하나하나씩 알아보는 시간을 가지게 되었습니다. 여기에 나와있는 용어들 하나씩 사용법까지 다 설명해드리고 싶지만 이 부분은 직접 해보시는게 더 빠르고 쉽게 슥듭할 수 있을거라 믿습니다! 왜냐하면 다음 2편부터는 더 복잡한 과정을 준비해볼까 합니다 ToT

 

예) working directory, revision, checkout, rebase, reset, revert, Archive, cherry pick 등

실제로 소스트리 초보한테는 생소하지않은..

개인적으로 너무 어려웠던..ㅠㅠ

한번 잘 파헤쳐 보도록 하지요 :)

댓글