Git 기본 설정 / reset, revert

야매·2022년 2월 13일
0
post-thumbnail

Git 관리 설정

fatal: not a git repository (or any of the parent directories): .git

만약 이런 명령어가 나온다면?

CLI 버전

git이 관리하지 않는다는 소리이다. 따라서 아래 명령어를 통해 git을 관리할 수 있도록 해야한다.
git init

git을 관리하라는 명령어임

그럼 이렇게 해당 파일의 숨김 항목을 체크해서 보게 되면 .git 이라는 파일을 볼 수 있다.
이 폴더를 지우면 파일들은 유지되어도 Git 관리내역이 삭제된다. 그러니 실수로 라도 지우지 말길 바란다,,

GUI 버전(Source Tree)

소스트리에 폴더를 드래그하거나, 로컬 저장소를 생성한다.

Git 배제시키기

자동으로 생성 또는 다운로드되는 파일들 (빌드 결과물, 라이브러리)이나 보안상 민감한 정보를 담은 파일들은 git에 포함시키면 안된다. 이럴때는 .gitignore 파일을 사용해서 배제할 요소들을 지정할 수 있다.

중요한 정보를 담은 파일인 secrets.yaml을 생성했다고 하자. 이 파일은 git이 관리를 하지 않았으면 한다. vscode내에 .gitignore 파일을 생성해서 그 안에 내가 숨기길 원하는 파일 이름을 추가하면 된다. git status를 해도 secrets.yaml은 볼 수 없게 된다.

.gitignore를 적는 형식은 https://git-scm.com/docs/gitignore 을 참고하자.

간단히 적어보자면,

# 이렇게 #를 사용해서 주석

# 모든 file.c
file.c

# 최상위 폴더의 file.c
/file.c

# 모든 .c 확장자 파일
*.c

# .c 확장자지만 무시하지 않을 파일
# 이거는 무시하지마!
!not_ignore_this.c

# logs란 이름의 파일 또는 폴더와 그 내용들
logs

# logs란 이름의 폴더와 그 내용들
logs/

# logs 폴더 바로 안의 debug.log와 .c 파일들
logs/debug.log
logs/*.c

# logs 폴더 바로 안, 또는 그 안의 다른 폴더(들) 안의 debug.log
logs/**/debug.log

프로젝트의 변경사항들을 version에 담기

Untracked files:
(use "git add ..." to include in what will be committed)

위에서 보다시피 파일들이 untracked file이라고 나온다. Git의 관리에 들어간 적 없는 파일인 것이다. 아래 명령어를 통해 tracked 되도록 해준다.

  git add tigers.yaml //특정 파일만 추가
  git add . //모든 파일 추가
  

git diff
변경사항을 좀 더 구체적으로 내용으로 보여줌


add와 commit 한꺼번에 하려면?
(단, 새로 추가된(untracked) 파일이 없을 때만 가능함)

  git commit -am "(메시지)"

untracked file이 있다면 아까랑 똑같이 git add . 하고 commit 하면 된다.

프로젝트에서 과거로 돌아가는 방법

크게 2가지로 나뉜다.

1) reset

말 그대로 시간을 과거로 되돌린다. 예를 들어 한 단계 전인 시점으로 과거를 되돌리려면 해당 과거로 돌아간다음 이후 행적들은 모두 히스토리에서 지워버린다.

여기서 Add team Cheetas의 커밋 해시를 복사한다.

git reset --hard (돌아갈 커밋 해시)

//여기서는
git reset --hard b49ced

그렇게 되면 해당 커밋 시점으로 돌아가서 cheetas.yaml 파일이 생성되었을 때의 시점(해당 커밋이 된 직후 상태)이 되고, 그 이후 커밋은 내역이 삭제된다.

git reset --hard
아직 커밋되지 않은 상태들을 다 지우고, 마지막 커밋 상태로 돌아가고 싶을때 사용

2) revert

협업 시 해당 코드 명령어로 이용

reset와 달리 내역을 삭제하는게 아니라 원하는 시점의 변화를 거꾸로 수행하는 캡슐을 하나 넣음으로써 결국 원하는 시점과 같은 상태로 돌아가게 된다. 따라서 이후의 내역들은 유지해주고, 과거로 돌아가고 싶은 시점 부분만 콕 집어서 되돌릴 수 있다.

다른 내역들은 그대로 유지하되 취소 원하는 내용만 취소해줌

한번 공유가 된 코드는 되돌릴시 revert를 이용해야함

git revert (되돌릴 커밋 해시)

revert를 사용하면 위처럼 반대로 실행하는 커밋이 생긴다. 내가 뭘 취소했는지 내역이 맨위에 history처럼 뜨기 때문에 협업시 되도록이면 해당 명령어를 사용하는게 좋다.

커밋해버리지 않고 revert하기
원하는 다른 작업을 추가한 다음 함께 커밋하고 싶은 경우에 쓰인다.

git revert --no-commit (되돌릴  커밋 해시)

아직 커밋되지 않은 것들을 다 지우고, 마지막 커밋의 상태로 돌아가고 싶을때는

git reset --hard

협업시 한번 공유 공간에 올라간 내역을 reset 해버리면 문제가 발생하게 된다. 그걸 기반으로 다른 사람이 작성한 코드와 심각한 conflict를 일으키게 된다.

0개의 댓글