-
[GIT] Git Source Tree 입문WEB/Git 2020. 5. 10. 23:01
git 이란?
형상 관리 시스템(Version Control System)의 한 종류, 주로 개발자들이 프로그램과 관련된 파일들을 저장하는 데 사용합니다. 게임의 세이브 포인트와 유사하며, 언제든지 저장 시점으로 되돌아 갈 수 있습니다.
커밋(commit)
게임의 세이브에 해당하는 행동을 git에서는 커밋이라고 합니다. 사용자는 언제든지 커밋한 시점으로 되돌아 갈 수 있습니다. 커밋을 하려면 저장을 원하는 파일을 묶어서 커밋 명령을 수행하면 됩니다.
스테이지에 올리기(add)
앞에서 커밋하기 전에 저장을 원하는 파일들을 묶는 일을 해야 하는데 이 작업을 '스테이지에 파일을 올린다.' 라고 합니다. 혹은 줄여서 'add' 라고 표현합니다.
github에 업로드(push)
커밋을 하면 현재 작업 내용의 세이브 데이터가 내 컴퓨터에 저장됩니다.
이걸 github에 업로드하면 마치 요즘 유행하는 스팀이나 PS4, 각종 모바일 게임의 원격 저장과 비슷한 일을 합니다. 다른 사람이랑 공유할 수도 있고 내 컴퓨터의 데이터가 날아가도 안전하게 다시 복구할 수 있습니다.
github에 업로드 하는 걸 git에서는 'push'라고 합니다.
커밋 주의사항
- 1. 반드시 한 번에 하나의 논리적 작업만을 커밋합니다.
- 2. 커밋 메세지를 잘 적어야 합니다.
※ 커밋 메세지는 미래의 자신과 다른 개발자들을 위해서 꼼꼼히 적어야 합니다!
커밋 메세지 작성법
- 1. 첫줄에 간단하지만 명확하게 내용을 작성합니다.
- 2. 한 줄 비우고
- 3. 자세한 내용을 다음 줄에 작성합니다.
커밋하지 않은 변경 내용 취소(checkout)
'checkout' 명령어를 통해 마지막 세이브로 돌아갈 수 있습니다.
SourceTree에서는 discard를 통해 마지막 커밋 상태로 돌아갈 수 있음
커밋한 파일의 변경 내용 취소(reset)
리셋을 원하는 브랜치를 클릭 후 오른쪽 마우스 - Reset current branch to this commit
- soft reset : keep all local changes
- mixed reset : keep working copy but reset index
- hard reset : discarding all working copy changes
선택한 버전을 취소하고 이전 버전으로 올리기(revert)
리셋을 원하는 브랜치를 클릭 후 오른쪽 마우스 - Reverse commit...
※ 리버트를 원하는 브랜치까지 순차적으로 리버트 해줘야한다. (안그러면 conflict 발생)
브랜치(branch)
가상의 작업 환경, 기능 변경을 하고 싶을 때 생성 및 사용
마스터 브랜치(master branch)
사람들과 공유하고 싶은 최종 결과물이 있어야 하는 곳
※ 브랜치를 새로 생성하면 기존의 마스터 브랜치의 내용은 그대로 보존하면서 새로운 작업 환경을 생성하는 것 이라고 생각하면 됩니다.
병합(merge)
한 브랜치의 내용을 다른 브랜치와 합치는 것을 병합(merge)라고 합니다. 현재 브랜치를 헤드 브랜치라고 합니다. 만약에 헤드 브랜치가 master이고 version2 브랜치를 병합하면 version2의 내용이 master에 반영됩니다.
ex) 마스터를 해드 브랜치를 둔 상태에서 version2 브랜치를 오른쪽 마우스 - 'Merge version2 into current branch'
병합시 발생 상황
상황 1 : 헤드 브랜치에 변경 사항이 없는 경우
- 합치려는 브랜치가 헤드 브랜치로부터 시작되었다.
- 그 사이 헤드 브랜치에는 전혀 갱신이 없었다.
- 가장 쉬운 상황이며, 주로 혼자 작업할 때 발생하는 상황
- fast-forward
상황 2 : 가지가 생겨난 경우
- 과거의 커밋으로부터 브랜치를 생성해서 작업을 한 경우
- 새로운 브랜치 작업 이후에 헤드에 다른 새 커밋이 있는 경우
- 여러 브랜치를 동시에 작업하면서 병합을 시도할 경우
병합 해결 방법
- 수작업
- Resolve conflicts - Resolve using Mine Resolve using Theirs
- Resolve conflicts - Resolve using Theirs
병합 해결 후
Uncommitted changes 오른쪽 마우스 - Resolve conflicts - Mark resolved 과정을 통해 Git에게 충돌이 해결됐다는 것을 알린다.
'WEB > Git' 카테고리의 다른 글
[GIT] Github Repository와 GitBash 연결하기 (0) 2020.08.08