git이 왜 필요한지 알기 위해서는 먼저 git이 뭔지 알아야 한다. 하지만 자세한 설명은 정보의 바다인 인터넷에 조금만 찾아보면 워낙 잘 나와있을테니까 생략하고 간단하게만 알아보고자 한다.
git은 분산 버전 관리 시스템을 말하는 것으로 소스코드를 쉽게 관리하기 위해서 생겨났다.
위에서 소스 코드를 쉽게 관리하기 위해서 생겨난것이 git이라고 했다. 그렇다면 소스코드의 관리는 왜 필요할까?
웹사이트 및 웹 애플리케이션의(이하 서비스) 규모가 점점 커지고 있고, 이에 따라 수 많은 개발자들이 협업을 통해 서비스를 개발하고 있다.
그런데 git을 사용하지 않고 여러 개발자가 코드를 각자 관리하고 있다고 생각해보자. 실제로 개발된 서비스를 배포하기 위해서는 각자가 가지고 있는 코드들을 취합하는 과정을 거쳐야 하고 이 과정에서 온갖 에러가 날 것이다. 변수 이름이 중복되는 문제부터 시작해서 어떤 문제가 발생하게 될지는 아무도 모른다. 그리고 이 것을 해결하기 위해서는 더 많은 시간이 걸릴 것이다. 그런데 추가적으로 이 코드를 취합하는 와중에도 여러 개발자들은 각자의 개발을 또 진행하고 있을 것이고, 그렇게 진행하다보면 개발은 결국 엉망진창이 될 것이다.
결국 소스코드는 여러 개발자가 함께 관리하고 비교적 실시간으로 관리 되어야 한다는 생각을 하게 된다. 이것을 가능하게 해주는 것이 git이다. git을 사용하면 내가 작성한 일정한 단위의 코드를 add, commit, push를 통해서 다른 개발자들과 실시간(사실 실시간은 아니겠지만)으로 반영하여 공유하고, 다른 개발자들이 작성한 코드도 공유하여 반영할 수 있게 된다. 또한 코드들이 반영되었을 때 문제가 생기면 수정을 하기에도 용이하며, 문제가 없다고 판단하여 배포했지만 결과적으로 문제가 생겼을 경우 이전 버전으로 돌아가는것도 좀 더 쉽게 가능하게 된다.
참고로 많이 사용하는 github은 git을 가르키는 절대적인 명칭이 아니라 git을 이용한 서비스를 제공하는 웹 사이트(혹은 웹 애플리케이션)이다. gitHub 외에도 gitLab, Bitbucket등이 있다.
이후 2 ~ 5을 반복하여 개발을 완료한다.
위에 적어둔 순서가 git 을 사용하는 큰 틀이라고 생각하면 된다. 물론 git을 혼자 사용하게 된다면 위에 작성된 방법만으로도 충분할 것이다. 하지만 만약 다른 개발자들과 협업 과정에서 사용하게 된다면 위의 과정에 추가 되거나 달라지는 몇가지 과정들이 더 있다.
이후 2 ~ 8을 반복하여 개발을 완료한다.
이후의 git 설명은 github를 기준으로 설명합니다.
git을 프로젝트에서 사용하는 방법은 2가지가있다. 첫번째는 local 환경에서 폴더를 만들고 git을 설치해서 시작하는 방법과, github에서 repo를 만들고 local에 clone하여 진행하는 방법이다.
local에서 프로젝트 폴더를 만든뒤 해당 폴더에서 진행함
$ git init
git remote add origin (git repo 주소)
깃 기본설정! git bash에서
$ git config --global user.name "user name"
$ git config --global user.email "user email addr"
$ git config --global core.editor "vim"
$ git config --global core.pager "cat"
github에서 repository를 생성한 뒤, 내 작업공간으로 복사해서 작업을 시작한다.
$ git clone https://github.com/ulgoon/TIL-sample.git
"Git"이 연결된 폴더인지 확인하는 방법!!
$ git status
$ ls -a
→ 명령어로 git 폴더가 있는지 확인할것!
git은 결국 내가 작성한 코드를 공유하기 위해서 코드를 작성한 파일을 선택하고, 설명을 작성한 뒤에 repo에 공유하는 과정이 필요하다. 그리고 다른 개발자와 협업을 한다면 다른 개발자의 코드를 가져와서 내 코드와 합친뒤에 새로운 코드를 작성해야 한다. 이러한 과정을 각 add, commit, push, pull 이라고 한다.
$ git add 파일명
: 특정 파일만 선택 가능함$ git add .
: 변경된 모든 파일 선택하기vim 에디터로 넘어가서 commit 메세지 작성하기
$ git commit
git bash에서 직접 커밋 메세지 작성가능 : 뒤쪽의"
가 끝나기 전에 엔터를 치면 제목과 내용으로 구분됨
I added README.md with git for the first time.
I think git and github is cool."
$ git push origin master
$ git pull origin master
$ git status
: 현재 작업의 상태 확인$ git remote add origin 주소
: 깃주소를 등록$ git remote
$ git remote get-url origin
$ git log
: 작업한 git commit 내용 확인$ git pull origin 브랜치명 --allow-unrelated-histories
: 머지가 다 되었는데, 자꾸 뭔가 더 머지해야 한다고 할때 머지를 무시 (강제로 머지를 시키는 것이기 때문에 분명히 문제가 없다고 판단될때만 사용해야 한다.)$ git reset filename.txt
: git add의 반대 개념으로 스테이징된 파일을 스테이징이 되지 않은 상태로 되돌린다.$ git branch [-r/-a]
: -r 옵션은 리모트로부터 가져온 브랜치를 -a 옵션은 로컬과 리모트 브랜치 모두를 보여줌$ git branch 브랜치네임
: '브랜치네임'으로 새 브랜치를 만들고 현재의 커밋을 시작점으로 함$ git checkout 브랜치네임
: 브랜치를 변경하기git reset HEAD^
: PUSH 하기 전 commit 취소참고자료
https://git-scm.com/docs
https://git-scm.com/docs/git#_git_commands
Git에서 트래킹하지 않아도 되는 파일 (비밀번호 파일, 개인정보 파일, 블랙리스트 파일 등)을 선택 작성할 수 있는 파일!