TIL 10. Git & GitHub

jiffydev·2020년 9월 23일
0

Git

1. Git 이란?

Git은 프로젝트의 변경사항을 추적함으로써 버전 관리에 도움을 주는 도구이다. 버전 관리 도구를 통해 다수의 사람들이 협업해야 할 때 작업의 효율을 올릴 수 있다.

2. 기본 용어와 명령어

  • Repository: 프로젝트가 저장되는 곳으로 혼자 작업할 때는 로컬에서, 팀으로 작업할 때는 원격에서 하게 된다. 저장소를 생성하기 위해서는 터미널에서 git init명령어를 입력한다.
  • commit: 프로젝트의 현재 상태를 나타내는 체크포인트. 커밋을 통해 변경사항을 확인하여 진행 상황을 관리할 수 있다. 일반적으로 특정 내용이나 기능을 추가/수정한 후 커밋을 남기게 된다.
  • git status: 저장소의 현재 상태 즉, 파일의 변경과 추가를 모두 확인할 수 있는 명령어이다. 커밋을 남기기 위해서는 git status로 변경사항을 확인하고 staging area에 추가해야 한다.
  • staging files: git add명령어로 원하는 파일을 staging area에 추가할 수 있다. 특정 파일은 추가하고싶지 않은 상황이 아니라면, git add .(점)을 통해 모든 파일을 추가할 수 있다.
  • making commit: staging area에 변경한 파일을 추가했다면 드디어 git commit -m "커밋 메시지" 명령어를 통해 커밋할 수 있다.
  • commit history: git log를 입력하면 모든 커밋의 자세한 내역을 출력한다. 만약 특정 커밋 시점의 코드로 되돌리고 싶다면 ```git checkout 를 사용한다.
  • .gitignore: staging area에 추가하고 싶지 않은 파일이 있다면 .gitignore파일을 생성하여 그 안에 추가하지 않을 파일/폴더명을 한 줄씩 입력한다.

3. Branch

브랜치는 한 프로젝트 안에서 독립적으로 작업을 할 수 있는 공간이다. 협업을 하게 되면 자신의 코드가 다른 사람의 작업에 영향을 줄 수 있는데, 독립된 작업 공간을 만듦으로써 이를 방지할 수 있다. 또한 작업 단위로 기록을 남기게 되므로 문제가 발생했을 때도 해결하기가 쉽다.

  • git branch <new-branch-name>: 새로운 브랜치 생성
  • git checkout <branch-name>: 해당 브랜치로 이동
  • git branch: 모든 브랜치 확인
  • git merge <branch-name>: 해당 브랜치를 현재 브랜치와 병합
  • git branch -d <branch-name>: 브랜치 삭제

GitHub

1. GitHub란?


깃허브는 깃의 저장소를 위한 호스팅 플랫폼이다. 깃과 깃허브의 차이는 위 이미지처럼, 깃이 버전 관리를 위해 로컬에서 작동하는 프로그램이라면, 깃허브는 깃에 저장된 프로젝트를 웹상에 호스팅하고, 코드를 공유할 수 있는 프로그램이라 할 수 있다.

2. Workflow

2-1. 로컬에서 add / commit

Git 항목과 같다.

2-2. 새 저장소(Repository) 생성

우측 상단의 + 를 누르고 New Repository 클릭하면 아래와 같은 화면이 뜬다.

Repository name을 설정하고 다른 항목은 그대로 둔 다음 Create repository를 클릭하며나 저장소가 생성된다.

2-3. 저장소에 코드 push

저장소를 새로 만들었다면 아래와 같은 페이지가 뜰 것이다.

아직 커밋을 하지 않았다면 '...or create a new repository on the command line' 의 과정을 따라 하면 된다.(커밋의 내용은 각자 다를 것이다) 여기서 git remote add origin URL은 로컬 깃 저장소에 '깃허브 저장소 URL의 이름이 origin이다' 라는 정보를 추가해 주는 것으로 로컬 저장소와 깃허브 저장소를 연결해주는 작업이다.
로컬 환경에 이미 저장소가 있다면 '...or push an existing repository ...'의 부분을 따라 하면 된다. 여기서 git push -u origin master 명령은 위에서 설정한 origin을 깃허브의 master에 업로드 하라는 명령이다. 정상적으로 push 되었다면 깃허브의 저장소에 코드가 업로드 된 것을 확인할 수 있다.

2-5. 저장소에 변경사항 반영

위처럼 한 번 push를 했더라도, 코드에 다른 변경사항이 생기면 이를 다시 push 해 주어야 변경사항이 반영된다. 방법은 거의 동일한데,

git add
git commit -m "Messages"

위 명령을 통해 추가 & 커밋을 한 후, git push origin master를 입력해 깃에서 깃허브 저장소로 push 한다.

3. Clone

위에서는 로컬에서 깃 저장소를 생성한 뒤 깃허브 저장소를 생성해서 연결하는 과정을 설명했다면, 클론은 깃허브 저장소를 먼저 생성한 후 클론을 내 로컬에 저장하는 방식이다.

클론할 저장소에 가서 초록색 Code 버튼을 클릭하면 클론 메뉴가 보인다. 여기서 url을 복사한 후 git clone url을 실행하면 실행한 경로에 깃허브 저장소 이름의 폴더가 생성되고, 그 안에는 저장소에 해당 폴더에 있는 모든 파일들이 들어있다.

4. Branch

협업을 위해서는 작업을 분리해야 하는데 그 때 사용하는 것이 브랜치이다. 브랜치에서 먼저 내 작업을 한 후 완료되면 master와 합병하는 것이다.
git checkout -b 브랜치명을 입력하면 새로운 브랜치를 생성하고 이동하게 된다.
브랜치를 생성했으면, 기존과 동일하게 파일을 추가하고 커밋을 해 준다. 커밋을 완료하면 master에 push 하는 것이 아니라 git push origin 브랜치명으로 push 하여 깃허브의 브랜치에 저장한다.

5. Pull Request(PR) 생성

브랜치에 저장이 완료되었다면 프로젝트의 관리자/리더에게 Pull Request를 통해 브랜치에 저장된 작업을 master에 반영해 달라는 요청을 할 수 있다.
저장소에서 Pull Request 탭을 클릭하고 새로운 PR을 생성하면 내 작업에 대한 설명을 작성한다. 그러면 같은 프로젝트의 개발자들이 이 작업을 리뷰, 분석하고 문제가 없다면 master에 병합하게 된다.

5-1. 업데이트 된 코드를 pull

다른 사람의 코드가 master에 업데이트가 되었다면, 로컬 저장소와 깃허브의 저장소의 master는 서로 다른 내용을 갖게 된다. 업데이트 된 내용을 반영하기 위해서는 git pull origin master를 통해 master에 있는 내용을 내 저장소로 pull해야 한다.

추가적인 내용

vscode에서 깃을 설치하고 wsl에서 git push -u origin master 명령을 실행했을 때 Authentication failed 메시지가 나와서 아래를 참고하여 해결.
https://d2fault.github.io/2020/01/15/20200115-resolve-authentication-failure-on-git-clone/

profile
잘 & 열심히 살고싶은 개발자

0개의 댓글