2 기초

source: categories/study/git-beginner/git-beginner2.md

2.1 Git

  • Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. (Git 공식사이트)

    1. Git은 코드를 버전별로 관리를 할 수 있게 해줍니다. 꼭 코드에만 국한되어있는 것은 아닙니다.
    2. Git은 분산 버전 관리 시스템입니다.
      이것이 Git의 가장 주요한 기능이라 할 수 있습니다.
      distributed가 의미하는 것이 ‘분산'인데, 왜 분산이냐면 코드가 중앙 저장소에만 있는 것이 아니라 이 코드를 내려받는 모든 사람들이 다 원본을 갖고있게 되기 때문입니다.
      그래서 중앙 저장소에있는 코드가 사라지더라도 한명이라도 누군가 이 코드를 내려받고 Git을 사용하고 있었다면 그곳에서 복구를 할 수 있게됩니다.
    3. Git은 작은 프로젝트에서 큰 프로젝트까지 모두 사용할 수 있습니다.
    4. Git은 빠르고 효율적입니다.
  • CVS, SVN, Mercurial 등 다른 버전관리 시스템도 있습니다.

그렇다면 많고많은 버전관리 시스템에서 왜 Git을 사용해야될까?

2.1.1 Why Git?

  1. 공유(협업)

    • 실무에서 일할 때 하나의 프로젝트 내에서 부분을 나눠서 개발하게 됩니다.
      작업이 끝난 코드를 공용 코드에 합쳐야 개발서버와 리얼서버에 반영할 수 있습니다.
    • 내가 작업한 코드를 공용 저장소에 합치기 전에 코드 리뷰도 받을 수 있다는 장점도 있습니다.
      깃헙 같은 것들을 이용하면 코드를 무조건 합치는 것이 아니라 합치기 전에 pull request라는 것을 보내면서 거기서 코드 리뷰를 받을 수 있습니다.
  2. 보관(백업)

    • 안전하게 웹 저장소에 코드를 저장해놓을 수 있습니다.
    • 언제 어디서든 코드를 내려받을 수 있습니다.
      집에서 작업한 것을 공용 저장소에 올려놓기만하면, 회사에가거나 다른 노트북을 사용하더라도 그곳에서 코드를 내려받아서 내가 하던 작업을 이어서 할 수 있습니다.
    • 깃헙에 올렸다고 한다면 깃헙이 망하지않는 이상 내 코드는 안전하다고 할 수 있습니다.
  3. 대세

    • 수많은 IT 기업들에서 사실상 표준으로 Git을 사용합니다.
      엔터프라이즈 GitHub 또는 GitLab 등을 사용하여 코드를 관리하고 있습니다.
    • 코드를 아무리 잘 짜도 코드를 공유하는데 어려움을 겪으면 실무에서 일하기 힘듭니다.
  4. 기타

    • 개발자 뿐만아니라 디자이너나 기획 직군도 사용하면 유용합니다.

2.2 Setting

2.2.1 계정 연결

git config --global user.name "hyungju-lee"
git config --global user.email "aaaaa@gmail.com"

--global 옵션은 PC 전체에서 사용하겠다는 뜻입니다.
--global 옵션을 주지 않으면 해당 git 프로젝트에서만 설정이 적용되게됩니다.
user.email엔 깃헙 id에 등록한 이메일을 입력하시면 됩니다.

2.2.2 alias

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold green)(%ar)%C(reset) %C(white)%s%C(reset) %C(dim white)- %an%C(reset)%C(bold yellow)%d%C(reset)' --all"

alias를 사용하는 이유는 Git 명령어를 짧게 사용하기 위해서입니다.
위와 같이 checkoutcobranchbr로 줄여서 사용하면 작업 효율이 올라갑니다.

  • alias 및 현재 Git 설정 상태 보기: git config --list
  • 참고: Git Alias

2.3 GitHub에 코드 올리기

  • GitHub?

    • 온라인 코드 저장소
    • 무료, 단 비공개 저장소의 경우 3명 이상이 사용할 경우 유료
    • 많은 오픈 소스들이 GitHub을 사용
mkdir <폴더이름>
echo "내용아무거나" >> README.md
git init
git add README.md
git commit -m 'initial commit'     
                              //  위에서 alias 했으므로 alias 등록한 명령어로 아래와같이 커밋해도된다.
                              git ci -m 'initial commit' 
git remote add origin https://github.com/<깃아이디>/<레포이름>.git
git push -u origin master

2.4 GitHub에서 코드 받기

2.4.1 clone

  • 원격 저장소에있는 코드를 내려받는 것
  • 실무에서 일하면서 새로운 repository를 만들어서 올리는 것보다 이미 다른 사람이 만든 것을 clone하는 경우가 더 많다.
git clone https://github.com/<깃아이디>/<레포이름>.git

코드를 쉽게 clone해서 받을 수는 있지만 push는 아무나하지 못한다.
권한이 있어야만 할 수 있다.