git

Autumn·2021년 2월 13일
0

TIL

목록 보기
14/19
post-thumbnail

명령어 줄여서 쓰기

예) status를 st라고 줄이고 싶을 때

git config --global alias.st status

특정 확장자 파일만 추가하기

예) css 파일만 추가하고 싶을 때

git add *.css

git ignore

tracking 하고 싶지 않은 파일들, 깃과 깃허브에 올리고 싶지 않은 파일들은 .gitignore 파일에 추가하면 된다.

파일 수정된 내용 확인

아무런 옵션이 없으면 working directory에 있는 것만 비교해서 볼 수 있다.
git diff

staging area에 있는 것을 보고 싶다면 --staged 옵션 추가
git diff --staged

모든 변경사항을 한꺼번에 커밋

working directory와 staging area의 모든 변경사항을 커밋할 때, 한꺼번에 add, commit을 할 수 있도록 옵션을 지정할 수 있다.

git commit -am "커밋 메시지"

파일 이름 변경한 것 반영

git mv 원래파일이름 변경할파일이름

브랜치마다의 커밋 시각적으로 보기

git log --oneline --graph --all

format을 원하는대로 조합해서 사용할 수 있는데 git config --global alias~ 를 사용하면 된다.
앨리쌤이 알려주신 것은 git hist로 등록해두었다.

커밋 필터링

최근 n개 커밋만 보기, author="ㅁㅁㅁ"인 커밋만 보기, 특정 날짜 이전의 커밋만 보기, 제목에 특정 단어가 포함된 커밋만 보기, 소스코드에서 특정 문자열을 변경사항으로 가지는 커밋 보기 (-S 옵션)

tag

커밋에 마치 북마크처럼 tag를 달아둘 수 있다. 현업에서는 버전 정보를 달아둔다.

git tag (태그 이름) (커밋의 해시코드)
git tag v.1.0.0 0ad2dbb

release note 작성은 아래처럼 한다.

git tag (릴리즈 노트를 넣을 태그 이름) (커밋의 해쉬코드) -am "(노트 내용)"
git tag v1.0.1 328708d -am "Release note..."

원하는 특정 태그에서 브랜치를 생성하는 것도 가능하다.

git checkout -b (새 브랜치 이름) (브랜치를 만들 태그 이름)
git checkout -b testing v1.0.1

현재 브랜치에 머지된/머지되지 않은 브랜치 보기

git branch --merged
git branch --no-merged

브랜치 이름 변경하기

git branch --move (원래 이름) (변경할 이름)
git branch --move fix fix-welcome

origin 저장소에 이름 변경 반영
git push --set-upstream origin (변경한 이름)
git push --set-upstream origin fix-welcome

두 브랜치 사이의 커밋들 확인하기

예) master 브랜치에서 test 브랜치를 만들고 커밋한 상황

git log master..test

내가 지정해놓은 hist로도 볼 수 있다.

git hist master..test

코드들을 보고 싶다면 diff를 이용

git diff master..test

fast forward merge

fast forward merge에서는 기본적으로 머지 됐다는 커밋이 남지 않는다. 만약 머지 됐다는 커밋을 남기고 싶다면 --no-ff 옵션을 달아주면 된다.

git merge --no-ff (가져올 브랜치)

이 때 vsc로 파일이 하나 열리는데 기본적으로 들어가는 커밋 메시지가 적혀있다. 수정해도 되고 안 해도 된다. 열린 파일을 닫아주면 머지가 완료되고, 머지됐다는 커밋 메시지도 남는다.

엘리쌤은 이게 오히려 지저분해보여서 머지 메시지 없이 그냥 하신다고 하셨고, 모든 history를 남기는 게 좋다면 저렇게 하면 된다고 하심. 선호도 차이!

three-way merge

master 브랜치에서 생성한 새 브랜치(a라고 하자.)에 커밋이 몇 개 있고, master 브랜치에서도 a 브랜치를 만든 시점보다 커밋이 더 진행된 경우 fast forward merge가 불가능하다. 이 때는 merge commit을 만들어서 두 브랜치의 변경사항을 모두 합쳐야 한다.

master 브랜치에서 git merge a 라고 입력하면 바로 머지가 되지 않고 vsc에서 merge commit 파일이 열린다. 그 파일을 다시 닫아주면 three-way merge가 완료된다.
(이렇게 파일이 열리는 걸 내가 설정을 해준건지 모르겠음)

rebase

three-way merge와 같은 상황에서 fast forward merge처럼 하는 방법이다. three-way merge는 merge commit이 남는데, 그런 지저분한(?) 히스토리가 남는 게 싫을 때 유용한 rebase.

다른 개발자와 함께 같은 브랜치를 작업하고 있다면 rebase는 좀 위험하다. 내가 rebase하고 push를 하게 되면, 커밋이 달라지게 된다. (세상에 같은 커밋은 없기 때문..) 그래서 원래의 커밋과 내용은 같을지라도 전혀 다른 커밋이 되기 때문에 나중에 merge conflict이 발생할 수 있다. 이미 히스토리가 서버에 업로드 되어 있다면 업로드된 히스토리는 절대 rebase 하면 안 된다. 아직 서버에 업로드 하지 않은, 나의 local에 있는 커밋에 대해서는 마음껏 rebase해도 된다.

rebase --onto

마스터 브랜치에서 만든 a 브랜치, a 브랜치에서 만든 b 브랜치가 있을 때, b 브랜치의 베이스를 마스터 브랜치로 옮기는 작업을 할 때 유용하다.

git rebase --onto (바꿀 base) (원래 base) (옮길 branch)
git rebase --onto master a b

이렇게 rebase를 하고 나면 master 브랜치에 b 브랜치를 fast-forward merge 가능하다.

cherry pick

필요한 커밋만 쏘옥 가져올 수 있는 기능

 git cherry-pick (가지고 올 커밋 해시코드)

stash

아직 커밋할 단계는 아닌데 다른 작업을 해야할 때 임시 저장할 수 있는 기능. stash stack에 넣어두면 된다. bug fix를 다양한 버전으로 시도해 볼 때도 유용하게 쓸 수 있다.

git stash push -m ""

stash 목록 확인하기

git stash list

저장한 stash 꺼내기

git stash apply (stash id)

가장 최근 stash를 꺼내면서 목록에서 지우고 싶을 때는
git stash pop

stash 목록 지우기

git stash drop (stash id)

전체 지우기
git stash clear

stash에 있는 것을 적용하면서 새로운 브랜치 만들기

git stash branch (새로 만들 branch 이름)
profile
한 발짝씩 나아가는 중 〰 🍁 / 자잘한 기록은 아래 🏠 아이콘에 연결된 노션 페이지에 남기고 있어요 😎

0개의 댓글