Git GUI SourceTree 사용법(MAC)
우리가 사용하는 gitHub를 원격 저장소라고 하고, 프로젝트가 실제 컴퓨터에 저장되어 있는 저장소를 로컬 저장소라고 한다.
원격 저장소는 다른 사람들과 함께 공유하고 관리할 수 있다.
로컬 저장소는 내 pc에서 관리하는 저장소.
로컬 저장소에서 숨김 파일을 보는 법은 command + shift + .(점)
소스트리에서 로컬 저장소 생성하는 법
원하는 곳에 test라는 이름의 디렉토리를 하나 생성한다.
그 후에 텍스트 편집기로 새로운 파일을 하나 생성하고 test디렉토리에 넣어주면 소스트리에도 추가가 된다.
파일을 git에 추가하고 싶다면 체크박스를 체크하고 커밋 메시지를 작성한 후에 커밋해 주면 된다.
확인을 누르면 커밋 로그가 생성된 것을 볼 수 있다.
그다음 방금과 같이 만든 텍스트를 수정하고 새로운 텍스트파일도 하나 추가해 주고 다시 소스트리로 가 보면
이런 식으로 화면에 어떤 코드가 바뀌었는지 볼 수 있다.
체크박스 체크로 특정 파일만(원하는 파일만) 커밋이 가능하다.
프로젝트 설정 파일만 커밋하고 히스토리를 보면
로그인 기능 구현이라는 파일도 마찬가지로 완료라는 텍스트를 추가하고 커밋하면
이렇게 시간 순으로 커밋이 쌓이는 것을 볼 수 있다.
쌓은 커밋은 푸시해서 원격 저장소에 저장하게 되는데, 여러 사람들과 협업하는 도중 한 파일을 동시에 커밋하고 푸시하게 된 다면 에러가 발생한다. 이러한 오류 때문에 브랜치를 사용해야 한다.
브랜치 생성 방법은 아래와 같다
소스트리 화면 상단의 브랜치를 클릭하면
위와 같은 화면이 나타나는데 명시된 커밋을 체크하면 원하는 커밋부터 브랜치를 생성할 수 있다. 작업 사본 부모는 가장 마지막 커밋에서부터 브랜치를 생성한다.
화면 좌측의 branch를 클릭하면 원하는 branch를 체크아웃 할 수 있다.
branch를 삭제하는 방법은 화면 좌측의 원하는 branch를 마우스 우클릭 한 후 삭제를 클릭해 주면 된다.
이번에는 화면 상단의 브랜치 생성을 클릭 후 작업 사본 부모를 클릭하고 다시 board브랜치를 만들어 보자. board브랜치를 체크아웃 한 상태에서
다시 로컬 저장소로 가서 게시판 기능이라는 텍스트 파일을 하나 생성하고 소스트리로 가 보면
위와 같은 상태가 된다.
board를 커밋하면
이런 상태가 되고 로컬로 가서 게시판 기능 구현 중을 완료료 바꾼 후에 다시 커밋을 해 보자
이러한 상태가 되는데, 마스터에는 적용이 되지 않고, board브랜치에만 적용되어 있는 상태이다. 이 상태에서 마스터로 합치는 작업을 Merge(합병) 이라고 한다.
현재 작업중인(board) 브랜치를 다른 브랜치(Master)에 합치고 싶다면 Master브랜치가 체크아웃 된 상태에서 원하는 브랜치를 마우스 우클릭 한 후, Merge하면 된다.
마스터로 병합을 하고 싶다면 마스터 브랜치로 체크아웃을 하고, board브랜치를 선택한 후에 마우스 우클릭하면
병합할 수 있다.
확인 버튼을 누르면 아래와 같은 상태가 되고 마스터 브랜치에서도 게시판 기능을 확인할 수 있다.
다시 board 브랜치를 삭제하고, 관리자 기능을 브랜치로 다시 한번 해보자.
로그인 기능 구현 완료 부분에서 admin 브랜치를 새로 생성하고, 다시 로컬로 가보면 게시판 기능이 없어진 것을 볼 수 있다.
그 다음 관리자 기능이라고 텍스트 문서를 하나 또 만든다. 텍스트를 쓰고 커밋을 하면 히스토리가 달라진 것을 볼 수 있다.
로그인 기능 구현에서부터 작업(2갈래) 을 한 것을 볼 수 있다.
그 후, 로그인기능과 관리자 기능, 프로젝트 초기설정 파일을 을 수정하고, 다시 소스트리로 가면 커밋하라고 나타나는데,
이 것들을 폐기하면 작업했던 내용들이 전부 지워지고 이전 커밋으로 돌아갈 수 있다.
커밋을 잘못 했다면 커밋을 우클릭하면 이 브랜치를 이 커밋까지 초기화 라는 기능이 있다.
soft를 고르고 소스트리를 보면 되돌아 간 것을 볼 수 있다.
다시 로컬로 가봐도 되돌아간 것을 확인 할 수 있다.
관리자 기능 완료로 커밋을 해 주고,
구현 중으로 이번에는 Mixed를 고르고 다시 초기화한다음
커밋 변경 사항을 보면 인덱스는 남아 있는 것을 볼 수 있다.
이번엔 Hard로 해 보면
커밋하라는 문구도 나타나지 않고 변경 사항 자체 등 인덱스도 전부 사라진 것을 볼 수 있다.
다시 로컬에서 관리자 기능 구현 완료로 텍스트 수정하고 커밋한다.
revert를 사용해 볼 건데, 현재 커밋에서 마우스 우클릭 후 커밋 되돌리기 기능을 사용하면 된다.
revert라는 문구가 나타났고, 로컬로 가 보면 내용이 되돌아간 것을 확인할 수 있다.
revert를 다시 revert하면
이렇게 로그가 나타나는데, 로컬로 가면 다시
구현 완료로 문구가 나타나는 것을 볼 수 있다.
다음은 스태시 기능을 사용해 보자.
관리자 기능에서 추가적인 요청 사항 개발 중이라는 문구를 쓰고
브랜치를 바꾸려고 하면
체크아웃이 불가하다고 에러문구가 나타나면서 브랜치가 바뀌지 않는다. 이러한 상태에서는 커밋을 하고 체크아웃을 해야 하는데, 이 상태에서는 스태시 기능을 사용하면 편리하다.
스태시를 클릭하면
위와 같은 문구가 나타나는데 메시지를 적고 스태시를 하면 다른 브랜치로 체크아웃이 가능하다.
아까 작업하던 것을 다시 작업하고 싶다면
화면 좌측에서 스태시 적용을 클릭해 주면 된다.
커밋 로그를 하나로 합치는 법(Merge하기 전이나 Push하기 전에 해야 한다)
맥을 기준으로 사용법을 작성하였다.
소스트리 같은 git GUI를 사용하면 변경 사항을 쉽게 확인이 가능하며 merge나 브랜치 관리도 더욱 용이하다.