Git 기본 용어 및 CLI
저장소 : Remote Repository, Local Repository
Git의 원격 저장소와 로컬 저장소
- Git은 원격 저장소와 로컬 저장소 두 종류의 저장소를 제공합니다.
원격 저장소(Remote Repository)
: 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소입니다.로컬 저장소(Local Repository)
: 내 PC에 파일이 저장되는 개인 전용 저장소입니다.
fork, upstream, origin, master
fork란??
- 아래 스샷
Larry/Recipes
라는 레포지토리를 내 계정에 가져옴(fork
)fork
를 하는 이유 :
upstream이란??
- 가장 근본이 되는 레포를
upstream
이라고 부릅니다. =fork
당한 repository - 내계정으로 fork해서 가져오게되면, fork로 인해 내계정에 생성된 레포를
origin
이라고 부릅니다. - 따라서, 위 fork에서 언급한
Larry/Recipes
가upstream
이고,Myaccount/Recipes
가origin
이 된다.
origin이란??
origin
은 원격 저장소의 이름을 뜻함.- 원격저장소 시간때 원격저장소 추가 명령어는
git remote add [이름] [url]
형식으로 사용 - 보통
git remote add origin [원격저장소url]
형식으로 원격저장소를 추가하기 때문에origin
은[원격저장소url]
에 해당하는 레포지토리를 의미함 git clone [원격저장소url]
을 통해 원격저장소를 복사한다면 자동으로origin
이라는 이름으로[원격저장소url]
주소가 원격저장소로 등록되게된다
master(=main)란?
- repository에서 기본(default) branch를
master(=main)
branch 라고 명명함 - (참고) 2020년 6월 Go 언어가 인종차별적 요소나 주종 관계의 의미를 담고 있는
whitelist/blacklist
와master/slave
라는 용어를 프로젝트에서 제거하기로 결정하면서 업계 전반에 이런 부분을제거
하는 움직임이 일어났다.
master/slave
같은 차별적인 용어 대신에main
이라는 용어를 사용하게 바뀜. 따라서 기존에default branch 명이 master => main
으로 변경됨 - default branch main에서 master로 바꾸는 방법 정리한 글 : 링크
기본 CLI
git push --set-upstream origin master
- 명령어에 내용은 다음과 같다. 원격 저장소에 업로드(push)를 진행 할 것인데, 기본 브랜치로 (origin) 저장소의 (master) 브랜치로 설정(--set-upstream)한다.(링크)
branch 관련
- local에서 branch를 생성할 때 :
git branch [branch이름]
- remote에 있는 branch와 동일한 이름을 지닌 branch를 local에다가 만들어주기 :
git switch --track origin/[branch이름]
- local에서 branch를 왔다갔다 할 때(=변경 할 때) :
git switch [branch이름]
,git checkout [branch이름]
- 현재 branch에서 remote branch로 push 하기 :
(현재branch에서 작업한 후) => git push origin [remote에서branch이름]
git branch -r
: remote branch 목록을 보여줌- 만약
git branch -r
했는데 remote branch 목록이 안보이거나, 최신 상태로 업데이트 되지 않았을 경우 git fetch --all --prune
혹은git remote prune origin
를 입력해서 최신 상태로 업데이트 시켜준다
- 만약
git branch
: local branch 목록을 보여줌- Local Branch 삭제 :
git branch -d [로컬branch_name]
- Remote Branch 삭제
git push origin --delete [리모트branch_name]
git push origin :[리모트branch_name]
local에서 commit 되돌리기
(정리)
- 나 혼자 작업하는 브랜치에서는
git reset
을 사용해도 문제 없다. - 다른 사람과 공유하는 브랜치에서 커밋 내역을 수정해야할 경우
git revert
를 사용하자.
git reset
- 아래 내용들 참고 자료 : 링크
git reset
을 사용하는데 3가지 option인--hard
,--soft
,--mixed
옵션이 존재함--soft
git reset --soft
를 사용하여도 local에서 작업했던 폴더(Working directory)에는 아무런 변화가 없음 & 작업했던 파일을 살펴보아도 아무런 변화가없음- 즉, reset하기 전 상황으로 다시 만들기 위해서는
commit
만 하면됨 --soft
옵션은 이전상태로 되돌려도 가장 변화가 적은 옵션(되돌려봤자commit
만 안한상태, 코드는 수정된 상태로 있고 &add
도 된 상태- 따라서, 커밋 메세지만 수정할 때 사용할 것 같다
--mixed
(default)--soft
와 마찬가지로,git reset --mixed
를 사용하여도 local에서 작업했던 폴더(Working directory)에는 아무런 변화가 없음 & 작업했던 파일을 살펴보아도 아무런 변화가없음- 잘못 입력한 코드들은 살아있고 add는 안되어있는 상태.
- 따라서, 잘못 입력한 코드들을 수정하고
add
하고commit
하면 됨
--hard
git reset --hard
를 사용하면 local에서 작업했던 폴더(Working directory) 및 & 작업했던 파일의 코드들이 이전상태로 변경되어있음- 즉, 이전 상태에서 add 및 commit까지 완료한 상태
- 이전 상태에서 작업을 완전히 새롭게 다시 시작한다고 생각하면 됨
- 방식 1 :
git reset [option] [commitID]
- 방식 2 :
git reset [option] HEAD~[숫자]
-git reset --hard HEAD~6
: hard방식으로 현재 상태에서6시점 전
상태로 되돌려라 라는 의미
git revert
- 이전 커밋 내역을 그대로 남겨둔 채 새로운 커밋을 생성한다.
- `git revert [commitID]
# git revert 예시
> git revert 5lk4er # D 커밋 revert
> git revert 76sdeb # C 커밋 revert
git log와 git reflog
- 참고 : 링크
git log
명령어를 상용하면 현재 브랜치의 로그만 확인할 수 있다.git log --oneline
: 커밋 이력 중 커밋 ID 와 타이틀 메시지만 조회- 기타 git log 옵션 : 링크
- 반면,
git reflog
라는 명령어를 사용하면 현재 저장소에서 수행된 모든 commit 로그를 확인할 수 있다. 따라서 특정 commit 시점의 해시를 찾을 때는 git reflog 명령어를 사용하는 것이 편리하다.
References
- [Git] GitHub 레파지토리(Repository) 생성하고 소스 올리기
- Origin, Master, Head의 의미
- clone과 fork의 차이점
- 로컬에서 원격 브랜치 삭제하기
- git revert - 커밋 변경, reset/revert 복구하기
- [초보용] Git 되돌리기( Reset, Revert )
- git reset vs git revert 차이 - 스샷 참조한 곳
- git switch, restore 훑어보기
Author And Source
이 문제에 관하여(Git 기본 용어 및 CLI), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@oneofakindscene/Git-기본-command-line저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)