TIL No.16: Git, Github

BLAKE KIM·2020년 7월 11일
0

Git

버전 관리 시스템으로 프로젝트를 진행하면서 변경 사항이 생길 때마다 각각의 버전을 생성하여 관리할 수 있는 프로그램이다. Git은 로컬에서 작동한다.

Github

git을 기반으로 원격 저장소를 제공하는 서비스이다.

로컬에 저장소 만들기

git init

  • 저장소로 만들고 싶은 폴더 안에서 실행해야 한다.

로컬의 폴더와 github 저장소 연결하기

echo "# algorithm" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin <github 저장소 주소>
git push origin master

  • 저장소와 같은 이름의 폴더에서 진행했으며 algorithm이 폴더명이자 github 저장소의 이름이다.
  • 기존의 폴더를 github 저장소와 연결할 때도 github 저장소를 따로 생성해주어야 하는데 이 때 아래 사진의 부분을 check해서는 안된다.
  • 그 후 README.md 파일을 로컬에서 생성해줘야 하는데 이 파일은 디렉토리나 압축 파일에 포함된 기타 파일에 대한 정보를 가지고 있다. git과 같은 저장소에서도 해당 파일을 default로 생성하여 해당 저장소에 대한 설명을 기입하도록 하고 있다. 즉 해당 저장소에 대한 설명이 담긴 파일이라 생각하자.
  • 리드미 파일 생성 후 add하고 commit 후에 원격 저장소와 연결해주는 명령어를 실행하고 push해주면 된다.

github repository clone하기

git clone <저장소 주소>

  • <저장소 주소>는 github를 살펴보면 https와 ssh 두 가지 방식이 이용 가능하다. https는 복제하고자 하는 저장소의 github의 계정과 비밀번호를 알고 있다면 가능하다. 그러나 ssh는 클라이언트에 키를 생성하고 그 키를 github에 사전 등록해야만 사용가능하다. 강력한 보안이 필요한 경우 ssh를 이용한다고 한다. 나는 그냥 https를 이용하겠다.
  • 복제해왔다면 기존에 github 저장소에 있는 파일들이 그대로 로컬로 가져온다.

commit할 파일 추가하기

git add <파일이름>
git add *

  • 저장소를 만들거나 복제해왔다면 해당 폴더에 새로운 파일이나 파일이 수정되었을 때 commit할 준비를 하기 위해 위 명령어를 실행한다.

commit하기

git commit -m "커밋 설명"

github에도 commit된 내용 전달하기

git push origin master

git 상태 보기

git status

  • add하지 않은 경우, add된 경우, commit 후에 다른 변경 내용이 없는 경우 등등을 해당 명령어로 확인할 수 있다.

commit 기록 보기

git log

  • 현재까지 commit된 기록을 해당 명령어를 통해 볼 수 있다.

branch 만들고 삭제하기

git branch <브랜치명>
git branch -d <브랜치명>

  • 많이 만들어도 메모리나 자원을 차지하지 않기 때문에 자주 많이 만들어도 상관없다.
  • 이 때 원격 저장소에서 clone해온 저장소의 경우 origin/<브랜치명>으로 브랜치명이 정해진다. 그래서 최초의 원격 저장소를 clone해왔을 시 branch명이 origin/master로 설정된다.

branch 이동하기

git checkout <브랜치명>
git checkout master

  • master를 이용하면 가지가 아닌 메인 프로젝트가 진행되는 공간으로 다시 이동한다.

branch만들고 해당 branch로 이동하기

git checkout -b <브랜치명>

  • git branch 명령어와 git checkout 명령어를 해당 명령어로 한 번에 수행할 수 있다.

branch와 master 합병하기

git merge <브랜치명>

  • branch에서 따로 작업한 내용을 master와 병합하기 위해서 해당 명령어를 수행한다. 이 때 충돌이 일어날 수 있다. 충돌이 일어나면 충돌이 일어나는 파일을 수정 후 다시 merge한다.

rebase

git rebase master

  • branch에 위치해 있을 때 commit한 내용들을 master에서 commit한 것처럼 보여준다. 그러나 실제 commit한 내용은 따로 있으며 master commit선 상에 있는 branch commit 내용은 복사본이다.

git fetch

git fetch

  • 로컬에는 없고 원격 저장소에는 있는 새로운 commit들을 다운로드한다.
  • 아래 명령어를 차례로 실행하면 원격 저장소의 최신 이력을 받아오고 로컬에 저장된 변경된 내용을 모두 삭제하고 원격 저장소에서 받아온 최신 내용으로 변경한다.

    git fetch origin
    git reset --hard origin/master

git pull

git pull

  • fetch만 한 상태에서는 원격 저장소에서 받아온 내용들이 아직 로컬의 master에 적용되지 않은 상태로 보통 merge 명령어를 이어서 실행한다. git pull 명령어는 git fetch와 git merge 명령어의 작업을 한 번에 실행하도록 한다.

commit 되돌리기

git reset HEAD^
git revert HEAD

  • reset은 명령어 사용 후 되돌아간 commit 이후의 commit은 히스토리에서 삭제된다. 또한 해당 명령어를 사용하면 다른 사람들도 사용할 수 있는 원격 저장소로 push할 수 없다.
  • revert는 되돌아 간 후에도 히스토리가 남아있다.
profile
BackEnd

0개의 댓글