효율적인 협업 가능
쉬운 버전 관리
가지치기와 병합
가볍고 빠름
분산작업
데이터 보장
staging area
오픈소스
$ git config --global user.name "이름입력"
$ git config --global user.email 이메일입력
--global 옵션을 넣는 이유 : 모든 프로젝트마다 동일한 사용자가 사용
따라서 프젝마다 다른 사용자 정보를 지정하고 싶다면 --global은 넣지 않아도 된다.
- 설정 정보 확인
$ git config --list
$ git init
: 기존의 디렉토리를 git repository 로 설정
=> 깃을 사용할 프로젝트 폴더로 이동 후 git init을 실행한다.
$ ls -al
: .git 디렉토리가 생성된 것 확인할 수 있다.
<사진출처: 엘리스트랙 "감사합니다">
$ git add new.html
$git add .
%띄어쓰기 주의% $ git commit
$ git commit -m "남길메시지 내용 띄어쓰기 반영됨"
$ git commit --amend
git status
=> staging file 들의 상태를 확인한다.git log
=> .git repository에 존재하는 history를 확인할 수 있다.git add <파일명>
해서 staging area로 보내야 한다.$ git status
로 확인하면 changes to be commited: ~ 로 파일이 올라와있다.$ git reset <file_name>
=> add 명령을 취소할 수 있다. 그러면 다시 working directory 로 파일이 넘어간 걸 확인할 수 있다. $ git diff
: commit된 파일 중 변경된 사항을 비교할 수 있다. $ git log -p -2
-p, --patch: 각 commit의 수정 결과를 보여주는 git diff
와 같은 역할
-2: 상위 2개의 commit만 보여준다. 즉, 숫자는 아무거나 쓰면 된다.
$ git log --stat
--stat: 어떤 파일이 commit에서 수정되고 변경되었는지, 파일 내 라인이 추가되거나 삭제되었는지 확인
$ git log --pretty=oneline
--pretty=oneline: 각 commit을 한 줄로 출력
$ git log --graph
--graph: commit간의 연결된 관계를 아스키 그래프로 출력한다.
$ git log -S function_name
-S: 코드에서 추가되거나 제거된 내용 중 특정 텍스트(예로 function_name)가 포함되어 있는지 검사
각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에 독립적인 작업이 가능하다.
main branch는 배포할 수 있는 수준의 안정적인 브랜치이기 때문에 신중하게 병합을 한다.
topic branch에서 단위 작업을 한 후에 병합을 한다. 다 작업을 한 후에는 삭제할 수 있다.
$ git branch
: 현재 생성되어 있는 브랜치 보기. ( * 가 붙어 있는게 현재 위치이다.)
$ git branch new_branch
: new_branch라는 새로운 브랜치 생성
$ git checkout another_branch
: another_branch라는 다른 브랜치로의 전환
두 브랜치를 통합하려고 할 때 변경된 부분이 겹치지 않아서 충돌 없이 곧바로 merge가 되는 경우를 fast-forward라고 부른다.
$ git branch --merged
: merge된 branch를 볼 수 있다.
$ git branch -d new_branch
: 사용을 마친 new_branch를 삭제한다.
기준이 되는 브랜치로 이동을 한 후 병합을 시키려고 하는 브랜치와 병합을 할 수 있다.
main, one 두개의 브랜치가 있다고 가정하고, one브랜치를 main에 merge하려고 한다면
$ git checkout main
으로 main 브랜치로 이동(이동을 필요로 할 경우)
$ git merge one
: one 브랜치가 main으로 병합되었다.
merge를 실행한 두 branch에서 같은 파일을 변경했을 때 충돌이 발생한다.
$ git status
명령어로 어느 파일에서 충돌이 발생했는지 확인한다.
메세지에 "both modified: 파일이름 "으로 표시되는 파일에서 충돌이 발생했으므로
충돌관리를 한 후 병합하도록 한다.
충돌이 일어난 파일을 열어본 후
<출처: 엘리스트랙 "감사합니다 '-')">
수정을 완료하면 '<<<<<<<','======','>>>>>>>'가 포함 된 행도 삭제를 해준 다음
$ git add file.html
-> $ git commit -m "수정했어요"
를 다시 해주고, $ git merge main
merge 를 해야한다.
작업 전에 반드시 pull을 먼저 해서 파일을 확인한 다음 작업을 하는 습관을 기르는게 좋다.
원격 저장소는 로컬 저장소(내 컴퓨터)가 아닌 인터넷이나 네트워크 어딘가에 있는 저장소이다.
$ git clone https://github.com/어쩌구저쩌구주소
: 깃허브에 존재하는 원격저장소의 주소를 넣어주면 내 컴퓨터에 복제가 된다.
$ git remote add origin https://github.com/...
: 원격 저장소를 연결하는 명령어
원격 저장소의 단축이름을 origin으로 지정한다는 의미이다.
저장소의 주소 구성 -> 예) https://github.com/group/project_name
'웹호스트 서비스/그룹명/프로젝트명 '이다.
$ git remote
: 연결된 원격저장소 확인
$ git remote show origin
: 연결된 원격저장소 확인
$ git remote rename origin git_test
: 원격저장소의 이름을 origin 에서 git_test로 변경
$ git remote rm git_test
: 주소가 변경되었거나, 필요가 없어진 저장소 삭제
$ git pull
: 원격저장소에서 데이터 가져오기 + 병합까지 한번에
$ git fetch
: 원격저장소에서 데이터만 가져오기 병합은 셀프로!
다른 사람이 먼저 작업을 하고 push를 한 상태라면 내 작업물을 push하기 전에 pull해서 먼저 병합처리를 한 후 push해야한다.
기본적으로 만들어진 원격저장소의 이름은 origin이 default값이다.
$ git remote -v
: 저장한 저장소의 이름과 주소를 볼 수 있는 명령어