Git

Git을 활용한 형상 관리 1편

Joon0464 2021. 6. 21. 23:32

1. Git 또는 cmder 설치

< 윈도우 git 설치 >

https://git-scm.com/downloads 에서 설치 파일 다운로드

설치 파일을 실행하여 기본 값으로 설치해도 무방하다.

 

< 윈도우 cmder 설치 >

https://cmder.net/ 에서 설치 압축 파일 다운로드 후 압축 풀고 사용한다.

cmder 은 cmd에서 확장 기능을 제공하는 앱으로 git을 기본적으로 포함하고 있다.

 

< git 설치 확인 >

git --version 명령어로 설치를 확인한다.

< cmder로 vscode 사용 >

"code ."을 입력하면 현재 디렉터리를 vscode로 열게된다.

git config --global core.editor "code"		# 기본 에디터를 vscode로 사용하도록 설정
git config --global core.editor "code --wait"	# 기본 에디터를 vscode로 사용하고 git을 대기상태로 전환한다.
git config --global -e				# global 설정을 설정된 기본 에디터로 열여 편집한다.

기본 에디터를 vscode로 설정하고 -e 옵션으로 에디터를 실행하면 vscode가 자동으로 실행된다.
--wait 옵션을 사용하면 vscode를 통해 편집을 완료하고 창을 닫을 때까지 대기상태로 전환된다.

2. Git 사용자 정보 등록

git config --global user.name thdguswns3			# 사용자 이름 등록
git config --global user.email thdguswns31@gmailcom		# 사용자 이메일 등록
git config --global user.name					# 사용자 이름 등록 정보 확인
git config --global user.email					# 사용자 이메일 등록 정보 확인
git config --global --unset user.name				# 사용자 이름 등록 정보 삭제
git config --global --unset user.email				# 사용자 이메일 등록 정보 삭제
git config --global core.autocrlf true(input)			# 맥 사용자는 input 윈도우 사용자는 true로 설정해야한다.
git config --list						# 전체 등록 정보 확인

- core.autocrlf 설정이 필요한 이유

 

윈도우는 텍스트 줄 바꿈할 때 "/r(carrige-return)" 과 "/n(lie feeed)"가 같이 들어간다.

맥은 텍스트 줄 바꿈할 때 "/n(lie feeed)"만 들어간다.

이러한 차이점 때문에 git을 다양한 운영체제에서 사용할 때 줄바꿈 문자열이 달라져 문제가 생길 수 있다.

윈도우에서 core.autocrlf를 true로 설정하면 git에 저장할 때 "/r(carrige-return)"을 삭제하게 되고 git에서 윈도우로 가져올 때는 "/r(carrige-return)"을 자동으로 붙여준다.

맥에서 core.autocrlf를 input으로 설정하면 git에 저장할 때 "/r(carrige-return)"을 삭제하게 되고 git에서 맥으로 가져올 때는 아무런 설정을 하지 않고 가져오게 된다.

3. Git 실전 사용 명령어

1) 워킹트리로 사용할 디렉터리 생성 및 워킹트리 지정

git init	# git 저장소 생성 명령어, 현재 디렉터리를 워킹트리로 지정
		  자동으로 생성되는 ".git" 디렉터리가 실질적인 저장소 역할을 수행한다.
git status	# Git 워킹트리 상태 확인 명령어
	          "-s" 옵션의 겨우 변경 파일이 많을 때 사용하면 내용을 요약해서 표시해줌

.git 디렉터리가 생성되며 숨김처리 되어있다. 실질적인 저장소 역할을 수행함, init을 통해 git을 초기화 하면 master 브랜치가 생성된다.
.git 디렉터리를 삭제하면 master 브랜치가 삭제된다.
git status로 워킹트리 상태 확인이 가능하다. 워킹트리 내에서만 사용이 가능하다.
alias 설정을 통해 명령어를 쉽게 사용 가능하다.

2) Git Work Flow

 

3) Git 스테이징 및 커밋하기

git add		# 새로 생성되거나 수정 된 파일을 스테이지에 추가하는 명령어
git commit	# 스테이지에 존재하는 파일들을 실제 커밋하는 명령어
		  -a 옵션은 기존 파일의 변경사항에 대한 커밋 작업시 스테이지 업로드를 자동으로 진행하는 옵션

스테이지 : 파일들이 commit 되기 전에 위치하는 공간

커밋 : 실질적인 버전 생성을 진행하는 것을 뜻함

실습을 진행할 파일을 생성한다. master 글씨 색깔이 바뀌는 것은 커밋하지 않은 새로운 파일이 추가되어 변경 사항이 생겼음을 의미한다.
untracked에 3개의 파일이 올라간 상태
status 명령어로 확인해보면 untracked된 파일 3개가 출력된다.

 

add 명령어를 사용하여 a.,txt를 스테이징에 추가하고 status로 확인한 모습
a.txt.가 staging area로 이동한다.
git add *.txt를 입력하여 모든 txt 파일을 스테이징에 추가한다. git add b.txt c.txt로 두 파일을 한 번에 지정하여 스테이징에 추가하는 것도 가능
b.txt, c.txt가 스테이징에 추가된 모습이다.
a.txt에 내용을 추가하면 modified 된 a.txt가 tracked에 추가된다.
수정된 a.txt가 tracked에 추가된 모습
다시 git add a.txt 해주면 수정된 a.txt가 스테이징에 등록된다.

 

스테이징에 a.txt가 다시 추가된 모습이다.
git rm --cached * 명령어로 스테이징에 있는 파일들을 untracked로 다시 보낼 수 있다.
다시 untracked로 옮겨진 모습이다.

4) git ignore 파일 생성

스테이징에 추가하지 않고 싶은 파일들은 .gitignore 파일을 생성하여 해당 파일에 내용으로 추가한다.

.gitignore 파일에 *.log 을 추가하여 log.log가 더이상 tracking 하지 않는다.
디렉터리 또는 디렉터리 내의 파일명으로 .gitignore에 추가할 수 있다.

5) Git diff 사용

옵션 없이 git diff를 사용하면 현재 디렉터리의 정보를 보여준다. a/c.txt 는 이전 버전의 c.txt, b/c.txt는 수정된 버전의 c.txt이다. git diff로 내용 변경사항도 확인 가능하다.
--staged 옵션을 사용하면 스테이징에 올라가있는 상태의 파일만 출력한다. 스테이징에 있는 c.txt는 아직 "joon" 이라는 내용이 추가되기 전의 상태인 것을 알 수 있다.

6) 커밋

커멧할 때 Aborting 오류가 발생할 수 있다.
에디터 설정에서 code에 -n -w 옵션을 사용하면 해결된다.
git commit을 입력하면 스테이징에 존재하는 모든 파일을 커밋한다.
커밋 탬플릿에는 커밋의 타이틀과 상세 설명을 작성하는 것이 일반적이다. 반드시 저장하고 vscode창을 닫아야 커밋이 정상적으로 진행된다.
git log 명령어로 커밋 상태를 확인할 수 있다.
c.txt를 수정하고 다시 커밋을 진행할 때 -m 옵션을 사용하여 메시지를 바로 입력하면서 커밋이 가능하다.
스테이징과 워킹 디렉터리에 존재하는 모든 파일을 커밋할 때는 commit 명령어에 -am 옵션을 사용한다.

7) Log를 활용한 커밋 확인

git log			# 전체 커밋 정보 자세히 출력
git log --oneline	# 전체 커밋 정보 간단히 출력
git log --oneline -n3	# 최신 커밋중 3개만 간단히 출력
git log --oneline --all	# HEAD와 관련 없는 전체 커밋정보를 간단히 출력 ( 자주 사용 됨 )

 

HEAD : 사용자가 어떤 커밋 정보를 가리키는지 시점을 나타낸다. 맨 처음엔 Master Branch를 가리킨다.

즉 HEAD가 Master이면 Branch에 관한 정보를 출력하기 위해서는 --oneline --all 옵션을 사용해야 전체 커밋 정보가 출력된다.

커밋 정보를 확인할 수 있다.

8) 원격 저장소(Git Hub)와 연동하여 사용하기

git remote add [원격 저장소 이름] [원격 저장소 주소]	# 원격 저장소 이름 부여 및 원격 저장소 등록
git push [원격 저장소 이름]				# 현재 Branch에서 새로 생성한 커밋들을 원격 저장소에 업로드하는 명령어
git fetch [원격 저장소 이름] [Branch 이름]		# 원격 저장소의 Branch와 커밋 정보들을 로컬 저장소로 동기화
git merge [Branch 이름]					# 지정한 Branch의 커밋들을 현재 Branch 및 작업 디렉터리에 반영
git pull						# 원격 저장소의 변경사항을 작업 디렉터리에 반영
git clone						# 저장소를 복제하여 새로운 저장소를 생성하는 명령어

 

github.com에 접속하여 repository를 생성한다.
이름을 지정하고 설명을 작성한 뒤 원하는 옵션을 선택하고 repository를 생성한다.
생성된 repository의 링크를 복사한다.
리포지터리를 Github와 연동한다.
커밋된 파일을 push 명령어로 github에 업로드한다.
Github에서 업로드 된 것을 확인할 수 있다.

- Git clone & pull

git clone을 사용하면 새로운 사용자가 커밋 정보를 그대로 받아온다
새로운 사용자가 커밋하여 github에 업로드도 가능하다.
다른 사용자가 업로드한 커밋 정보를 git pull을 사용하면 가져올 수 있다.

 

'Git' 카테고리의 다른 글

Git을 활용한 형상 관리 2편  (0) 2021.06.23