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 |