//구글콘솔 광고 추가가
728x90
반응형

소스트리에서 브랜치는 반드시 알아둬야 할 작업이다.

하나의 소스트리 안에서 안정적인 작업과 안정적이지 않은 작업을 동시에 진행시켜야 할 때 마음 편하게 작업하기 위해서 꼭 알아둬야 할 내용이다.

마치 각각의 프로젝트에서 작업하는 느낌으로 작업하다가 나무 접목 시키듯 하나로 병합해 줄 수 있는 작업이랄까.


우선 브랜치를 만들어보자. 


 

 

소스트리에서는 처음 저장소를 만들 때 main이라는 기본 브랜치가 제공된다. 

새로운 브랜치를 만들어 주기 위해 아래 동그라미로 쳐둔 곳에 있는 브랜치 버튼을 눌러서 브랜치를 눌러주자.

 

 

 

브랜치를 누르면 새 브랜치로 만들어줄 이름을 적어주고, 브랜치 생성을 눌러주면 브랜치가 새롭게 생성된다.

 

두 개 이상의 브랜치가 존재하게 되면 브랜치를 활성화시켜서 작업하면 되는데 이때 활성화 시켜주는 방법은 작업할 브랜치를 선택해서 더블 클릭해 주는 것이다. 활성화가 되면 아래 그림처럼 브랜치 앞에 동그라미가 자리한다.

동그라미가 되 있는 브랜치가 현재 활성화된 브랜치이다.

 

활성화를 시켜준 브랜치에서 작업을 한 후에 커밋해 주면 각각의 활성화되어 있는 브랜치에 작업이 쌓이는 건데

 

마치 나중에 보면 지하철 노선도 처럼 그래프가 만들어지는 것을 확인할 수 있다.

 

 

이제, 병합(merge)에 대해 알아보자.
브랜치를 나눠서 작업을 하다 보면 언젠가는 병합을 해줘야 하는 상황이 온다.

 

 

Dev에서 작업한 것을 main에 합쳐줄 때 우리는 병합(merge)을 해주어야 한다.

받아 오려고 하는 브랜치를 활성화 시켜준 것처럼 선택(체크아웃)을 해준 후 가져올 브랜치에 마우스를 가져다 두고 오른쪽 버튼을 클릭해서 현재 브랜치로 Dev(브랜치 이름) 병합(Merge 브랜치 이름 Into current Brunch)을 클릭해 준다. 

현재 선택되어 있는 브랜치로 받아오려는 브랜치를 병합해 주겠다는 뜻이다.

 

이 버튼을 클릭해주면 손쉽게 브랜치가 병합되는 것을 볼 수 있는데, 아무 문제 없이 병합되는 것을 본 다면 그것은 행복이다.

 

 

아래 이미지를 봐보자. 충돌 병합이라는 팝업이 떠있다.

비극의 시작

 

브랜치를 할때 우리는 가끔, 혹은 자주 이 비극을 경험하게 될 것이다. 비극의 시작엔 충돌이 있고 비극의 끝에도 역시나 충돌이 있다.

다른 브랜치에서 같은 부분을 수정하게 됐을 경우 Git은 자동으로 뭐가 더 옳은지 생각해서 병합을 해주지 않는다. 

이러한 경우에 소스트리는 충돌되었다는 것을 위의 이미지처럼 알려주며, 우리는 문제가 발견된 충돌을 해결해야 한다.

충돌을 해결하기 위해 우리는 알아둬야 할 게 있다.

 

 

충돌이 나면 파일 상태에 충돌난 파일 앞에 ! 모양으로 문제가 있다고 나온다. 이 파일에 마우스를 가져다 두고 오른쪽 버튼을 클릭해서 충돌 해결 버튼을 눌러보면 다양한 애들이 보일 것이다.

 

알아둬야 될 몇 가지를 봐보자.

1. "내 것"을 이용해 해결
: "내것"을 이용해 해결 버튼을 누르면 다른 브랜치에서 수정된 작업을 무시하고 내 것을 남기겠다는 소리이다. 

2. "저장소" 것을 사용하여 해결
: "저장소" 것을 사용하여 해결 버튼을 누르면 저장소에 있는 작업을 살리고 내가 작업한 부분을 날려 버리겠단 뜻이다.

3. 해결 된 것으로 표시
: 해결된 것으로 표시 버튼은 내가 작업한 부분에서 충돌 난 부분을 다시 수정해서 겹치는 곳이 없게 만들어두고 누르면 되는 버튼이다. 

 

충돌 해결을 한 후 다시 커밋하고 병합하면 해결된다. 

다들 충돌따위는 일생에 없이 단 한 번에 병합되길 바란다.

728x90
반응형
728x90
반응형

소스트리에는 커밋한 내용을 되돌리는 기능이 두 가지 있다. 하나는 "이 커밋까지 현재 브랜치를 초기화(reset)" 시키는 것, 또 다른 하나는 "커밋 되돌리기(revert)" 기능이다.

 

두 개 다 방법이 다를 뿐 원하는 커밋까지 되돌릴 수 있다.

우선 싹 다 지워버리고 깨끗하게 돌아가는 방법인 reset에 대해 알아보자.  

 

reset
: 선택한 버전의 상태로 돌아오는 것. 
- 버전을 지워버림.

이름부터 되돌리는 기능보다는 강한 느낌이 드는 reset은 느낌뿐이 아니라 진짜로 다 지운다.
지워주는 부분을 선택해 줄 수 있는데, 일단 돌려두고 싶은 커밋 지점을 찾아 오른쪽 버튼을 클릭하고 reset 버튼을 눌러보면 커밋 초기화가 뜨면서 모드를 세 가지 중 하나를 선택하게 된다. 

Hard는 선택한 커밋포인트 위에 쌓인 모든 작업을 없애버린다. 내 working copy에 있는 부분까지도 다 지운다.
Mixed는 내 Working copy 부분은 남겨두고 지워준다. 내가 작업한 상태는 일단 내 프로젝트에 남겨두는 것. 

 

 

 

revert (reverse Commit)
: 선택한 버전을 취소해서 그 이전 상태로 돌리는 것.
- 버전을 유지하면서 되돌린다.

revert는 reset보단 후하게 남겨두지만 역순으로 위에 있는 커밋된 애들을 다 revert 해줘야 한다.
되돌리고 싶은 커밋까지 한개 한 개 역순으로 다 눌러서 revert 해주면 되는데, 만약에 중간에 빠트리고 안 해주면 충돌남.

 

728x90
반응형
728x90
반응형

당연한 이야기지만 프로젝트가 수정되면 Sourceree에서 커밋을 해줘야 git에 업데이트가 된다. 


 

 

History에는 git에 올라가 있는 파일들을 확인할 수 있고 개발 내용을 볼 수 있다.

이런 개발을 커밋해 주는 부분이 파일 상태이다. 파일 상태를 눌러서 현재 파일에서 추가되거나 수정된 파일들을 스테이지에 올려주고 개발작업(변경사항, 추가사항 등)에 대해 커밋 메시지를 남겨 커밋해 주면 된다.

 

커밋해 주기 전에 항상 Pull을 받아두는 습관을 가져야 하는데, 이유는 Pull을 안 받고 올렸다가 꼬이면 피곤해지기 때문이다.

 

작업하기 전에 Pull 받고 작업하고 Commit 하고 Pull(사이에 또 누군가가 작업해서 올려두었을 수 있음)하고 Push.

 

 

 

commit과 push와 pull에 대해 알아보자.

 

Commit
Commit이란?
- 변경된 부분을 저장소에 기록하는 것이라 생각하면 된다.(게임에서 save 파일 같은 거랄까) 변경된 부분을 포인트로 기록해 두는 느낌.
- Commit을 해두면 변경사항이 계속 쌓여도 Commit 포인트로 되돌릴 수 있다.
(코드에 문제가 발생했을 때, 잘못된 방향으로 가고 있는 문제를 직감했을 때, 그냥 돌아가는게 정신에 도움이 될 때 과감하게 돌아가서 다시 작업하는 게 나을 때가 있다.)

변경한 부분이나 수정한 부분을 스테이지에 올려두고 커밋 메세지를 남겨 커밋을 해준 다음, Push 해주면 git에 업데이트된다.
++
여러 개의 작업을 해주고 Commit을 해줄 때에는 한 번에 다 올리지 말고 작업 내용에 따라서 분리시켜 커밋해 주는 것이 좋다. 그래야 문제가 터졌거나, 변경사항이나 추가 구현 부분에 대해 편하게 찾을 수 있다. 
커밋 메세지는 최대한 깔끔하고 잘 알아볼 수 있도록 적어주는 게 좋다.
내용이 길어진다 싶으면 제목과 내용을 분리해서 줄 나눠 넣어주자.

 

 

Pull
Pull이란?
- 간단하게 Git에 새롭게 업데이트된 내용이 있으면 받아오는 것.
- 저장소에 올라와 있는 커밋이 내 프로젝트에 반영되어있지 않을 때, pull을 눌러주면 커밋되어 있는 변경사항이나 수정사항이 적용된다.

 

 

Push
Push란?
- 업로드시키는 것과 같다. 커밋을 한 작업을 저장소에 올려두는 것.

 

 

 

이렇게만 놓고 보면 세상 간단한 건데 충돌이 발생하면 머리가 아프다.

회사에서 작업하다 충돌 나면 누가 작업한 걸 살릴지도 고민하게 되고, 날리게 되면 다시 작업해야 하는 경우도 있다. 

 

충돌 나기 전에 미리 스테이지에 올릴 때 자신이 작업한 게 아닌데 뭔가 수정되어 있다고 떠 있을 땐 파일 변경 사항 폐기 버튼을 눌러서 미리 쓸데없는 충돌을 방지하자.

제거 버튼이 아니다. 파일 변경사항 폐기 버튼이다. 위아래로 있어서 조심해야 됨.

 

 

++ 소스트리 구역 이름들

 

 

commit 할 파일들이 working Copy에 있고 스테이지에 올리기(add)해주면 index(== staging area)에 올라가게 되고 staging area에 올라와 있는 파일들만 커밋 내용과 함께 commit 시켜주면 index에 있는 파일들만 저장소로 커밋이 됨.

working copy에서 스테이지에 올리기를 해주지 않은 파일들은 저장소에 커밋되지 않고 내 프로젝트에만 남아있는 상태. 

728x90
반응형
728x90
반응형
버전 관리 시스템 == 버전 컨트롤 시스템 == 형상 관리 == 소스 관리
기능의 개선, 버그의 수정 등 변화를 관리하는 것을 의미함.

 

 

여러 종류의 버전관리 시스템들이 있고, 이들을 쉽게 사용 가능하게 해주는 프로그램들이 다양하게 존재한다.

나는 버전관리 시스템으로 Git을 사용하고, SourceTree를 사용한다.

우선 Git을 설치하고, SourceTree를 설치해서 사용해 보자.

 

Git 설치 
: 여기서 자신의 컴퓨터에 맞게 git을 설치해 주자.

https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%84%A4%EC%B9%98

 

Git - Git 설치

이 책은 Git 2.0.0 버전을 기준으로 썼다. 대부분의 명령어는 그 이전 버전에서도 잘 동작하지만, 몇 가지 기능은 아예 없거나 미묘하게 다를 수 있다. Git의 하위 호환성은 정말 훌륭하기 때문에 2.0

git-scm.com

 

SourceTree 설치

https://www.sourcetreeapp.com/

 

Sourcetree | Free Git GUI for Mac and Windows

A Git GUI that offers a visual representation of your repositories. Sourcetree is a free Git client for Windows and Mac.

www.sourcetreeapp.com

 

다 설치했다면 저장소를 만들어보자.

 

+ 버튼을 눌러서 Clone을 할지 Add를 할지, Create를 할지 선택해 주면 된다.

Create를 해주고 싶다 경로와 이름을 설정해서 생성해 주면 되고,

협업을 할 때는 보통 github에서 Clone 해줄 프로젝트의 HTTPS URL을 가져와서 Clone 해준다.

 

 

728x90
반응형

+ Recent posts