2022년 8월 8일 월요일

자주 사용하는 git 명령어

git status : 변경된 파일 목록을 보여줌. svn st 와 동일. default는 모든 변경된 파일을 보여줌.
"git status ./" 와 같이 경로를 지정해줘야 해당 경로 변경 파일만 보여줌.
git diff : 변경된 내용을 보여줌. svn diff 와 동일.
git rm <filename> 파일 삭제.
git rm -cache <filename> 원격 파일만 삭제.

git checkout -- <filename> : 변경 사항을 취소함. svn revert 와 동일.
git checkout . : 현재 폴더 이하의 변경 사항을 취소함.
git clean -f : untracked 파일 삭제
git clean -fd : untracked 파일 및 디렉토리 삭제

git remote -v : 원격 저장소 주소를 알려줌.
git commit -m "주석"
git commit -a : 수정된 모든파일을 add 해서 commit 진행됨.
git merge <branch> --squash
topic branch가 있었다는 정보나 커밋 로그도 모두 남지 않는다.
topic branch에서 행한 작업이 작아 1커밋으로 정리해버려도 문제가 없는 경우 사용.
git pull : 새로운 업데이트를 받음. svn up 과 동일.
가급적이면 commit 하기 이전에 pull 해서 최신버전에 작업 하는 게 좋은 것 같음.
그렇지 않으면 branch/merge가 발생해서 불필요한 merge commit 생성됨.
동일한 파일을 수정하여 충돌 상황이 발생하면 업데이트가 취소됨.

git tag <tag-name> <commit-id>
ex) git tag rel20160627 3d96f7
git log, tig : 로그 정보를 확인, 현재 tag 정보도 확인 가능.
HEAD : checkout 된 branch 의 최상위.
revision 으로 checkout 되었을 경우에는 detached HEAD 상태가 됨.
git log -g
git reflog : 리퍼런스 로그를 보여줌. HEAD의 이동이나 log에 나오지 않는 중요한 정보를 보여준다. detached HEAD의 숨겨진 커밋도 찾을 수 있다.
git log --stat : 어떤 파일이 수정됐는지, 얼마나 많이 변경됐는지 보여주고 commit과 관련된 파일을 살펴볼 수 있습니다.
git log --oneline : 하나의 커밋을 한줄로 요약해서 보여줌
git log --branches --graph --decorate --oneline : 로그를 보기 좋게 만듬
git log --name-only : 로그에서 수정된 파일을 보여줌

git config branch.autosetuprebase always
: 만약 모든 브랜치에 설정하고 싶을 경우 상기 커맨드로 설정

git branch : branch 리스트 보기
git checkout <branch name> : branch 전환
git checkout -b <branch name> : branch 생성 및 전환
git checkout -B <branch name> <tag-name or commit-id>
: <tag-name or commit-id> 기준으로 새로운 브랜치를 생성하고 전환됨.

** 간단한 수정 사항이라 merge commit 이 불필요해 보이는 경우

1. merge commit을 줄이기 위한 방법
topic branch 를 만들어서 수정 사항을 commit 하고
git pull --rebase 를 하면 working branch의 commit 을 상위로 올려줌.

2. merge commit을 줄이기 위한 방법 (repo 등을 사용하여 --rebase 옵션을 줄 수 없을 때)
branch 를 만들어서 수정한 파일을 commit 하고
repo sync 한 후에 git merge <branch> --squash 를 하면 branch 의 commit한 내용이 현재 branch 로  stage 상태(add 한 상태)로 전달되며 이후 commit, push 진행하면 됨.
merge squash 하지 않으면 바로 merge commit 이 생성됨.

3. merge commit을 줄이기 위한 방법 (방법 2에서 branch를 만들고 싶지 않을 때)
수정한 파일을 commit 하고, repo sync 한 후에 git reflog 명령어로 이전 commit-id 를 알아냄.
git merge <이전 commit-id> --squash 를 하면 이전에 commit한 내용이 현재 branch 로 stage 상태(add 한 상태)로 전달되며 이후 commit, push 진행하면 됨.

git 사용 도중 프로그램이 비정상 종료되어 아래와 같은 에러 메시지 출력 시 해결 방법
Another git process seems to be running in this repository, e.g. an editor opened by 'git commit'. Please make sure all processes are terminated then try again. If it still fails, a git process may have crashed in this repository earlier: remove the file manually to continue.

git 명령어 사용 시 위와 같은 메시지가 나오면 index.lock 파일을 삭제한다.
rm -f .git/index.lock

--------------------------------------------------------------------------------------
.gitignore로 쓸모 없는 파일은 무시할 수 있다

gitignore는 Git이 인식하는 특수한 파일이다.
안에 적힌 폴더/파일들은 마치 없는 취급을 해서 내 파일 상태가 깨끗해 진다.

GitHub 저장소를 만들 때 설정하면 편하다.
원하는 .gitignore 검색해서 넣어줘도 괜찮다.

(주의) 이미 Track된 파일들은 나중에 .gitignore파일을 추가해도 무시되지 않는다.
이땐 index를 초기화해주면 해결된다. 내가 작업 중인 Git 저장소의 루트 디렉토리(최상위 디렉토리)에서 git rm -r --cached .명령어를 써서 index를 초기화할 수 있다.

--------------------------------------------------------------------------------------


댓글 없음:

댓글 쓰기

Windows 11 세팅

기존에 리눅스만 깔아서 사용중인 삼성컴퓨터에서 Windows 11을 설치 후 정품인증이 되지 않았다. Windows 10을 설치 하여도 여전이 정품인증이 되지 않았다. 이 컴퓨터는 윈도우를 깔아본 적이 없다. 에러코드는 0xC004F213, 윈도우 제...