사실 오늘이 5일차는 아니다.
지금 올리는 이유는 단순히 어려워서 이해가 안됐기 때문이다.
5일차는 Git에 대해 배웠다. 이전에도 Git은 써본 적이 있었고 github를 통해 업로드도 종종 하곤 했기에 별로 어려울 것이 없을 것이라 생각했다. 오산이었다.
깃을 통해 업로드 하는 방법만 알지 깃을 사용하는 이유 관리 상태 생명주기 등등은 아예 모르는 수준이었기에 너무 배울게 많았다.
최대한 내가 앞으로 사용하면서 필요할 것들 위주로만 요약해 정리한다.
$ git init
깃 저장소 생성할 때 쓰는 명령어.
기존의 디렉토리를 git repository로 설정한다.
$ls -al 을 통해 프로젝트 디렉토리에 .git 디렉토리가 생성되고 저장소 생성이 완료되었는지 확인 가능.
파일 영역의 라이프 사이클이다.
working directory에 있는 파일들이 git add를 통해 staing area로 이동하게 되고 git commit을 하게 되면 repository로 이동하게 된다.
파일의 상태 라이프 사이클이다.
처음에 working directory에 있을 땐 Untracked 상태였다가 무언가 수정이 되었을 때 Modified 상태가 된다. Untracked, Unmodified Modified를 git add로 추가하게 되면 Staged로 옮겨지게 되고 commit을 하게 되면 다시 Unmodified 상태가 된다. 파일을 지우게 되면 Untracked 상태가 된다.
$git add user.js
$git add .
git add ~~~를 통해 추가할 파일을 지정할 수 있고 한번에 올리고 싶다면 git add . 을 통해 현재 폴더를 대상으로 지정할 수 있다.
$git status
명령어로 Staging area의 어떤 파일이 변경 되었는지 파일 상태 확인이 가능하다.
git status를 했을 때 위와 같이 Untracked 상태로 나오는 것은 add로 staging 되지 않은 파일들을 의미한다.
위와 같이 modified 상태로 나오는 것은 commit 된 파일 중 수정 된 파일이 있을 경우를 의미한다.
$git commit -m "blablabla"
준비 영역에 있는 파일들을 저장소에 반영할 때 사용한다.
추후에 반영 내용이 알기 쉽도록 "blablabla"란에 적절한 메세지를 작성해준다.
$git commit --amend
저장소 반영 내용 변경 할 때 사용한다.
앞에 적은 메세지에 오타가 있거나 누락된 파일이 있을 때 사용.
$git log
저장소 반영 내역이 궁금하면 위 명령어를 사용하면 된다.
$git reset file_name
위 명령어를 이용해 add 명령을 취소할 수 있다.
$git diff
commit 된 파일 중 변경 된 사항을 비교할 때 사용한다.
$git log -p -2
-p, -patch: 각 commit의 수정 결과를 보여주는 diff와 같은 역할을 수행한다.
-n: 상위 n개의 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이 포함되어 있는지 검사한다.
Git Branch란?
독립적으로 어떤 작업을 진행하기 위한 개념이다
각각의 Branch는 다른 Branch의 영향을 받지 않는다.
종류
Main Branch: 배포할 수 있는 수준의 안정적인 Branch
Topic Branch: 기능 추가나 버그 수정과 같은 단위 작업을 위한 Branch
$git branch like_feature
Branch는 위 명령어로 생성할 수 있다.
$git branch
위 명령어를 통해 현재 속해 있는 Branch와 현황을 할 수 있다.
$git checkout like_feature
위 명령어를 통해 Branch전환이 가능하다.
또한 git log로 확인 한 snapshot을 넘나들 때도 사용가능하다
ex) git checkout snapshot d97d38
$git merge like_feature
위 명령어를 통해 like_feature를 현재 위치한 branch와 병합한다.
이렇게 merge가 이루어지는 것을 fast-forward라고 부른다.
$git branch --merged
위 명령어를 통해 merge된 Branch를 볼 수 있다.
$git branch -d branch name
위 명령어를 통해 git Branch를 삭제할 수 있다.
git Merge 충돌 났을 때
git status로 상태확인
충돌 일어난 파일 열어서 해결 * <<< === >>> 삭제해야함.
git add git commit 과정을 거쳐 다시 merge해준다.
$git clone https://github.com/....
윈격 저장소 주소를 git clone 뒤에 넣어준다.
$git remote add origin https://github.com/...
원격 저장소는 위 명령어로 연결할 수 있다.
$git remote show origin
위 명령어로 원격 저장소 살펴볼 수 있다.
$git remote rename origin git_test
위 명령어로 원격저장소 단축 이름을 origin에서 git_test 등으로 바꿀 수 있다.
$git remote rm git_test
위 명령어로 저장소를 삭제할 수 있다.
$git pull
원격 저장소에서 데이터를 가져와 로컬 데이터와 병합
$git fetch
원격 저장소에서 데이터를 가져온다. 병합과정이 별도로 필요하다.
$git push origin master
로컬 저장소 작업 내용을 원격 저장소에 반영한다.
다른 사람이 먼저 push 한 상태에선 push 불가, 다른 사람 작업물을 병합부터 해주어야 한다.
$git remote -v
-v옵션 사용하면 저장한 저장소 이름과 주소를 함께 볼 수 있다.
아주 유용합니다!