Git과 명령어
2020년 07월 28일, 22:50
-
Git
-
Git을 사용하는 이유?
-
버전관리.
git commit 하는 과정은 버전을 하나씩 만든다고 생각하면 됨.
-
백업.
로컬저장소에서 원격저장소에 올리는 행위(git push)
원격저장소에서 로컬로 가져오는 행위(git pull)
-
협업.
백업은 나 혼자만 사용하는거라면 협업은 여러 사람이 이용하면 협업.
하지만, 같은 파일을 수정하는 경우? 이런 경우를 Git이 잘 해결해줌.
-
-
.git ⇒ repository 버전을 저장하는 곳.
-
working tree 버전으로 만들어지는 전 단계.
-
staging Area 버전으로 만들 파일들을 올리는 곳. → 여기서 이제 repository로 가면 버전이 생성.
-
branch
- git branch 하면 목록을 볼수있음.
- git branch {이름} branch를 만들 수 있음.
- git log —all —graph —oneline으로 확인 가능.
- 같은 뿌리에서 나왔지만 이후에 서로 다른 commit을 가지는 버전.
- 같은 폴더인데 병합하려고하면 conflict(충돌이 일어남.) → 수동으로 수정.
- checkout 명령어를 사용해 branch를 바꿀 수 있음.
-
git 명령어
-
init
- 현재의 디렉토리를 Git 저장소로 초기화.
-
status
- 상태를 물어보는 명령어.
- Untracked files ⇒ add로 올려줘야 git에서 관리를 함.
- 상태를 물어보는 명령어.
-
add
- untracked file들을 올려줌.
- 버전이 될 파일들의 목록.
-
commit
- 버전을 만들어 주는 것.
- commit 옵션들.
-
log
- commit(버전)을 확인하고 싶을때,(q를 누르면 나가짐.)
- 옵션들
-
diff
- 변경된 파일 내용의 원본과 바뀐 파일의 차이를 보여줌.
- 버전을 만들기전의 차이.
-
checkout
- 이전의 commit 즉 이전 버전으로 가고 싶을때 사용.
- git log를 하면 이전의 커밋이 없어진것처럼 보임.(HEAD가 옮겨진 것)
- git checkout master를 하게되면 HEAD가 다시 master로 가서 최신으로 유지.
- 이전의 commit 즉 이전 버전으로 가고 싶을때 사용.
-
reset(삭제)
- 해당 버전(commit)으로 되겠다. 돌아가겠다 정도로 생각하면 됨.
- 주의! 다른 사람 버전에는 하면 안됨.(협업 시)
- 옵션들
- —hard : 우리가 수정하고 있던 것까지 되돌림.
-
revert(버전은 납두고 되돌림)
- 삭제 , 보존의 목적 둘 다 달성 가능.
- reset과 다르게 이전 버전으로 돌아가기 위해서는 현재 버전을 revert해야함.
- ex) R4에서 R3로 가고 싶으면 R4에서 해야함.
- 주의해야할 것은 역순으로 revert를 해야 충돌이 안일어남.(R2를 하려면 R4,R3를 해야함)
-
branch
- git branch 하면 목록을 볼수있음.
- git branch {이름} branch를 만들 수 있음.
- git log —all —graph —oneline으로 확인 가능.
- 같은 뿌리에서 나왔지만 이후에 서로 다른 commit을 가지는 버전.
- 같은 폴더인데 병합하려고하면 conflict(충돌이 일어남.) → 수동으로 수정.
- checkout 명령어를 사용해 branch를 바꿀 수 있음.
-
merge
- 서로 다른 branch를 합침.
- 합치려고 하는 공통의 조상을 base라고 함 그리고 그것을 합치면 ⇒ merge commit
- 3가지를 비교해서 변경된 사항들은 conflict없이 바로 변경.
- cf) 2가지를 비교하게 되면 다른 부분은 모두 conflict가 일어남.
-
fetch vs pull
- fetch는 코드만 가져옴.
- pull은 코드를 가져와서 merge. → conflict가 일어날 수 있음.
- rebase를 이용한 fork 원본저장소랑 최신 유지 참고 사이트
-
-
이번에 쓴 clone 명령어 옵션.
git clone 주소 -b {branch이름} —single-branch
깃 클론시 다른 브랜치들은 가져오지 않고 해당 브랜치만 가져와서 클론.(많은 브랜치들이 있을때 유용.)
-