[Git] 자주 쓰는 Git 기초 명령어 정리
- ETC../Git
- 2020. 10. 14.
요약
- git init : git 생성하기
- git clone git_path : 코드가져오기
- git checkout branch_name : 브랜치 선택하기
- git checkout -t remote_path/branch_name : 원격 브랜치 선택하기
- git branch branch_name : 브랜치 생성하기
- git branch -r : 원격 브랜치 목록보기
- git branch -a : 로컬 브랜치 목록보기
- git branch -m branch_name change_branch_name : 브랜치 이름 바꾸기
- git branch -d branch_name : 브랜치 삭제하기
- git push remote_name — delete branch_name : 원격 브랜치 삭제하기 ( git push origin — delete gh-pages )
- git add file_path : 수정한 코드 선택하기 ( git add * )
- git commit -m “commit_description” : 선택한 코드 설명 적기 ( git commit -m “내용”)
- git push romote_name branch_name : add하고 commit한 코드 git server에 보내기 (git push origin master)
- git pull : git서버에서 최신 코드 받아와 merge 하기
- git fetch : git서버에서 최신 코드 받아오기
- git reset — hard HEAD^ : commit한 이전 코드 취소하기
- git reset — soft HEAD^ : 코드는 살리고 commit만 취소하기
- git reset — merge : merge 취소하기
- git reset — hard HEAD && git pull : git 코드 강제로 모두 받아오기
- git config — global user.name “user_name ” : git 계정Name 변경하기
- git config — global user.email “user_email” : git 계정Mail변경하기
- git stash / git stash save “description” : 작업코드 임시저장하고 브랜치 바꾸기
- git stash pop : 마지막으로 임시저장한 작업코드 가져오기
- git branch — set-upstream-to=remote_path/branch_name : git pull no tracking info 에러해결
다른 개발자의 코드 받아오기
코드를 git으로 다른사람들과 함께 작업하고 싶다면 git 서버가 필요합니다.
물론 git server를 직접 구축할 수 도 있지만, 이미 잘 만들어둔 서비스들이 존재합니다. 대표적은 예로 Github과 Bitbucket이 존재합니다. 이런 서비스를 통해 다른 사람들이게 코드를 공유할 수 있는데, 다른 사람의 코드를 받아오고 싶다면 어떻게 해야할까요?
github angular page
github 서비스에서는 download와 clone을 제공하고 있습니다. 저는 terminal을 사랑하기 때문에 terminal 위주로 설명하겠습니다. Github에서 angular를 받아오고 싶다면, 아래 명령어로 받아 올 수 있습니다.
git clone https://github.com/angular/angular.git
보통 GitHub에 등록된 opensouce의 경우 직접 clone을 하기 보다는 Github의 fork를 이용하여, 자신의 저장소에 복사한후 clone하여 작업하고 수정하는 경우가 많습니다. 이유인즉 opensouce에 직접 업로드할 권한이 없기때문에 Github의 자신의 저장소에 복사하면, 코드를 관리할 수 있게됩니다.
만약 opensouce에 버그를 발견하였고, 이를 수정하여 전달하고 싶다면, Github의 pull request를 활용해 수정사항을 전달 할 수 있고, 관리자가 허락해준다면 opensouce에 기여할 수 있게됩니다.
이미 다운 받았고, 최신 내용을 git 서버에서 받아와야 한다면, git pull과 git fetch로 받을수 있습니다.
git pull // 코드를 받아와 변경점을 merge한다.
git fetch // 코드를 받아온다.
pull과 fetch의 가장 큰 차이는 merge를 하냐 하지 않느냐의 차이입니다. fetch의 경우 코드를 받아온후 즉시 코드를 반영하지 않아, 작업한 코드가 충돌이 일어날경우에 안전하지만, pull은 코드를 받아온후 즉시 merge하여 코드를 반영하기 때문에 충돌이 일어 날수 있습니다. 이 경우 충돌을 해결해주고 다시 commit 하면 문제 없습니다. 해당 내역은 아래에서 조금 더 설명하겠습니다.
Branch 관리하기
코드를 혼자만 사용한다면 꼭 branch를 활용할 필요가 없지만, 같이 관리해야한다면, branch를 나눠서 작업하는것은 좋은 선택입니다.
master에서 branch를 생성하면 master를 기준으로 branch가 생성됩니다. 코드들 기존 master 작업과 분리되며 언제든지 checkout을 통해 master와 branch를 이동하며 코드를 변경할 수 있게됩니다. 작업한 branch 내용을 master와 합쳐야한다면, merge 명령어로 브랜치를 합칠수 있습니다.
그런데 master에서 작업한 내용과 branch에서 작업한 내용이 같을때 merge하게되면 어떻게 될까요?
Git은 똑똑하게도 merge한 내용중 충돌하는 내용을 찾아서 수정해달라고 요청하게 됩니다. HEAD 영역부터 ===영역까지는 master에서 작업한 내용이고, ===부터 branch_name 영역까지는 branch_name이라는 브랜치에서 작업한 내용입니다.
HEAD 부터 branch_name 까지의 영역의 내용을 모두 수정해주고, git add * 으로 수정된 영역을 선택해주고 git commit으로 commit하면 충돌한 merge가 깨끗하게 합쳐집니다.
Commit 취소하기
git은 코드의 상태를 uncommit / staying / commit 으로 나눠 볼수 있습니다.
- 코드 파일의 내용을 바꾸면 uncommit이 됩니다.
- 파일의 변경 내역 add 하면 index에 추가되고 staying이 됩니다.
- 변경 내용을 commit으로 확정지을 수 있씁니다.
- commit 이 완료되면 서버에 push할 수 있게 됩니다.
코드를 작성하다보면 잘못된 코드를 추가하거나 merge 할 수 있습니다. 이를 취소하고싶다면, git reset 으로 취소 할 수 있습니다.
git reset // add 한 파일 취소
git reset — -merge // merge 한 코드 취소
만약 commit한 코드를 취소하고 이전코드로 돌아가고 싶다면, git reset HEAD^ 명령어를 이용하여 바로 직전에 commit한 코드로 되돌아 갈 있습니다.
하지만 이경우 작성하고 수정했던 코드는 모두 사라지게 됩니다. 만약 commit만 취소하고, 작성한 코드는 살리고 싶다면 어떻게 해야할까요? reset 명령어의 옵션중에 soft를 이용하면 됩니다.
git reset — soft HEAD^ //commit 코드 살리기
git reset — hard HEAD^ //commit하기 이전의 코드로 돌아가기
git reset을 이용하여 작성한 코드를 초기화하고 서버로부터 다시 받아 올 수 도 있습니다.
git reset — hard HEAD // HEAD를 기준으로 이전코드로 돌아갑니다.
git pull // git 서버에서 코드를 다시 받아옵니다.
코드 잠깐 저장하고, 다른 브랜치로 이동하기
A라는 Branch에서 작업을 하던중 급하게 들어온 요청 혹은 Bug가있어 B 브랜치로 이동해야할 일이 생겼습니다. 그런데 작업은 완료되지 않아서 commit 해두기에는 애매하고, 그렇다고 다시 작업하기에는 작업량이 있어 버릴수는 없는경우에 어떻게 해야할까요?
그럴 경우 잠깐 다른 공간에 변경 내역을 기록해 두고 브랜치를 변경해서 작업한후 다시 돌아와서 변경 내역을 불러와 계속 작업을 이어 나갈 수 있습니다.
git stash // 코드를 stash 영역에 잠시 저장하기
stash 명령어를 이용하여 stash 영역에 코드를 잠깐 저장해두고 다시 돌아와 작업을 이어나갈수 있게 되었습니다. 해당 구조는 스택구조로 이루어져있기때문에 LIFO으로 작업을 불러올수 있습니다.
git stash pop // 마지막에 저장한 코드 불러오기
stash 영역이 기억이 나지 않는다면 git stash list로 목록도 확인해 볼수 있습니다.
git stash list
출처 :
'ETC.. > Git' 카테고리의 다른 글
[Git] 상황별 자주 쓰는 Git 명령어 (0) | 2020.10.14 |
---|---|
[Git] remote: HTTP Basic: Access denied(인증 오류) (0) | 2020.10.08 |