Published 2022. 10. 11. 22:57

git 이란?

 

Git is a free and open source distributed version control system designed to handel everything from small to very large projects with speed and efficiency.

 

Staging Area 란?

 

> git add 파일이름 : Staging Area에 파일 추가

commit 하면 Staginf Area 에 있는 파일들이 Repository 에 저장

 

 

 

Staging Area 관련 명령

 

도움말

> git 명령어 -h : 명령어에 대한 도움말

> git 명령어 --h : 자세한 도움말

> git --help : 모든 도움말

 

Staging Area 에 추가

> git add 파일이름

> git add 파일이름1, 파일이름2

> git add 폴더이름 : 지정된 폴더 내의 모든 파일 추가

> git add * : 현재 폴더에 있는 모든 파일 또는 폴더 추가(빈 폴더 제외)

> git add -u : 커밋한 적이 있는 모든 파일 추가(해당 파일이 커밋 이력이 있어야 함)

 

Staging Area 에서 삭제

> git rm --cached 파일 이름

> git reset 파일 이름

> git reset : 현재 폴더의 모든 폴더와 파일을 Staging Area 에서 삭제

 

Working Directory 와 Staginf Area 의 상태를 확인

> git status

파일을 삭제할 때, working directory 에서 직접 삭제하지 말고 git을 통해 삭제해야 이력이 관리된다.

> git rm aaa.txt

> git commit -m 'delete aaa.txt'

 

 

커밋 관련 명령

 

커밋 생성하기

> git commit -m "initial commit" : ""안에 커밋에 대한 설명을 적는다.

> git show HEAD : 최근 커밋에 대한 상세 정보를 보여준다.(소문자 head도 가능)

> git log

 

커밋 수정하기

> git commit --amend : 최근 커밋의 내역을 볼 수 있다.(커밋 메시지 수정 가능)

> git commit --amend -sm "변경된 메시지" : 커밋 메시지만 수정할 때

git commit --amend 는 아무것도 변경안해도 커밋 ID가 달라진다.

git reflog 로 확인가능.

 

취소 커밋 생성하기

> git revert HEAD : 최근 커밋을 취소하는 새로운 커밋을 생성

 

 

 

 HEAD와 reset

 

> reset --soft : repository 에 있는 파일을 다시 Staging Area 로 되돌리고 싶으면

> reset --hard : 그 전 HEAD 로, 다른 커밋 ID 로 HAED를 옮기고 싶을 때

 

 

git log 와 커밋 ID

 

> git log : 자세한 로그, 커밋 아이디가 길게 나옴

> git log --oneline : 간략한 로그. 커밋 아이디가 짧게 나옴(6자리)

> git shortlog : 아주 간략한 로그. 커밋 아이디가 안 나옴

> git show 커밋 ID : 특정 커밋의 상세 정보(브랜치 지정 가능)

> gitk : GUI 화면으로 커밋 정보를 보여줌

> git reflog : HAED 가 가리켰던(ref) 커밋의 이력(log)을 보여줌

> git reflog 브랜치명 : 브랜치 별로 reflog 를 보여줌

> git log -g : reflog 를 상세히 보여줌

 

 

git이 파일을 관리하는 방식

 

파일 이름 대신 object id 로 파일을 관리.

커밋 당시의 실제 파일 대신 object id 의 목록만 저장.(파일은 별도로 저장)

 

 

reset vs. checkout

 

reset 은 HEAD와 branch 가 함께 이동

checkout 은 HEAD 만 이동

> git checkout main : main 브랜치로 이동

 

 

branch

 

> git branch 이름 : branch 생성

 

fast-forward merge

 

> git merge dev --ff : main 브랜치를 dev 브랜치와 merge. 새로운 커밋 X

> git merge dev --no-ff : main 브랜치를 dev와 no--ff merge. 무조건 새로운 커밋

 

 

 

'Git' 카테고리의 다른 글

Git - 파일의 stage 상태와 unstage 상태  (0) 2022.09.29
Git - error:failed to push some refs to 에러  (0) 2022.09.18
원격의 브랜치 다루기  (0) 2022.07.31
push와 pull  (0) 2022.07.31
원격 저장소 사용하기  (0) 2022.07.31
복사했습니다!