-
나만의 Git 정리 part 2Code Etc/Git 2023. 11. 14. 03:26반응형
amend : 수정 못한 파일이 있습니다, 방금 만든 커밋에 추가하고 싶을 때
로컬 저장소에서만 커밋했을 떄 :
amend명령어를 사용하면 방금 했던 커밋을 수정할 수 있다. 원격저장소까지 푸시했더라도 가능하다.
수정하지 못한 부분들을 수정한 다음에 stage에 올린다.
그리고 마지막커밋 정정버튼을 사용하여 커밋내용을 바꿀 수 있다.
원격저장소에 이미 푸시했을 때 :
로컬저장소에서 했던 대로 수행한 뒤에 원격저장소에 강제로 덮어씌우는 강제푸시를 하면 된다.
cherry-pick : 커밋하나만 떼서 현재 브랜치에 붙이고 싶을 때
소스트리 ui에서 가져오고 싶은 커밋에 오른쪽 마우스를 눌러 체리픽으로 가져오면 된다.
이렇게 하면 변경사항을 복사해왔지만 커밋 아이디도 다르게 생성된다.
reset : 이전 커밋으로 브랜치 되돌리기소스트리에서 원하는 커밋에 오른쪽 버튼을 누르고 "이 커밋까지 현재 브랜치를 초기화"를 클릭하면 된다
옵션은 soft, mixed, hard가 있는데
hard는 아예 해당 커밋으로 돌아가는 거고
mixed는 변경사항을 stage 아래로 둬서 무엇을 스테이지 위로 올릴 지 add할 수 있다.
soft는 변경사항을 스테이지 위로 두어서 당장 커밋할 수 있다는 차이점이 있다.
상황에 맞게 적절하게 쓰면 좋을 것 같다.
원격 저장소와 로컬 저장소의 브랜치 히스토리가 다를 땐 강제푸시를 해서 맞춰주면 되는데
꼭!나만 쓰는 브랜치여야 한다. 그렇지 않으면 히스토리가 꼬일 수도 있다.
revert : 커밋의 변경사항을 되돌리기
다같이 사용하는 브랜치에서 변경사항을 적용했는데 오류가 있거나 다시 삭제하기로 했을 때
원본으로 되돌리기 라는 커밋을 남기기도 한다.
소스트리에서 원하는 커밋에 우클락하여 커밋 되돌리기를 수행하면 된다.
stash : 커밋하지 않은 변경 사항을 잠시 보관하기
내가 A에서 작업하다가 B로 옮겨가서 버그를 픽스해야할 상황이 생길 수 있다.
그때 A에서 하던 작업을 커밋으로 만들기엔 애매한 상황일 때 사용하는 명령어이다.
소스트리에서 변경사항에 대한 것들을 stage에 올려놓고 스테시 매뉴를 클릭해 적용하면 된다.
불러올 때도 스테시 메뉴에서 불러올 수 있다.
스테시할 수 있는 파일들은 tracked된 파일만 가능하다.
----------------------------------------CLI로 작업하기---------------------
기본적인 명령어들 몇 개 적어놓고 가겠다.. 다른 분들을 위해
pwd : 현재 위치
cd (디렉토리) : 이동할 폴더 위치 // 괄호 안에 폴더이름을 적으면 됩니다
cd .. : 뒤로 이동
mkdir : 디렉토리 생성
git init : 깃 파일 생성
ls -a : 파일 목록 확인 -a옵션으로 숨겨진 파일도 볼 수 있음
깃 CLI에서는 환경설정을 해주어야 하는데 여기서 환경은 지역, 전역, 시스템옵션이 있다.
우선순위는 지역 > 전역 > 시스템옵션 순이며 지역은 현재 git저장소에만 해당되고
전역은 git사용자에 해당하며 시스템은 PC를 가리킨다.
git config --global <옵션> //지정한 전역 옵션 출력 git config --global <옵션> <값> //지정한 전역 옵션의 값을 새로 설정한다 git config --global --unset <옵션> //지정한 전역 옵션 삭제 git config --local <옵션> //지정한 지역 옵션 출력 git config --local <옵션> <값> //지정한 지역 옵션의 값을 새로 설정한다 git config --local --unset <옵션> //지정한 지역 옵션 삭제 git config --system <옵션> //지정한 시스템 옵션 출력 git config --system <옵션> <값> //지정한 시스템 옵션의 값을 새로 설정한다 git config --system --unset <옵션> //지정한 시스템 옵션 삭제 git config --list //현재 프로젝트의 모든 옵션 출력
우리가 해야할 전역옵션은 유저네임, 이메일, 에디터 이다.
git config --global user.name //현재 설정된 유저네임 확인 git config --global user.name "이름" //"이름"으로 유저네임 설정
이메일도 똑같이 user.email을 사용하면 되고
에디터는 명령어도 있는데 처음에 설치할 때 설정해주면 된다. 어려우면 재설치 권장,,
reset
add로 스테이지에 올라가 있는 파일을 unstage상태로 끌어내리기 위해 reset을 쓸 수 있다.
git reset [파일명] 이런 식으로 동작한다
reset --hard <이동할 커밋체크섬> : 커밋을 되돌릴 수 있다.
체크섬은 HEAD~<숫자> , HEAD^<숫자>로 쓸 수 있는데
~뒤에 숫자가 붙으면 숫자만큼 위로 이동하고
^뒤에 숫자가 붙으면 n번째 부모를 가리킨다. 즉 이 경우는 병합커밋처럼 부모가 둘 이상인 경우 해당한다.
commit
워킹 스테이지에 올라간 파일을 커밋하면 VSCode가 열리는데 첫 줄에 커밋에 제목을 적고
꼭!!한 줄 띄고 세 번째 줄부터 커밋에 대한 내용을 설명하면 된다.
log
브랜치의 커밋 이력을 보여준다
옵션
-n : 최신 n개의 커밋만 보여준다
--oneline : 커밋 메세지를 한 줄로 요약해서 보여준다. 생략 시 자세히 보여준다.
--graph : 커밋 옆에 브랜치의 흐름을 그래프로 보여준다 / GUI와 유사하게 보여줌
--decorate : 간결하게 보여준다
--all : all옵션이 없는 경우 HEAD와 관계없는 옵션은 보여주지 않는다.
옵션들은 띄어쓰기로 구분하여 여러개를 쓸 수 있다.
여기서 좋은 커밋 메세지의 7가지 규칙 !
1. 제목과 본문을 빈 줄로 구분한다
2. 제목을 50자 이내로 쓴다
3. 영어로 쓴 경우 첫 글자는 대문자로!
4. 제목에 마침표를 넣지 않는다
5. 영어로 쓸 경우 현재형으로 시작한다
6. 본문을 72자 단위로 줄바꿈한다
7. 어떻게보다 what과 why를 설명한다.
help
git help "명령어"를 쓰면 해당 명령어에 대해 자세한 설명이 나온다
add, commit, push, remote
이는 이전 글에서 설명한 명령어들이기에 사용법은 생략하도록 한다..
만약 원격 저장소와 연결할 때 remote명령어가 --set upstream에러가 난다면 -u로 처리할 수 있다.
깃은 긴 명령어는 --이고 단축 명령어는 -인것도 기억하면 좋을 듯 하다
clone
git clone "원격저장소 주소"로 하면 내 현재 디렉토리에 폴더를 생성해서 만든다.
그래서 만약에 내가 파일을 집어넣고자 하는 디렉토리에서 실행하려 한다면 cd..명령어로
상위 디렉토리로 이동해서 실행하면 된다. 폴더명이 중복이라면 git clone "원격저장소 주소" "폴더이름"으로 쓰면 된다.
Branch
git branch [-v] // 로컬 저장소의 브랜치 목록을 보여준다. -v명령을 사용하면 마지막 커밋도 표시된다. git branch [-f] <브랜치이름> <커밋체크섬> //새로운 브랜치를 생성한다. 체크섬값을 주지 않으면 헤드로부터 브랜치를 생성 //이미 있는 브랜치를 다른 커밋으로 옮기고 싶을 때는 -f 옵션 사용 git branch -r[v] //원격 저장소에 있는 브랜치를 보고싶을 때 사용. -v옵션으로 커밋요약도 볼 수 있음 git checkout <브랜치이름> //특정 브랜치로 체크아웃한다. 브랜치 이름 대신 체크섬을써도 되지만 브랜치 이름을 쓰는 게 낫다. git checkout -b <브랜치이름> <커밋체크섬> //특정 커밋에서 브랜치를 새로 생성하고 동시에 체크아웃까지 한다. git merge <대상 브랜치> //현재 브랜치와 대상 브랜치를 합칠 때 사용 git rebase <대상 브랜치> //내 브랜치의 커밋들을 대상브랜치에서 재배치시킨다. 히스토리가 깔끔해져서 사용한다. bit branch -d <브랜치이름> //특정 브랜치를 삭제할 때 사용. 헤드 브랜치나 병합되지 않은 브랜치는 삭제할 수 없다 //git brand -D <브랜치 이름> //브랜치를 강제로 삭제하는 명령
tag
git tag -a -m "meassage" v0.1 로 작성하면 0.1주석으로 메세지가 태깅된다.
이렇게 주석을 달면 git push origin v0.1로 원격저장소에 푸시할 수 있다.
반응형'Code Etc > Git' 카테고리의 다른 글
나만의 git 정리 (0) 2023.11.10 [Git] Git 명령어 총망라, 이제 나도 GitMaster! - CodeHan의 코딩공부 (0) 2022.07.12