git CLI 정리

이경섭·2022년 10월 4일

git

목록 보기
1/3

리눅스 명령 옵션

-a : 숨김 파일과 디렉터리 함께 표시
-l : 파일이나 디렉터리 상세정보 함께 표시
-r : 파일 정렬 순서 reverse
-t : 파일 작성 시간 순으로(내림차순)

리눅스 디렉터리 기호

~ : 현재 접속 중인 사용자 홈 디렉터리(사용자 디렉터리) ex. c/User/사용자아이디
./ : 사용자가 작업 중인 디렉터리
../: 현재 디렉터리의 상위 디렉터리

옵션

--global
--local


git CLI 정리

깃 환경설정

깃은 버전을 저장할 때마다 그 버전을 만든 사용자 정도보 함께 저장함. 따라서 처음에 사용자 정보를 입력

git config --global user.name "Name"
git config --global user.email "Email"

깃 초기화

깃을 초기화 -> 버전(commit) 관리, 원격repo(github) 와 연결 가능

git init

깃 상태

현재 브랜치 정보 및 파일 스테이징 정보 알려줌

git status

파일 임시 저장

pull 해오기 전 작업이 끝나지 않은 파일들 임시저장

git stash : 저장
git stash list : stash list 조회
git stash pop : 가져오기
git stash drop :가장 최근 항목 삭제
git stash drop stash@{n} : 특정 stash(n번-id) 삭제
git stash clear : 모든 stash를 삭제


작업 트리 변경 사항 취소

git checkout --파일

ex. git checkout --hello.txt


git 스테이징

commit 생성 전 작업 내용 저장(스테이지에 수정 파일 추가)

git add 파일 , . (전체선택)

스테이징 취소(되돌리기)

git reset HEAD 파일

ex) git reset HEAD hello.txt


현재 작업과 commit 작업 비교

git diff


commit CRUD

commit 생성(Create)

git commit -m "commit message"

-am 옵션으로 <add + commit> 한번에 가능 (단, 이미 스테이징된 파일이어야 함.)

git commit -am "commit message"


commit 읽기(Read)

commit 정보 확인

git log

--stat 옵션으로 파일 정보까지 확인 가능

git log --stat

--online: commit들을 한줄로 간단하게 보여줌.

git log --online

--branches 옵션을 통해 각 브랜치의 commit을 함께 볼 수 있음.

git log --online --branches


commit 수정(Update)

--amend 옵션으로 가장 최근(HEAD) commit 수정

git commit --amend "commit message"


commit 취소(삭제)

😗 reset 옵션
--soft HEAD^: 최근 커밋을 하기 전 상태로 작업 트리를 되돌림.
--mixed HEAD^: 최근 커밋과 스테이징을 하기 전 상태로 작업 트리 되돌림. (default 옵션)
--hard HEAD^: 최근 커밋과 스테이징, 파일 수정 하기 전 상태로 작업 트리 되돌림. 이 옵션으로 되돌린 내용은 복구 불가함.

최근 commit 되돌리기(삭제)

git reset HEAD^

(HEAD^는 현재 HEAD가 가리키는 브랜치의 최신 commit을 말함.)

특정 commit으로 되돌리기

git reset [커밋 해시]

커밋의 hash는 git log로 확인


commit 삭제하지 않고 되돌리기 -> 변경사항 저장

git revert [commit hash]

revert 시 해당 commit 내용을 지운 revert commit을 새로 생성함.



branch

branch 생성

git branch [생성할 branch 이름]


branch 확인

git branch


branch 변경

HEAD가 가리키는 branch 변경

git checkout [변경할 branch 이름]

-b 옵션으로 생성과 변경 한번에 가능

git checkout -b [branch 이름]


branch 들의 커밋 비교

branch2에만 존재하는 commit들을 보여준다.

git log branch1..branch2

ex) git log main..apple -> main에 존재하지 않고 apple 브랜치에만 존재하는 commit을 보여줌.


branch 병합(merge)

기준 branch로 checkout 후 merge

git merge [병합될 branch]

옵션

--no-edit : 편잡가 살행X, 깃에서 지정하는 커밋 메세지 그대로 사용
--edit : 편집기 실행, 병합 메세지 수정 및 추가


branch 삭제

git branch -d [삭제할 branch 이름]



Remote(원격저장소, github)

git에 remote(원격저장소) 연결

지역 저장소(내 컴퓨터) 와 remote(원격 저장소, github) 연결

git remote add origin [URL]

origin: 깃허브 저장소 주소, 즉 [URL]


remote(원격저장소) 복제

git clone [URL(복제할 remote 주소][복제한 data가 담길 폴더]

ex) git clone [URL] home

복제 시 자동으로 원격저장소와 연결됨.


remote(원격저장소) 확인

remote에 연결됐는지 확인

git remote -v


remote(원격저장소)에 파일 올리기

지역 저장소의 브랜치를 origin(원격저장소)의 master 브랜치로 push
(-u 옵션, 처음 지역과 원격을 연결할 때 사용)

① git push -u origin master
② git push

여러 브랜치를 넘나 들면서 작업하는 경우 최초의 한번 인자는 넘기는 것도 귀찮음.
대부분의 경우 로컬repo와 원격repo가 동일한 branch 이름을 사용하기 때문에 현재 branch를 기준으로 git push 명령어가 작동되게 아래와 같이 설정

① git config --global push.defalut current
② git push


remote(원격저장소)에서 파일 가져오기

origin(원격저장소)의 내용, master 브랜치로 가져옴

git pull origin master


원격 브랜치 정보 가져오기

fetch로 가져온 원격저장소의 정보는 FETCH_HEAD로 가져옴.
커밋을 가져오기만 할 뿐, 병합을 하지 않음.

git fetch

정보 확인 시 FETCH_HEAD로 checkout

git checkout FETCH_HEAD

fetch 후 최신 커밋을 현재 브랜치로 가져올려면, FETCH_HEAD를 병합 or git pull

git merge FETCH_HEAD

git merge origin/master : 원격 master 브랜치에 있는 commit 병합
git merge origin/브랜치 이름 : 다른 원격 브랜치에 있는 commit 병합
git merge FETCH_HEAD : fetch로 가져온 지역 저장소에 반영되지 않는 최신 commit 병합.

-> 결론 git pull or git fetch/git merge FETCH_HEAD


Reference)
Do it. git & github 입문

0개의 댓글