나는 실무에서도 Git을 사용해봤고 학원을 다닐때도 Git을 써봤지만 Git에 대해 제대로 공부해 본적이 없고 기본적인 기능들로만 사용해왔기 때문에 한번쯤 공부해보고싶었다. 그래서 Git 공부를 시작하게됐다.
Git을 배워야 하는 이유
1. Git은 프로젝트의 시간과 차원을 자유롭게 넘나들수 있도록 해준다
- 시간 - 프로젝트의 버전을 과거로 되돌리거나 특정 내역을 취소할 수 있습니다.
- 차원 - 프로젝트의 여러 모드를 쉽게 전환하고 관리할 수 있습니다.
2.Git은 여러 사람들이 프로젝트에서 협업할 수 있도록 도와준다.
Git 시작하기
- https://git-scm.com/ 로 이동해서 Git을 다운로드한다
- Git Bash를 반드시 포함한다
- Git Bash 를 실행한다.
- git --version 명령어를 입력하여 git이 잘 설치되었는지 확인해본다.
- git config --global core.autocrlf true 를 입력한다.( 협업시 윈도우와 맥에서 엔터 방식 차이로 인한 오류를 방지한다.)
SourceTree 설치
- SourceTree는 Git을 GUI로 다룰 수 있도록 해주는 툴이다.
- https://www.sourcetreeapp.com/ 에서 SourceTree를 설치한다.
VS Code 설치
- https://code.visualstudio.com/ 에서 설치한다.
- Ctrl + ` 로 터미널을 열어본다
현재 PowerShell로 설정 되어 있다.
Ctrl + Shift + P 를 누르고 Select Default Profile 검색하여 선택 하고 Git Bash를 선택한다.
CLI 와 GUI
- 터미널에 명령어를 이용하는 CLI 방식
- 소스트리 등의 프로그램을 사용하는 GUI 방식
공부할때는 CLI로 익혀두는 것이 좋다. 왜냐하면 소스트리와 같은 GUI 툴은 사용하기엔 편하지만 Git 의 섬세한 기능을 다룰 수 있도록 만들어지지는 않았고 Git 에 어떤 기능들이 있고 동작하는지 CLI로 직접 명령어 들로 입력해보면서 익혀두어야 Git에 대해 정확히 이해 할 수있다.
Git 최초 설정
Git 전역으로 사용자 이름과 이메일 주소를 설정한다.
git config --global user.name "이름"
git config --global user.email "이메일"
확인하는 명령어
git config --global user.name
git config --global user.email
기본 브렌치명 변경
git config --global init.defaultBranch main
git이 기본 브렌치 명이 master로 되어있는데 요즘에는 master 라는 이름보다 main 으로 변경하는 것을 권유한다.
프로젝트 생성 & Git 관리 시작
원하는 위치에 폴더 하나를 생성한다.
VS Code를 열어 해당 폴더 경로를 선택한다.
터미널을 열어 해당 명령어를 입력한다.
git init
해당 경로에 .git이라는 폴더가 생성된걸 볼 수 있다.
Git이 프로젝트를 관리하는 내역이 .git에 들어가게 된다.
.git을 삭제하면 git으로 관리하는 내역이 전부 날아간다.
파일을 생성해서 아래 아래 명령어를 입력해본다.
git status
현재 폴더에서 현재 폴더 상황을 git의 관점으로 보여준다.
소스트리를 실행하여 해당 폴더를 드래그해서 옮겨 본다.
로컬 저장소에 추가 되는 것을 볼 수 있다.
Git에게 맡기지 않을 것들
Git의 관리에서 특정 파일/폴더를 배제해야 할 경우가 있다.
- 자동으로 생성 또는 다운로드 되는 파일들( 빌드 결과물, 라이브러리)
- 보안상 민감한 정보를 담은 파일
.gitignore 파일을 사용해서 배제할 요소들을 지정할 수 있다.
secrets.yaml 이란 파일을 생성해서 파일안에 내용을 입력했다.
.gitignore 파일에 secrets.yaml 을 입력한다.
git status 명령어로 확인해본다.
secrets.yaml 파일이 보이지 않는 것을 볼 수 있다.
.gitignore 형식
스프링 부트의 프로젝트를 열어보면 기본적으로 .gitignore 파일이 생성되어 있는 것을 볼수 있다.
gitignore의 형식은 https://git-scm.com/docs/gitignore 에서 더 자세히 알 수 있다.
변화를 타임캡슐에 담아 묻기
변경사항을 확인해본다.
git status
Untracked files : Git의 관리에 들어간 적 없는 파일
파일 하나 담기
git add tigers.yaml
모든 파일 담기
git add .
타임캡슐 묻기
git commit
commit 명령어 입력시 Vi 입력모드로 진입 하게 된다.
Vi 명령어를 통해서 메시지를 작성하고 저장하고 종료한다.
커밋 메시지까지 함께 작성 할수 도있다.
git commit -m "FIRST COMMIT"
내역을 확인 해 본다.
git log
다음 변경사항들 만들고 타임캡슐에 묻기
- lions.yaml 파일 삭제
- tigers.yaml의 manager를 Donald로 변경
- leopards.yaml 파일 추가
파일의 추가,변경,삭제 내역을 확인할 수 있다.
git diff 명령어로 더 자세한 내역을 확인할 수 있다.
단축키는 k 위로 스크롤 , j 아래로 스크롤 , :q는 끄기
git diff
add와 commit을 한꺼번에 할 수도 있다. 새로 추가된 파일이 없을 때 한정이다.
git commit -am "메시지"
과거로 돌아가는 두가지 방법
reset : 원하는 시점으로 돌아간 뒤 이후 내역들을 지운다.
revert : 되돌리기 원하는 시점의 커밋을 거꾸로 실행한다.
git log 명령어를 통해 커밋 내역을 확인한다.
커밋 옆에 문자숫자 조합 코드를 복사하여 git reset 명령어를 입력한다
Add team Cheetas 커밋으로 돌아가보자
git reset --hard (돌아갈 커밋 해시)
파일의 수정 내역들이 돌아온 것 을 볼수있다.
reset 하기 전 시점으로 복원하기
.git 폴더를 지운다.
복사해놨던 폴더를 다시 원래대로 옮겨놓는다.
git은 이 파일들을 변화로 인식하고 있다.
git --hard 명령어를 입력한다.
lions.yaml 파일은 그냥 삭제해준다.
이렇게 하면 제일 마지막으로 커밋했던 파일들로 돌아왔다.
revert로 과거의 커밋 되돌리기
Add George to Tigers 로 커밋을 되돌려본다
git revert (되돌릴 커밋 해시)
입력시 아래와 같은 화면이 나온다.
:wq로 저장한다.
커밋이 한개 더 생겼다. tigers.yaml 파일의 수정내역을 되돌렸다.
Replace Lions with Leopards 로 커밋을 되돌려보자
git revert 명령어를 사용하면 에러가 발생할 것이다.
그 이유는 Replace Lions with Leopards 이 때 leopards.yaml 파일을 추가했고 revert 하면 leopards.yaml 파일은 삭제가 되야한다. 하지만 그 이후에 leopards.yaml 파일을 수정한 커밋내역이 있기 때문에 충돌이 발생해서 오류가 나오는 것이다.
해결방안으로는 먼저 git -rm 명령어로 leopards.yaml 파일을 삭제한다.
git revert continue 명령어를 사용한다.
:wq 로 저장한다.
성공적으로 바뀐것을 볼 수 있다.
커밋하지않고 revert 하기
git revert --no-commit (되돌릴 커밋 해시)
취소하려면 마지막 커밋 기록으로 돌아가는 git reset --hard 입력한다.
SourceTree로 진행해보기
revert
reset
출처
https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EA%B9%83
'git' 카테고리의 다른 글
제대로 파는 Git & GitHub - 얄코 2일차 (0) | 2022.02.09 |
---|