Git 명령어 정리

lsj8367·2021년 2월 24일
0
post-thumbnail

Git이란?

Git이란 소스관리를 위한 분산 버전 관리 시스템이다.

코드를 버전관리 함으로써, 배포 후 major 버그를 발생시 빠르게 rollback 하거나 수정된 코드만을 파악하여 버그를 빠르게 찾거나, 한 프로젝트의 코드를 여러 사람이 함께 작업할 수 있도록
도와주는 등 많은 이점을 가지고 있다.

1. 설정과 초기화

전역 사용자명/이메일 구성하기

    git config --global user.name "이름"
    git config --global user.email "lsj8367@naver.com"

저장소별 사용자명/이메일 구성하기

	git config user.name "이름"
	git config user.email "lsj8367@naver.com"

user 설정이 되어있지 않으면 Github에 있는 Repository에 변경사항을 Push해도 commit 수 집계가 되지를 않고 프로필도 ?로 표시되기 때문에 설정하는 것이 좋다.

전역 설정 정보 조회

git config --global --list

저장소별 설정 정보 조회

git config --list

새로운 저장소 만들기

Git 저장소를 만들고자 하는 폴더에서 다음과 같이 입력한다.

git init
git remote add origin (git repository url주소)

이 두가지를 한번에 하는것이 아래의 명령어이다.
먼저 Github repository 주소를 가져온 후에 입력할것.

git clone (Github repository url주소)

참고로 clone 명령어는 repository 이름으로 된 폴더를 생성하고 안에 .git 폴더를 같이 만들어준다.

2. 기본적인 사용법

새로운 파일을 추가하거나 존재하는 파일 수정하고 커밋하기

git add <파일명>
git commit -m "<커밋할 메세지>"

만약 한번에 commit할 자료의 양이 많다면 git add . 을 사용하도록 하자.

원격저장소에 반영하기

git push origin main
or
git push

원격저장소의 파일 최신버전으로 가져오기

git pull origin main
or
git pull

오픈소스를 fork하여 내 github repository에 생성하였을 경우에는 최신 버전을 받기 위해서는

git remote add upstream 오픈소스 url

명령어를 수행하여 upstream이라는 이름의 remote를 사용하여 pull을 진행하면 된다.

git pull upstream main

push를 진행하고싶다면 fork된 자신의 원격저장소에 git push를 진행하고 github에서 pull request를 진행하면 된다.

3. Branch

branch는 현재 진행중인 branch에서 가지를 나누어 독립적으로 어떤 작업을 진행하기 위한 개념이다. 각각의 branch는 다른 branch의 영향을 받지 않기 때문에, 여러 기능에 대한 작업을 동시에 진행할 수 있다.

브랜치 목록 보기

git branch

현재 브랜치에서 새로운 브랜치 생성하기

git branch <새로운 branch이름>

브랜치 이동하기

git checkout <이동하고싶은 branch>

현재 브랜치에서 새로운 브랜치를 생성하고 그쪽으로 이동하기

git checkout -b <새로운 branch이름>

브랜치 이름 변경하기

git branch -m <변경전 브랜치 이름> <새로운 브랜치 이름>

브랜치 삭제하기

git branch -d <삭제할 브랜치>

4. Merge

각기 다른 브랜치에서 기능구현이나 오류 작업을 완료했을 경우에 정상적으로 작동하는 main이 되는 브랜치에 병합을 하는 Merge 명령이다.

임의의 dev라는 branch에서 main으로 병합하기

(dev) git add .
(dev) git commit -m "한데까지만 커밋"
(dev) git checkout main
(main) git pull origin main
(main) git checkout dev
(dev) git merge main

dev 브랜치에서 작업 도중 다른 커밋이 main브랜치에 push가 되어서 main을 최신상태로 바꾸고 병합을 하려면 일단 dev브랜치에서 작업하던것을 commit 한후에 main브랜치로 이동을하여 pull을 받고 dev브랜치를 main브랜치와 병합해준다.
main 브랜치는 항상 최신의 상태를 유지하고 있어야 한다. 그래서 pull을 먼저하여 최신의 상태로 유지한다.

5. Git 이력

모든 이력 보기

git log

6. Git 되돌리기

저장소에 잘못해서 이상하게 저장소에 반영이 되었거나 수정되지 않은채로 잘못 push 했을 경우에 되돌리기를 사용해야한다.

Git reset

5번에서 살펴보았던 이력을 조회하여 원하는 시점으로 되돌리고 싶을때 reset을 사용한다.

git reset <옵션> <돌아가고싶은 커밋>

옵션에는 hard, soft, mixed(기본값: 옵션을 넣지 않았을때)가 있다.

  • hard - 돌아가려는 이력 이후의 모든 내용을 지워버린다. 이 이후에 있던 commit들은 지워지고 초기화가 된다.
  • soft - 돌아가려는 이력으로 되돌아 가지만, 그 다음의 commit들은 내용이 지워지지 않고 곧바로 다시 commit할수 있는 상태로 돌아간다. 스테이지에 올라갔던것들은 올라간 상태로 반영이 되기도 한다.
  • mixed - 돌아가려는 이력으로 되돌아 가는데, 이후 내용들도 그대로 있지만, 인덱스가 초기화되어 다시 add 부터 해줘야하는 상태로 돌아간다.

돌아가고싶은 commit 대신에 지금 시점부터 n개 이력으로 돌아가는 명령어는 다음과 같다.

git reset HEAD~n

여기서 n에 숫자를 할당하여준다.

Git revert

revert명령은 commit을 유지하면서 내용만 rollback하는 경우에 사용한다.
즉, 원격저장소까지 push가 되었을때 revert를 사용한다.
commit이 유지되기 때문에 remote repository 충돌이 적게 난다.

git revert <되돌릴 커밋>
git revert <되돌릴 커밋...시작커밋> <<<--- 여러개를 선택하려고 할때
profile
기록을 많이 하자!💻

0개의 댓글