내일배움캠프

230515 TIL Git 사용하기

Neda 2023. 5. 15. 13:24

Git

Git 시작하기

linux 명령어

  • 현재 경로 내 디렉터리와 파일 리스트 출력: ls -al
  • 디렉터리 생성: mkdir <디렉터리명>
  • 디렉터리 이동: cd <경로>
  • 디렉터리 삭제: rmdir <디렉터리명>
  • 파일 생성 및 파일 날짜 시간 변경: touch <파일명>
  • 텍스트 문서 확인: cat <파일명>
  • 파일 복사: cp <원본파일명> <복사본파일명>

설치 후 git 최초 설정하기

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

git 저장소 만들기

$ git init

git 변경사항 저장하기 add & commit

파일 변경 -> add -> commit

$ touch README.md
$ git add README.md
$ git commit -m 'first commit' 
or 
$ git commit

vi에디터로 commit message 작성하기

$ git commit
<commit 제목>

<commit 내용>
  1. i -> insert mode
  2. 작성 
  3. esc -> :wq (write하고 quit)
  4. git commit 로그 확인

 

Git 변경사항 확인하기

로그 확인 명령어

$ git log

git 로그 변경사항과 함께 확인

$ git log -p

한줄로 로그 출력 ( 짧은 커밋 해시 값 확인가능)

$ git log --oneline

최근 커밋과 작업 디렉터리 비교

$ git diff

최근 커밋과 현재 스테이지 비교

$ git diff --staged

커밋 간 변경 사항 확인하기

커밋 비교, hash1이 과거, hash2가 최신일 때

hash1 커밋에서 hash2 커밋으로의 변경사항을 확인

commit_hash1 -> commit_hash2 

$ git diff <commit_hash1> <commit_hash2>

 

기존 저장소 clone 하기

원격 저장소로부터 로컬로 저장소를 가져온다.

$ git clone <gitHubAddress>

파일 상태 확인하기

$ git status

git 무시 파일 목록 작성

git에 올리지 말아야 할 파일, 디렉터리 지정

$ cat .gitignore

 워킹 디렉터리와 Staging Area에 있는 것을 비교

$ git diff

 

브랜치(Branch)

분기는 나무에서 큰 줄기의 나뭇가지처럼 메인(main)에서 갈라져 나온 서브 브런치.

현재 브랜치 확인

$ git branch

새 브랜치 만들기

$ git branch <newbranch>

브랜치 이동하기

$ git checkout <newbranch>

한 번에 만들고 이동하기

$ git checkout -b <newbranch>

브랜치 삭제

$ git checkout -d <deleteBranch>

브랜치 이름 변경

$ git checkout -M <oldBranch> <newBranch>

 

병합(Merge)

서브 브런치에서 메인 브런치로의 병합

Fast forward 병합

master 브런치에서 갈라져 나온 다른 브런치 foo가 master 브런치 이후의 커밋을 가리키고 있을 때 master 브런치가 foo 브런치와  동일한 커밋을 가리키도록 이동

$ git merge foo

 

병합 충돌

master에서 foo 브런치를 병합할 때 충돌이 생긴다면, 직접 선별하고 해결하여

병합된 커밋을 생성한다.

 

 

커밋 되돌리기

git commit --amend

최근의 커밋의 커밋 내용을 변경할 수 있음

 

git revert

$ git revert <되돌릴 커밋>

기존 커밋이 있을 때 관련된 변경 사항을 되돌리고 이를 새로운 커밋으로 만들어 기록

즉 해당 커밋만 되돌리고 되돌린 변경 사항을 새 커밋으로 작성

git reset

Head를 지정된 상태로 재설정

  • --soft: Head를 지정된 상태로 재설정하고 변경 사항이 스테이징되어 있음
  • --mixed: Head를 지정된 상태로 재설정하고 색인만 재설정(기본값)
  • --hard: Head를 지정된 상태로 재설정하고 색인과 작업 트리를 재설정
$ git reset --soft <되돌아갈 커밋>
$ git reset --mixed <되돌아갈 커밋>
$ git reset --hard <되돌아갈 커밋>

 

리모트 저장소

다른 곳에 위치한 원격 저장소이다

원격 저장소 받기

$ git clone <remote repository>

리모트 저장소 확인

$ git remote -v

리모트 저장소 추가하기

$ git remote add <지정할 remote 이름> <remote 주소>

 

fetch

저장소의 변경 사항을 가져오지만, merge 하지는 않는다.

git fetch origin main
$ git log FETCH_HEAD

 

pull

저장소의 변경 사항을 가져와서 현재 분기에 통합

git pull origin main

gui로만 쓰다가 cli로 사용하는 방법을 자세히 배울 수 있어 좋은 시간이었다.