[Git] Git 설치 및 사용법
* 아래 내용은 '코딩애플' 님의 '쉽게 설명하는 git 기초' 영상을 참고했습니다.
- https://git-scm.com/download/win <-- 다운로드 링크!
- Standalone Installer 중 내 windows에 맞는 파일을 클릭. 설치한다.
* 설치 중 아래 내용을 변경해줘야 한다.
- Use Visual Studio Code as Git's default editor (vscode를 기본값으로 설정!)
- Override the default branch name for new repositories
(git init 명령어를 입력하면, 초기 branch가 생성된다. 이때 위의 내용을 선택하면 git이 설정해주는 branch 이름이 아니라, 내가 지정한 이름으로 초기 branch 이름이 변경된다.)
위 내용만 따라가고 나머지는 다 초기 세팅으로 Next를 눌러주자!
[Git 사용방법]
- Windows PowerShell을 켜고 아래와 같이 입력해준다.
git config --global user.name "이름"
git config --global user.email "이메일"
이름과 이메일은 본인 이름과 이메일을 넣으면 된다!
- 다음으로 우리가 git을 활용하고 싶은 프로젝트 폴더로 넘어가서 git init을 해준다. 나의 경우는 조금 늦었지만, 이번에 작업한 Momentum2 폴더를 사용해 볼 예정이다.
cd Momentum2
git init
git init 명령어를 사용하면 .git 이라는 숨겨진 디렉토리가 생성되는데, 이 디렉토리는 Git이 프로젝트의 이력을 관리하는 데 필요한 모든 객체와 참조를 저장한다. hello.txt라는 파일이 있고, 이 파일에 내용을 작성한 후 git add와 git commit 명령어를 실행하면, .git 디렉토리에는 다음과 같은 파일들이 생성된다.
- .git/objects: hello.txt 파일의 내용과 커밋 메시지를 압축해 저장한 파일들이 있다. 이 파일들은 Git이 프로젝트의 이력을 관리하는 데 필요한 객체들이다.
- .git/refs/heads: 현재 브랜치의 이름과 최신 커밋의 해시값을 저장한 파일이 있습니다. 이 파일은 Git이 프로젝트의 브랜치를 관리하는 데 필요한 참조이다.
- .git/HEAD: 현재 브랜치의 참조를 저장한 파일이 있다. 이 파일은 Git이 현재 작업 중인 브랜치를 알 수 있게 해준다.
- 위 명령어를 입력하면, 현재 우리가 위치한 폴더에서 아직 .git 으로 저장되지 않은 파일들의 리스트가 출력 된다.
- 우리가 작성하는 파일에는 README.md 라는 파일을 하나 만들어 주면 좋다. 이는 함께 작업을 하는 사람 혹은 내 작업물을 타인에게 보여줄 때, 그 사람이 이게 어떤 목표를 갖고 작업을 한 건지 한 눈에 파악할 수 있도록 해주는 제품 설명서 같은 파일이다. (물론 우리가 수기로 작성해줘야 한다)
git add README.md
echo "# Momentum2" >> README.md
이렇게 작성한 README.md 파일을 git add 해주고, 우선 프로젝트명 정도만 입력해준다.
- git add 명령어는 작업 영역에서 변경된 파일들을 스테이징 영역에 추가하는 명령어다. 스테이징 영역은 커밋하기 전에 변경 사항을 미리 확인할 수 있는 영역이다. git commit 명령어는 스테이징 영역에 있는 파일들을 저장소에 영구적으로 기록하는 명령어다. 커밋 할 때는 git commit -m "first commit" 처럼 ""란에 메시지를 작성해야 한다.
| 그림 출처 : http://egloos.zum.com/incredible/v/7278471 |
- git add를 하면 위의 그림처럼 staging area로 변경된 파일이 추가된다. 이후 git commit 명령어가 들어올 때 까지 변경된 파일들이 대기하다가 커밋하면 repository(저장소)로 변경된 파일들이 넘어간다. repository는 git으로 관리되는 파일들의 집합니다.
git은 원격 repository와 로컬 repository 두 종류를 제공한다. 보통 원격 repository는 Github를 사용하는 게 일반적이다. 로컬 repository를 사용하면 우리의 로컬PC에 파일이 저장된다.
- git add -> git commit 의 번거로운 과정을 동시에 실행하는 명령어도 존재한다. git commit -a -m "커밋 메시지" 라고 입력하면 된다. 이 명령어는 스테이징 영역을 건너뛰고, 작업 영역에서 변경된 모든 파일들을 커밋한다. 단, 새로 생성된 파일은 커밋하지 않기 때문에 새로 생성된 파일은 git add -> git commit 순으로 처리해야 한다.
git add newHello.txt
git commit -m "hello 수정함"
새로운 파일을 add -> commit 하고 싶다면 위의 명령어처럼 진행하면 된다. 그리고 git을 사용할 때 유용한 명령어는 아래와 같다.
- 여러 파일 스테이징 할 때 : git add 파일1 파일2 ...
- 모든 파일 스테이징 할 때 : git add . or git add -A
- 내가 commit 한 내역 조회 : git log --oneline --all
여기서 git add . 과 git add -A는 아래와 같은 차이점이 있다.
- git add . : 현재 디렉토리와 그 하위 렉토리에 있는 변경된 파일들만 추가한다. 즉, 현재 디렉토리의 상위 디렉토리에 있는 변경된 파일들은 추가되지 않는다.
- git add -A : 작업 디렉토리 전체에 있는 변경된 파일들을 모두 추가한다. 즉, 현재 디렉토리의 위치와 상관없이 모든 변경된 파일들이 추가된다.
만약 최근 commit 한 파일과 현재 파일의 차이점을 알고 싶으면 git diff 명령어를 사용하면 된다. git diff 명령어를 실행할 경우 두 파일을 비교해서 vim editor 같은 모습으로 표시해 준다. 이때, 변경이 많으면 j/k로 스크롤바 조작이 가능하고, 확인이 끝나면 q를 눌러서 종료하면 된다.
하지만 git diff의 경우 가시성이 떨어져서 보통 git difftool 이라는 명령어를 사용한다. git difftool을 입력하면 완전한 Vim editor가 나온다. h j k l 을 방향키로 해서 조작이 가능하고, :q를 통해 종료할 수 있다. git difftool을 편리하게 쓰는 방법은 아래와 같다.
- git log --oneline --all 을 통해 commit한 파일들의 커밋아이디를 확인한다. 맨 앞에 영어, 숫자로 표기된 7자리 난수가 아이디이다.
- 해당 커밋아이디를 git difftool 뒤에 입력해준다. 이렇게 입력할 경우 해당 커밋의 경우만 차이를 비교해서 표시해준다. ex) git difftool 123abcd
- 또는 두 개의 커밋을 지정해서 비교하고 싶다면 커밋아이디를 연속해서 입력하면 된다. ex) git difftool 123abcd abc1234
사실 위의 방법들 보다 vscode에서 extense를 들어가 Git History, Git Graph, GitLens 등을 설치해 사용하는 게 훨씬 가시성이 좋다. git graph를 설치한 후 아래의 순서대로 들어가면 git log 명령어를 입력했을 때 나오는 내용과 같은 내용을 확인할 수 있다.
git에서 가장 중요한 기능 중 하나인 branch의 사용법이다. branch는 말 그대로 가지를 하나 만드는 거다. 내 파일의 분기를 하나 설정해서 그 분기에서 파일의 복사본을 만들어 새로운 코드를 먼저 짜본 후 정상적인 코드라고 판단되면 원본에 합치는 형식이다.
git branch 브랜치명
git switch 브랜치명
위처럼 명령어를 입력하면 branch가 가능하다. 복사한 파일을 사용하기 위해서 git switch 브랜치명 명령어를 입력하면, 해당 파일로 이동해서 파일을 사용할 수 있다.
git switch main
git merge 브랜치명
만약 branch 들을 merge(병합) 하고 싶다면, main(원본) branch로 돌아가서 git merge '병합하고 싶은 브랜치명'을 입력하면 된다. 이 과정에서 우리는 두 개의 결말을 만들 수 있다. 만약 main과 new가 서로 다른 파일을 수정했을 경우 안전하게 merge가 이루어진다. 하지만 main과 new가 서로 같은 파일을 수정했을 경우는 conflict(충돌)가 발생한다.
만약 conflict가 발생하면 conflict 된 코드들을 보여준다. 이때의 해결 방법은 다음과 같다.
- conflict 코드들 중 원하는 코드 하나만 남기고 나머지를 다 지워준다.(vscode에서 해당 코드들을 나열해 주는데, 그 안에서 지우면 된다.)
- git add
- git commit
이 정도가 git에서 사용할 수 있는 기초 코드들의 목록이다. 사용해 보면서 알게 되는 내용들은 이후에 블로그에 따로 더 기재해야겠다.
국비지원에서 강사님들이 왜 git을 사용하라고 하시는지 이유도 잘 모르겠고 사용법도 생각보다 까다로워서 사용하지 않았었다. 그런데 이렇게 정리해 가면서 git을 직접 사용해보니 프로젝트를 진행할 때 유용할 것 같은 기능이 많이 보이는 것 같다. 이후에 다루는 내용들에서는 꾸준히 git을 사용하면서 연습해봐야겠다.
다음 내용은 Github 사용법에 대해서 다뤄보겠습니다!
"기록은 기억을 이기지 못한다."
오늘은 핸드드립 커피가 맛있는 카페에 와서 공부를 했다. 역시 향이 좋은 커피는 마음을 차분하게 만들어주는 것 같다.



댓글
댓글 쓰기