TIL 07 | git이란?

dk.han·2021년 7월 29일
0
post-thumbnail

git

버전 관리 시스템 중 가장 많이 쓰이는 Tool 이라고 한다.
Youtube 생활코딩의 egoing님은 지옥에서 온 git이라 부르더라....
굉장히 많은 개발자가 사용하고 있고 오픈된 소스코드의 양도 엄청 방대하기 때문이라는데..
개발자에게는 그만큼 필수적이며 꼭 다룰줄 알아야 하는 필수적인 Tool 이다.

버전 관리 시스템 (Software Version Management)의 목적은 크게 3가지.

1. Backup
기능 추가, 수정 등의 이유로 파일이 변경되면 version별로 변경 이력을 함께 저장하여 백업을 해두어 나중에 오류가 생기거나, 비교해 봐야 할 경우 버전 별로 다운 받아 사용이 가능하다.

2. Recovery
백업을 해 두었으니 이전 버전으로 돌아가야 하거나, 파일이 삭제되었어도 언제든지 불러올 수 있다.

3. Collaboration
변경 사항을 저장 할 때는 무엇이 변경되었는지, 누가 변경했는지 등을 꼭 코멘트로 작성 해야 하기 때문에 협업 시에 코드를 하나하나 들여다 보지 않아도 코멘트만 보고 무엇이 수정되었는지를 파악 할 수 있게 해준다.
즉 이전 기록들에 대한 추적이 가능하며, 버전 관리 까지 해주니 협업시 굉장히 유용하다.

git은 소스 코드를 관리하고 추적할 수 있는 버전 관리 시스템
Github는 Git repository를 관리할 수 있는 클라우드 기반 서비스

git 으로 관리되는 파일은 Github와 같은 원격 저장소를 이용해 백업과 협업을 할 수 있다.

git 사용법

1. Fork

Github에서 다른 사람의 repository에서 Fork를 하면, 내 계정에 같은 이름의 repository가 생성되며 소스파일들을 함께 가져오게 된다.

2. Clone

내 계정에 생성된 repository를 Remote repository라 하고, 내 컴퓨터에 마련된 repository를 Local repository 라고 한다. Clone은 Remote 에서 Local로 파일을 복사 해오는 과정이다. 이 과정을 거쳐야만 내 컴퓨터에서 파일들을 확인하고 수정 할 수 있게된다.

3. Add

Local repository는 받은 파일을 작업하는 Work palceStaging area 2가지로 나뉘어 진다.
Work place에서 작업된 파일은 Unstaged file이고 이를 Staging area로 보내기 위해서는
ex) git add "파일명"의 CLI 명령어를 실행시켜 주어야하며, Staging area로 보내진 파일은 staged file이다.

Staging area가 git을 처음 접하는 나에게는 상당히 생소한 단어이자 개념이었다.
파일의 어떠한 변경사항이 repository에 commit 되기 전에 반드시 거쳐야하는 것이 Staging area이고 staged file 만이 tracking이 되기 때문에 굉장히 중요한 과정이자 개념이다.

4. Commit

어떤 내용이 변경되었고 누가 수정했는지와 같은 정보를 추가하여 Local repository에 저장하는 단계를 commit이라고 한다. 어떤 시점에서 어떤 상태로 저장된 버전인지 tracking 할 수 있도록 하는 단계라고 생각하면 된다.
CLI 명령어로는 ex) git commit -m "nav 수정, Daekuen" 과 같이 적어준다

5. Push

Commit 된 file을 Github에 있는 remote repository로 보내는 단계이다.
ex) git push [origin][branch] 와 같이 명령어를 실행 시켜주면 된다.

6. Pull request

Pull Request는 내가 Remote Repository에 Push 해 놓은 변경 사항에 대해서 함께 작업하는 다른 사람들에게 알리는 것을 말한니다. 현업에서는 줄여서 PR이라고 한다.

이 개념들을 그림으로 이해하기 굉장히 좋은 그림을 오늘 교육시간에 봐서 올려본다.

이외에도 git을 이용하는 CLI명령어는 굉장히 많다. 오늘 사용한 명령어들을 적어본다.

  • git status
    내 로컬 staging area, untracked files 목록을 확인 할 수 있다.

  • git restore [파일명]
    commit 되지 않은 local repository의 변경사항을 취소 할 수 있다.

  • git reset
    아직 remote repository에 올라가지 않은 commit을 취소 할 수 있다.

  • git init
    디렉토리를 git repository로 변환하거나 초기화하는데 사용.

  • git remote add origin [Repository 주소]
    내 Local repository에 내 Remote repository 연결

  • git remote add pair [Repository 주소]
    내 Local repository와 협업하는 사람의 Remote repository 연결

  • remote -v
    현재의 Local repository와 연결된 모든 Remote repository 목록 확인

오늘 git을 사용하면서 가장 어리버리 했던 부분은 merge(합병) 되는 개념이었다.
내가 A라는 파일의 10번째 줄을 수정해서 commit까지 해놓았고, pair가 A라는 파일의 10번째 줄을 수정해서 push해논 것을 내가 pull로 당겨온다면, 똑같은 부분을 둘 다 수정했기 때문에 충돌이 일어나, 파일을 수정해 주어야 한다.

이 개념을 잘 이해하지 못해서 정말 여러번 try 했다..... 그래도 이해했으니 다행.

그리고 push 하는건 정말 신중하게 결정해야 한다.
지금까지 쌓아온 결과물들이 있는데 잘못된 파일을 push하게 된다면 큰 일이 벌어질 수도 있다.

git을 앞으로 자주 사용하면서 새로 익히게 된 사용법은 꾸준히 블로그를 통해 업데이트 하겠다.

0개의 댓글