Git이란 무엇인가
Updated:
Git이란 무엇인가
위키백과의 정의에 의하면 Git은 프로그램 등의 소스 코드 관리를 위한 분산 버전 관리 시스템이다. 쉬운 말로 여러명의 분산된 개발자들이 특정 프로젝트를 자신의 컴퓨터로 협업하여 개발하면서 개발 버전을 관리할 수 있는 시스템이다. 여러 버전을 스냅샷으로 기록해두기 때문에 파일을 잃어버리거나 예전 버전으로 못돌아가는 불상사가 발생할 일이 없다. 따라서 개발자라면 Git을 사용할 줄 알아야 한다. 어떤 회사에서는 Git 아이디를 요구할정도로 Git은 개인 프로젝트의 저장소 혹은 개발자들의 SNS역할을 하기도 한다.
Git의 큰 그림
Git의 큰 그림이다. Git은 CLI(Command Line Interface)로도 관리 가능하고 GUI(Graphic User Interface)로도 관리가 가능하다. 그림을 보면 현재 working directory가 있고 staging area가 있고 git directory가 있다. 현재 working directory, 즉 현재 폴더에서 파일을 변경해도 ‘add’하지 않으면 git이랑 아무 상관이 없다. Add는 변경사항(새 파일 혹은 변경 파일)을 staging area에 등록하는 명령어이다. Staging area는 git프로그램이 해당 변경 사항을 tracking하도록 설정하는 곳이다. Staging area에 add명령어를 통해 특정 파일(혹은 변경된 모든 파일)을 등록하고 나면 commit을 할 수 있다. Commit을 하게 되면 git directory에 해당 버전이 스냅샷으로 등록된다. Commit -m “저장버전” 을 통해 해당 커밋의 상세 내용을 기록해둘 수 있다. 일반 문서 프로그램에서 ‘다른 이름으로 저장하기’와 비슷하다고 생각하면 된다.
Git 기본지식
git init: local directory를 git repository로 설정한다. 이 명령어를 실행하고 나서 ls -a 로 확인해보면 .git 파일이 나타나는데 이 파일은 git을 통해 관리되는 디렉토리로 설정되었다는 표시이다.
git status: 현재 git의 상태를 확인한다
git config: git의 내 기본 정보를 설정한다. Git config –global user.name “내 이름” 을 통해 내 계정아이디를 등록할 수 있고 git config –global user.email “내 이메일” 을 통해 내 계정 이메일을 등록할 수 있다.
git add -A(.): 현재 디렉토리의 모든 로컬 파일들을 git(staging area)에 등록한다. -A 옵션 대신에 특정 파일명을 주면 해당 파일만 add된다.
git commit -m “ “: Commit을 하고 내용을 기록한다.
git log: Commit history를 확인한다.
git remote add [repository]: 특정 remote repository를 현재 local repository와 연동시킨다.
git push (origin master): Local reposiory의 모든 내용을 remote repository로 보낸다(remote repostory를 local repository와 동기화 시킨다). 만약 remote repo가 내 local repo보다 앞선 버전이라면 push 되지 않는다. 해당 버전을 pull(fetch+merge, 즉 remote repo와 동기화)하고 나서 push 할 수 있다.
git pull: Remote reposiory의 모든 내용을 local repository로 가져온다(local repostory를 remote repository와 동기화 시킨다). Git fetch(remote repo에서 데이터만 가져오는 것)와 git merge(데이터 합병)를 합친 명령어이다.
git checkout: 특정 branch(특정 repository의 특정 버전)로 이동한다.
git merge: 두개의 다른 branch를 하나로 합친다. 특정 파일의 충돌이 발생할 때 “git diff”를 이용해 해결이 가능하다.
git clone: Remote repository를 내 local repo로 가져온다.
.gitignore 파일: Git이 무시하길 원하는 파일들의 목록을 저장하는 파일이다. 여기에 저장된 파일은 git이 관리하지 않는다. ex) *.asv, hello.txt
Leave a comment