terminal, Git 커맨드 정리 (reset, restore 추가)

2022.02.28 13:18 2,474 Views

Git - Logo Downloads

버전관리시스템 중 하나인, VCS(Version Control System)입니다.

매일매일 변화된 Task를 관리하며 이전 버전의 파일을 다시보거나 비교 및 협업이 가능하죠 :D


GIt은 rinux 기반이기 때문에 window의 경우, git bash를 다운받습니다.

Git을 시각적으로 보기 위해 GUI인 gitkraken 등을 활용을 추천합니다.

https://www.gitkraken.com/


terminal command

이름 설정 : git config --global user.name <user-name>
이메일 설정 : git config --global user.email <user-name>

현재 내 이름 확인 : git config user.name
현재 내 이름 확인 : git config user.email

ls : 해당 디렉토리 리스트 확인
ls ~a : 숨겨져 있는 리스트도 모두 확인
open . : 해당 디렉토리 열기 *window는 start .
pwd : 현재 디렉토리 확인
cd : 디렉토리 초기화(home)
cd .. : 상위 디렉토리 이동
touch : 파일 생성
mkdir : 폴더 생성
rm : 파일 영구 삭제
rm -rf : 폴더 삭제
  • 각각의 Commit은 한 가지 업무에 집중합니다. 예를 들어 단어를 수정할 때 스테이징을 하고, 이후에 다른 파일을 추가 후 따로 스테이징 한 후에 커밋을 진행하라는 의미입니다. 이렇게 하지 않으면 과거의 커밋으로 돌아가면 헷갈릴테죠.


  • 그리고 커밋 메세지는 현재시제로 할 건지 과거시제로 할 건지 아직도 많은 이야기가 있습니다. Git과 Stackoverflow에서는 ‘현재시제’를 다루라고 이야기합니다.( e.g. git commit -m "add two text file")

Git command

*깃 커맨드*
git log : git의 이력 확인(commit, hash, ...)
	- git log  --oneline : 한 줄로 확인

git commit --amend : 가장 최근의 커밋의 메세지 수정 및 프로젝트 수정 시 가장 최근 커밋에 집어넣기

git ignnore : 파일 무시하기(API KEY ...)
	- 공유되어선 안되고 제외하고 싶은 파일이 있는 경우 사용
	- touch .gitignore 후 안에 추가
		- <file-name> or <folderName/> or <*.log>(와일드카드)

HEAD : Main Branch에서 가장 최근에 커밋한 브랜치 = 나의 현재 브렌치 위치

git branch : branch 확인
	- git branch <branch-name> : HEAD는 이동하지 않고 branch 생성
	- git switch(checkout) <branch-name> : HEAD 이동
		- git switch -c <branch-name> : new branch + HEAD 이동
		- git switch - : 최근에 있던 branch로 돌아감
	- git branch -d <branch-name> : branch 지우기
	- git branch -m : branch 이동 or renam
git merge
	- 특정 커밋이 아닌 브렌치를 병합
	- 항상 현재 HEAD 브렌치에 병합
    - 병합하려는 브렌치로 이동하고 git merge!
    - 충돌 시, 파일을 직접 열어서 수정!(HEAD, ==, 다 지우고 Commit)

git diff : 커밋 전에 git diff로 수정 전후를 확인
	- git diff HEAD : 커밋을 한 것을 포함하여, HEAD branch diff 이력 한번에!
	- git diff --staged : 스테이징된 파일의 수정 전후 확인 (= git diff --cached)
	- git diff <branchname1> <branchname2> : 두 브렌치 수정 전후 확인
	- git diff <commithash1> <commithash2> : 두 커밋 수정 전후 확인
		- git log --oneline에서 hash복사 후 진행

git stash : 작업 중에 잠깐 다른 곳으로 옮겨야 할 때 사용
	- Stash라는 서랍장이라 생각하고 내 작업을 잠시 여기에 맡겨둠
	- 내 현재 작업이 커밋하기에는 불필요하다면 git stash!
	- git stash list : stash list 확인
	- git stash pop : stash에서 내 최근 작업 가져오는데 stash list에는 없어짐
	- git stash apply <stashname> : stash에서 내 작업을 가져오는데 stash list에는 그대로 존재
	- git stash drop <stashname> : stash 삭제
	
git checkout : 작업하던 때로 돌아감
	- git checkout HEAD~n : head에서 n개 이전의 커밋을 참조
	- git checkout HEAD <file-name> : 한 스텝 이전의 커밋으로!

git restore : 작업 사항 취소
	- git restore <file-name> : = git checkout HEAD <file-name>
	- git restore --source HEAD~n <file-name> : 특정 파일 특정 n번째 아래 commit으로 복구
	- git restore --source <commithash> <file-name> : 특정 파일 특정 commit으로 복구
	- git restore --staged <file-name> : 스테이징 된 파일 다시 Unstaging

git reset : 이전 커밋으로 되돌리기
	- 나만 브랜치를 사용하고 있을 때 사용
	- git reset <commithash>
	- git reset --hard <commithash> : 돌아간 커밋 이후의 변경 이력 전체 삭제

git revert : 이전 커밋으로 되돌리기
	- github, team project시 사용
	- commit 삭제가 아닌 커밋 하나를 추가하는 방식
	- git revert 
  • git revert (예시)

'본 포스팅은 데이콘 서포터즈 '데이크루 1기'활동의 일환입니다.

로그인이 필요합니다
0 / 1000
이대권
2022.03.01 10:58

매번 헷갈리네요. 마침 찾고 있었는데 감사합니다.

백남진
2022.03.01 13:19

많은 도움이 되셨으면 합니다. 감사합니다!