본문 바로가기
Search/Version Control

git 소개

by egas 2021. 7. 15.

지난 글에는 Mercurial에 대해 알아보았다. 오늘은 분산 버전 관리 시스템 (DVCS)에 속하는 Git에 대해 알아보자.

https://egas.tistory.com/44

 

mercurial 소개 (SourceForge)

지난 글에는 SVN에 대해 알아보았다. 오늘은 분산 버전 관리 시스템 (DVCS)에 속하는 mercurial에 대해 알아보자. https://egas.tistory.com/41 SVN 소개 SVN(SubVersion)은 Git과 같은 버전 관리 툴이다. 버전 관..

egas.tistory.com

 

설치

해당 사이트에서 자신의 OS에 알맞은 버전을 다운로드한다.

https://git-scm.com/

 

Git

 

git-scm.com

 

우리는 다음 명령어로 설치가 잘 되었나 확인할 수 있다.

git --version

 

Mac의 경우 brew를 사용해서 다운로드할 수 있다.

brew install git

 

Github

대표적인 git 호스팅 사이트이다. 이외에도 bitbucket와 같은 호스팅 사이트들이 있다.

https://github.com/

 

GitHub: Where the world builds software

GitHub is where over 65 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and feat...

github.com

 

git config

최초 사용 시에는 config 설정을 해주면 좋다. 한번 설정해놓으면 이후 과정에서 따로 인증을 요구하지 않는다.

$ git config --global user.name "holee"
$ git config --global user.email hochan049@example.com

https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EC%B5%9C%EC%B4%88-%EC%84%A4%EC%A0%95

 

Git - Git 최초 설정

Vim과 Emacs, Notepad++은 꽤 인기 있는 편집기로 개발자들이 즐겨 사용한다. Mac이나 Linux 같은 Unix 시스템, Windows 시스템에서 사용 가능하다. 여기서 소개하는 편집기들이 불편해서 다른 편집기를 사

git-scm.com

 

사용법

우리는 git init으로 해당 디렉터리에 git로 관리될 수 있게 설정할 수 있다.

git init

혹은 호스팅 사이트에서 레파지토리를 복제받아서 git을 사용할 수 있다. Readme.md를 호스팅 서비스에 올려보자.

git clone <repo path>

Readme.md 파일을 생성하고 status를 확인해보자 (필자의 레파지토리에는 이미 존재해서 아래 git status로 확인했을 때 modified(수정)가 떴다). 

git status

git status는 현재 디렉터리에서 파일의 상태를 표시해준다. git add. 명령어를 통해 모든 변경/생성 파일들에 대해 추가해지고. commit으로 로컬 저장소에 반영한다. git의 경우 원격 저장소와 로컬 저장소로 나뉘어서 버전 관리를 할 수 있다. 원격 저장소에는 push 명령어를 통해서 반영시킬 수 있다.

gpg 에러가 났는데 보통의 경우에는 commit이 잘 됐을 것이다. (gpg는 따로 설정이 필요하다.) 해당 내용은 아래 링크를 참고하자.

 

https://egas.tistory.com/4?category=481292 

 

gpg를 설정 해보자! (github verified)

https://docs.github.com/articles/about-gpg/ gpg를 설정 해보자! commit의 Verified가 gpg와 연관이 있었다니 지금이라도 알게되어서 다행이다. https://help.github.com/articles/generating-a-new-gpg-key/ 1..

egas.tistory.com

 

TA-DA 원격 저장소에 잘 반영됐다.

pull

git pull

레파지토리를 두 개의 디렉터리에 클론을 하고 하나의 디렉터리에서 커밋을 한 다음 푸시를 해보자. modify를 뒤에 추가했다.

한편, 클론 받은 다른 디렉터리에서 pull로 받아보자.

git 이 경우 mercurial과는 다르게 pull만 받아도 해당 디렉터리에 원격 저장소의 최신 상태가 반영된다.

 

이외에 git fetch도 있다. git pull은  원격 저장소의 내용을 가져와 자동으로 병합 작업을 수행하는 반면, git fetch는 원격 저장소의 최신 이력을 확인할 수 있고, 'FETCH_HEAD'에 자동으로 브랜치가 생성되어서 해당 브랜치로 접근 가능하다.

http://ghcksdk.com/git-master%ec%97%90%ec%84%9c-branch%eb%a1%9c-pull-%ed%95%98%ea%b8%b0-git-refs/

 

[Git] Master에서 Branch로 pull 하기 (+ Git Refs) • EGAS

이미 branch를 작업한 뒤 master의 내용을 가져오려고 다음과 같은 명령어를 입력 했으나 못 가져왔다. git pull로 가져올 경우 오직 origin/master만 가져온다. 따라서, 내 branch의 git ref는 갱신이 안되기

ghcksdk.com

 

merge

그리고 해당 파일로 들어가면 다음과 같이 diff 가 나온다. ======= 기준으로 위에는 현재 디렉토리에 있는 파일 아래는 원격 저장소에 있는 파일에서 같은 부분 충돌 부분이다.

반영하고 싶은 코드로 직접 수정한다.

그 후 변경된 사항을 원격 레파지토리에 반영해주면 잘 반영된 것을 볼 수 있다.

blame

blame 명령어를 통해서 해당 파일의 변경 이력을 확인할 수 있다. (줄단위로 누가 어느 부분을 변경했는지)

git blame README.md

이것을 응용한 vscode 플러그인이 있다. git lens는 해당 줄에 누가 어떤 커밋으로 변경을 했는지 옆에 보여준다.

그 외에도 여러 기능들이 있는데 아래 링크를 참고하자.

https://marketplace.visualstudio.com/items?itemName=eamodio.gitlens 

 

GitLens — Git supercharged - Visual Studio Marketplace

Extension for Visual Studio Code - Supercharge the Git capabilities built into Visual Studio Code — Visualize code authorship at a glance via Git blame annotations and code lens, seamlessly navigate and explore Git repositories, gain valuable insights vi

marketplace.visualstudio.com

 

branch 및 다른 명령어들

branch 및 다른 명령어들에 대해서는 아래 블로그 글에 잘 설명돼있고, 2021년 7월 16일 현재 모든 명령어들이 변경 사항 없이 잘 동작한다. 아래 링크를 참고하자.

 

http://ghcksdk.com/git-%ec%9d%84-%ec%9d%b5%ed%98%80%eb%b3%b4%ec%9e%90/

 

Git 을 익혀보자 • EGAS

Git에 대해 알아보쟈! https://git-scm.com/ Windows에서 터미널 사용을 편리하게 해주는 cmder도 깔아보쟈! 보통 GitHub, Git Bucket, GitLab을 많이 사용한다. 셋중 하나에 아이디를 만들어보자. https://github.com/ ht

ghcksdk.com

 

help

아래 명령어를 입력하면 기본 23개의 명령어들을 볼 수 있다. git의 전체 명령어들을 보려면 -a 옵션을 추가하면 된다.

git help

결론

기본적인 git 명령어에 대해 알아보았다. git의 기본 명령어 개수는 23개이며, 전체 명령어 개수는 137개이다. mercurial 명령어 개수의 2배이다.

 

명령어를 보다가 새로 알게 된 사실인데 git svn 명령어가 존재한다는 사실이다. git에서도 svn 호환이 되며, git을 이용하면 svn 서버를 사용하더라도 git 명령어들을 쓸 수 있다. 여러모로 많은 기능들이 존재한다.

 

지금까지 여러 버전 관리 툴들을 알아보았다. CVCS와 DVCS 사이의 명령어 차이는 존재했으며 가장 중요한 차이는 원격 저장소 유무에 따른 명령어 차이이다.

 

CVCS에서의 commit message는 DVCS에서 push에 해당했고, DVCS에서의 commit message는 로컬 저장소에 저장되는 단위였다. 한편 DVCS는 호스팅 서비스를 제공하는 사이트들도 많이 존재했다. DVCS 경우에 보통 이슈트 레커들과 연동이 가능하기도 하다.

 

mercurial와 git에 대해서는 기본적인 명령어는 모두 동일한 형태였다. 어느 것을 배우거나 러닝 커브는 크게 차이가 나지 않을 것이라고 생각한다. git은 mercurial보다 2배 많은 기능들을 명령어로 제공한다. 예를 들면, svn 호환 명령어 등이 있다. 두 DVCS에 대해서는 저장하는 방식의 주요한 차이점이 있다. 

 

git은 스냅샷 기반이다. BLOB에서의 관리 대상은 특정 시점의 파일 전체 내용이므로 Git의 저장소는 크기가 빠른 속도로 증가하며, gc 명령을 통해 저장소 효율을 높인다.

 

Mercurial은 각 파일별 변경 분만 추적한다. 저장소에는 실제 관리 대상이 되는 파일의 트리 구조와 동일한 형태의. i를 확장자로 하는 변경 기록용 파일이 있으며, 그 파일에는 해당 파일이 가리키고 있는 파일의 변경 이력이 바이너리(binary) 형태로 저장되어 있다. 저장소는 변경분에 비례해서 증가하며, 일반적으로 Git에 비해 완만한 속도로 저장소의 크기가 증가한다.

 

하지만, 인지도 측면에서 bitbucket에서 mercurial을 버리고 mercurial에서 git으로 완전히 이동할 정도로 git이 우세하며, 최근 오픈 소스들은 거의 대부분 git으로 관리된다. 그럼에도 불구하고 mercurial을 지원하는 호스팅 사이트들은 여전히 많으며, 대부분의 mercurial을 사용하는 이유는 이전부터 사용한 기업의 방향성일 가능성이 크다.

 

따라서, 처음 시작하는 입장에서는 git을 선택하는 것이 좋아 보인다.

 

추가적으로, git의 대표 호스팅 서비스 사이트인 github는 마이크로 소프트가 인수했으며, npm, vscode 모두 마이크로소프트 소유다.

 

참고

https://d2.naver.com/helloworld/1011

 

728x90

'Search > Version Control' 카테고리의 다른 글

Mercurial 소개 (SourceForge)  (0) 2021.07.15
SVN 소개  (0) 2021.07.15

댓글