2022. 6. 28. 15:00ㆍetc
git 설치 및 초기 설정
$ brew install git
brew를 이용해서 git을 설치
$ git
깃 설치가 정상적으로 되었는지 확인
git의 help 페이지가 나오게 된다
$ git config --global user.name "자신의 이름"
$ git config --global user.email "자신의 이메일"
commit 할 때 여기서 등록한 이름과 이메일이 사용된다
repository 생성
$ git init
자신이 원하는 곳에 directory를 하나 만들고, 해당 directory에 들어가서 git init 명령어 입력하면
해당 디렉터리에 버전이 저장될 'repository(저장소)'가 생성
$ ls -la
숨김 파일을 보게 되면 .git 파일이 생성되어 있을 것임
.git 파일을 통해 stage와 repository 파일을 관리
작업 트리 (working tree, working directory)
스테이지 (stage, staging area) : .git/index 파일에 저장
저장소 (repository) : .git/HEAD 파일에 저장
stage ---> 'commit' ---> repository
commit을 하면 새로운 버전 생성
$ git status
git의 상태를 보는 명령어
"on branch master"
현재 master branch에 있음
"no commits yet"
아직 commit 한 파일이 없음
"nothing to commit"
현재 commit 할 파일이 없음
"untracked files"
한 번도 버전 관리하지 않은 파일
add (staging) & commit
$ git add [파일이름]
working directory ---> 'add' ---> staging area
- staging 한다
- stage에 올린다
$ git status
changes to be committed, new file
새 파일 test.txt를 앞으로 커밋할 것이다
$ git commit -m "message1"
commit과 함께 저장할 message 작성
stage에 있던 파일에 대해 버전을 생성한다 (commit 한다)
$ git status
nothing to commit
커밋할 파일이 없다 (버전으로 만들 파일이 없다)
working tree clean
working directory의 모든 파일이 수정사항 없음
$ git log
커밋한 버전에 대한 설명 (hash, HEAD가 가리키고 있는 것)
커밋한 유저 이름, 유저 이메일
커밋한 시간
커밋 메시지
$ git commit -am "message2"
staging과 commit을 한 번에 처리
이전에 commit 한 적이 있던 파일에 대해서만 가능
commit 후 working directory의 파일이 변경되었을 때 '$ git status'로 git 상태를 보면 다음과 같다
changes not staged for commit
파일의 수정사항이 스테이징 되지 않았다
$ git diff
working tree에서 변경된 사항이 repository(저장소)에 있는 버전과 비교했을 때, 어떤 코드가 다른지 알려준다
repository에 있는 파일의 hello가 hi로 변경되었다
tracked 파일, untracked 파일
tracked 파일
- 한 번이라도 commit 된 적이 있던 파일
- git이 지속적으로 수정 여부를 추적하고 있음
untracked 파일
- commit 된 적이 없던 파일
- git이 추적하지 않음
$ git add .
.(콤마)를 통해 현재 디렉터리에 있는 모든 파일을 한 번에 staging 할 수 있음
stage에 여러 파일이 있을 경우
한 번에 여러 파일을 commit 하면 어떤 파일을 commit 하였는지 상세하게 나오지 않음 (commit 했던 log만 출력된다)
$ git log --stat
이 명령어를 통해 commit log와 함께 어떤 파일이 commit 되었는지 볼 수 있다
버전 관리에서 제외시키기 (.gitignore)
버전 관리 중인 디렉터리 안에 버전 관리를 하지 않을 특정 파일, 디렉터리가 있으면 .gitignore 파일에 그 파일을 작성하면 된다
.gitignore 파일에 다음과 같이 작성하면 됨
test.txt # text.txt 파일을 버전 관리에서 제외
test/ # test 디렉터리를 버전 관리에서 제외
.txt # 모든 .txt 파일을 버전 관리에서 제외
버전 만드는 단계에서 파일의 상태
상태
"그 상태에서의 메시지"
unmodified
"nothing to commit, working tree clean"
modified
"Changes not staged for commit"
staged
"Changes to be committed"
commit
"nothing to commit, working tree clean"
$ git commit --amend
가장 최근 커밋한 메시지 수정
작업 되돌리기
$ git checkout -- [파일이름]
working directory 변경사항 되돌리기
$ git reset HEAD [파일이름]
unstaged
파일 이름을 입력하지 않으면 stage에 있는 모든 파일이 unstaged 됨
$ git reset HEAD^
HEAD^ : HEAD가 가리키는 브랜치의 최신 commit을 의미
HEAD -> master : HEAD가 가리키는 브랜치
가장 최신 commit이 취소되어, working directory로 돌아감
unstaged changes after reset
commit 취소 및 unstaged
가장 마지막 commit도 삭제될 뿐만 아니라 stage에 올려져 있던 파일도 unstaged 된다
$ git reset --hard [commit hash]
commit hash에 해당하는 commit이 가장 최신 commit으로 변경된다
$ git revert [commit hash]
가장 최근 commit을 삭제하는 것이 아니라 취소하는 명령어
커밋을 삭제하지 않고 남겨둔다
revert를 하면 vi에디터가 나오는데, revert 메시지를 남기면 된다
$ git log
git log에서 "This reverts commit" message가 출력
'etc' 카테고리의 다른 글
Git, Github 연결 및 사용법 (0) | 2022.07.14 |
---|---|
Git & Branch (0) | 2022.07.04 |
vim setting (0) | 2022.05.31 |