본문 바로가기

나의 개발자 기록/개발자 지식

[GIT] 협업을 위한 git....깃의 기초부터 살펴보자.. !

728x90
반응형

- git init : 저장소 생성하기 

git init을 통해 저장하고자 하는 디렉토리 안에 저장소를 생성한다. 

ls -al 커맨드로 확인해보면 .git 폴더가 생긴것을 확인 할 수 있다. 

 

.git폴더는 해당 폴더 안의 소스코드가 변경, 삭제될 때의 이력을 가지고 있기 때문에 

저장되었다면 해당 지점으로 복원이 가능하다. 하지만 .git 폴더가 삭제 된다면 모든 이력이 사라지게 된다 

 

- git config : 사용자 설정하기 

user.name과 user.email을 설정할수 있다. 자주 이용하는 깃헙이나 컨플에서 잔디가 안심긴다면

깃 config user.name과 email을 확인해보자 (깃헙 연동된 메일과 같아야 한다) 

git remote -v 명령어를 통해 사용자 설정을 확인할 수 있으며,

나의 로컬파일 전체 설정을 원한다면 git config --global user.name으로 설정해주면 된다. 

 

-> 이러한 설정정보는 .git 안의 config파일안에 저장되어있다. 

 

- git의 동작개념을 이해하기 위한 작업영역 

출처 : https://wikidocs.net/149672

- Working directory : 트래킹하는 파일들이 위치하는 영역 (.git이 위치해있는 공간) 

실제 사용자가 작업을하고, 수정하는 공간이다. (Modified) 

 

- Staging area: 커밋할 대상의 파일들이 있는 영역

(.git 폴더 하위에 트리 파일형태, index로 존재한다. 임시저장소라고 보면된다) 

git add 를 통해 추가한 파일들이 있는 공간이다.

수정된 파일이 커밋하기 전, 임시저장되어있는 상태이다. 스테이징상태라고 보면 된다. (Staging area) 

 

- Repository: 커밋된 파일들이 위치하는 영역 

git commit -m ""(vim편집기 없이 바로 커밋) 을 통해 최종저장이 된 상태의 파일들이 위치하는 곳이다.

비로소 이력이 기록되는 committed상태이다. 관리대상에 추가되었으므로 트래킹이 가능하다.

 

-> 해당 과정들은 git status를 통해 상태를 확인 가능하다. 

->.git이 위치해있는 폴더에 .gitignore 파일에서 이력관리 대상에서 제외할 경로와 파일을 지정할 수 있다. 

-> git commit -am "" 는 add와 commit 을 일괄적으로 진행할 수 있다. 

 

 

- git log : 저장소에 기록된 이력을 출력하는 명령어

커밋했던 기록들을 볼수 있다. git log 뒤에 다양한 cli 명령어 옵션을 붙여서 세부적으로

이력조회 조건설정이 가능하다. 

 

- branch : 독립적인 이력관리 영역 

git init으로 저장소를 생성하면 기본으로 한개의 master브랜치가 만들어진다. 

여러개의 branch를 생성하여 별도로 커밋별 관리를 할수 있으며,

최종적으로는 브랜치를 합쳐서 (merge) 협업에 사용할 수 있다. 

 

- HEAD: 모든 브랜치의 가장 마지막 커밋에 HEAD 값이 존재한다.

즉, 해당 브랜치의 가장 최신 커밋을 나타내주는 역할이다. 

 

- git show : 가장 최근의 commit 정보 출력

git show [commit hash]를 입력하면 해당 commit의 정보가 나온다. 

커밋당시에 수정된 파일들과 수정된 부분도 확인할 수 있다. 

 

- git diff : 최근 커밋과 변경사항이 발생한(unstaged) 파일들의 내용비교 

어떤 옵션도 없다면 git diff 명령어를 입력해도 아무것도 출력되지 않을것이다. 

하지만 파일수정후 staged되기 전에 입력해보면, unstaged상태의 파일들의 변경사항이 표시된다. 

 

- git reset : staging area (add한 상태)에 올라간 파일일부나 전체를 unstaging할 때 사용할 수 있다. 

git reset만 입력할시 스테이징된 모든 파일이 스테이징 취소가 되며, 

git reset [파일명]입력시 해당 파일만 스테이징 취소가 된다. 

 

- git commit --amend : **커밋메시지를 수정할 수 있는 vim 편집기를 열어주는 명령어 

커밋 메시지만 수정한 것 처럼보이지만, 사실은 새로운 커밋을 생성하여 새롭게 커밋한거라서

부여한 hash는 다르다. 

 

- git checkout : 특정 파일 상태로 복귀하기 위한 명령어

git checkout [hash]를 입력하면, HEAD가 참조하는 커밋이 바뀌면서 working directory의 내용도 돌아간다. 

HEAD, 브랜치명, commit hash 모두 참조 개체이기 때문에 checkout 뒤 지정명령어로 사용가능하다. 

 

- Detached HEAD : 

 

- 커밋된 파일을 삭제해야할 때의 git reset: 

1. git log를 확인하여 돌아갈 커밋 해쉬를 확인한다

2. git reset [이동할 hash] 로 --soft, --mixed, --hard 옵션을 추가하여 돌아간다. 

(각 옵션의 차이는 영역의 상태 차이가 존재한다. 필요할때 찾아서 쓰자) 

 

- git reflog : 최신 커밋으로 돌려야하는데 commit hash를 기억하지 못할때 

git reflog는 HEAD가 참조했던 commit을 출력하는 명령이다. 

HEAD가 참조했던 commit들이 가장 위에서부터 가장 최근 커밋순으로 나온다. 

 

-HEAD란 : 

 

728x90
반응형