[Global Configuration]
- 터미널에서 다음 코드를 입력해주면, 유저 네임과 이메일 정보를 매번 푸쉬 풀 해줄 필요가 없어진다.
git config --global user.name <username>
git config --global user.email <email>
- Line ending (줄바꿈 문자)
- 일반 파일에서는 보이지 않는다. 그러나 엔터를 치고 줄을 바꾸는 순간 눈에는 안보이지만 줄바꿈 문자가 추가가 된다.
- Windows : CR (\r) + LF (\n)
- Unix or Mac : LF (\n)
- Windows 사용자와 Mac 사용자는 같은 Git Repository 를 작업할 때 코드에 변경된 내용이 없어도 CRLF 차이로 인해 commit이 발생할 수 있다. ( git은 파일의 다른 부분이 있으면 버전이 다르다고 인식되서 commit을 해버릴 수 있음. 내용 바뀐게 없이 그냥 사용자만 달라졌을 뿐인데도 )
- 일반적으로 윈도우 유저가 해결해야할 문제로 여겨진다.
- Window : 가져올 때는 LF를 CRLF로 변경하고 보낼 때는 CRLF를 LF로 변경
서버에는 항상 LF로 저장하는게 좋다.
git config --global core.autocrlf true
- Editor 설정
git config --global core.editor <editor>
- 전체 설정 확인
git config --list
- 항목 별 설정 확인
git config <key>
[git 기본 용어]
Repository
- 소스코드가 저장되어 있는 여러 개의 Branch가 모여있는 디스크 상의 물리적 공간
- Local Repository와 Remote Repostiory로 구분
깃은 분산 처리를 하기 때문에 레포지터리가 서버에도 있고 로컬에도 있다.
서로 변경사항을 반영해가면서 싱크를 맞추게 된다. - 깃은 프로젝트 단위로 버전관리를 하는데, 레포지터리도 프로젝트 단위로 생기게 된다.
(웹하드의 폴더랑은 다른 개념이지만 거의 비슷하다고 보면 된다.)
Checkout
- 특정 시점이나 Branch의 소스코드로 이동하는 것을 의미한다.
- Checkout 의 대상; Branch, Commit, Tag
- Checkout을 통해 과거 여러 시점의 코드로 이동이 가능
Stage
- 작업할 내용이 올라가는 임시저장영역
- 이 영역을 이용하여 작업한 내용 중 commit 에 반영할 파일만 선별하여 commit 을 수행할 수 있음
- 맨 처음 윈도우 폴더에 파일을 모아두면 Woriking directory 에 들어가고, 그 중 파일들을 선정하여 Git에서 관리하기 위해 등록하는 단계가 있는데 이때 Stage 단계에 들어가게 된다. 그리고 수정을 해서 버전을 매기면 Head 영역으로 올라간다.
Commit
- commit 하는 순간 버전이 매겨지게된다.
- 작업할 내용을 Local Repositary에 저장하는 과정
- 각각의 commit은 의미있는 변경 단위이고, 변경에 대한 설명을 commit log로 남긴다.
- commit은 반드시 자주자주 해놓는게 좋다. ( save 개념 )
- commit 단위나 commit log format을 정해놓은 회사나 팀도 있다. (빌드 서버를 사용하는 경우)
Tag
- 임의의 commit 위치에 쉽게 찾아갈 수 있도록 붙여놓은 이정표
- Tag가 붙은 commit은 commit id (version) 대신 tag name으로 쉽게 check out 가능하다.
- 몇 달 뒤에도 다시 돌아가서 확인해야할 필요가 있는 버전은 태그를 달아놓는다. ex) 1.0 버전
Push
- Local Repositary 의 내용 중, Remote Repositary 에 반영되지 않은 commit을 Remote Repositary로 보내는 과정
- Push 하는 순간 다른 개발자들도 영향을 받으므로, 검증되지 않은 코드는 Push 하지 않도록 한다.
( 신입들이 하는 실수 )
Pull
- Remote Repositary 에 있는 내용 중, Local Repositary 에 반영되지 않은 내용을 가져와서 Local Repositary에 저장하는 과정
- 다른 팀원이 변경하고 Push한 내용을 Local Reopositary에 가져올 수 있다.
- Push 과정에서 Conflict (의견 충돌) 가 일어나서 Push 가 거절된 경우, Pull을 통해 Remote Repositary 의 변경 내용을 Local Repositary에 반영하여 Conflict 를 해결한 뒤 다시 Push를 시도해야함.
ex) 같은 부분을 수정했다고 하면, 컴퓨터는 이를 판단 안하고 개발자에게로 판단을 미룸
Branch
- 특정 시점 (commit 단위) 에서 분기하여 새로운 commit 을 쌓을 수 있는 가지를 만드는 것
- 개발의 주축이 되는 branch를 master branch (혹은 main branch) 라고 함
- 모든 branch는 최종적으로 다시 master branch에 merge 되는 형식으로 진행 됨
- 가장 처음 Working Directory를 만들 때 main branch가 만들어진다.
Merge
- Branch 의 반대 개념으로 하나의 Branch를 다른 Branch와 합치는 과정
- Merge 되는 두 Branch 는 주종 관계가 성립. ex) dev branch를 main branch에 merge
- Merge 되는 과정에서 Conflict (충돌) 이 발생하는 경우
Diff를 수정하여 Conflict를 해결한 뒤 Merge를 진행할 수 있음
'Git' 카테고리의 다른 글
[GIT] Push, Pull 해보기 (0) | 2022.07.09 |
---|---|
[GIT] Remote Repository 등록 (0) | 2022.07.09 |
[GIT] Local Repository (0) | 2022.07.09 |
[GIT] 버전관리란? (0) | 2022.07.07 |
깃헙 연동 및 push (0) | 2022.04.25 |