[git] 유용한 명령어 정리

장동균·2024년 11월 17일
0

이곳에서 알려주는 git 명령어 중 몰랐던 것들을 정리


Intro

몇개의 git command를 알고 있는가?
git은 지속적으로 변화하고 있다.
하루에 평균 9개의 커밋이 반영되고 있으며, 지난 3년 동안 10K 커밋이 반영되었다.
3년 동안 어떠한 것이 변경되었는지 알고 있는가? 매일 쓰는 일부의 명령어만 계속 반복해서 사용하는 것은 아닌가?


git stash의 u 옵션과 all 옵션

옵션추적된 파일추적되지 않은 파일 (untracked)무시된 파일 (ignored)
git stash -u포함포힘제외
git stash --all포함포함파일

git blame, git log

git lens를 사용하다보니 거의 사용하지 않는 명령어. 하지만 가끔 히스토리를 자세하게 파악하고 싶을 때 활용해볼만하다.

git blame -L {start line number},{end line number} path/to/file

git log -L {start line number},{end line number}:path/to/file

git blame -w -C -C -C -L {start line number},{end line number} path/to/file

Ignore whitespace and detect lines moved or copied in the same commit or the commit that created the file or any commit at all


rerere

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Rerere

Merge conflict 해결시 동일한 충돌을 매 커밋마다 해결해야 될 때가 있다. (보통 이런 경우 cherry-pick으로 해결해왔다.)

git config --global rerere.enabled true
설정을 하게 되면 이전 단계에서 해결한 내용을 메모리에 유지하면서 이후에 발생하는 동일한 문제에 대해 메모리에 저장해둔 내용대로 해결한다.


force-with-lease

--force-with-lease는 강제 푸시의 위험성을 줄이기 위한 옵션이다. 조건부 강제 푸시로 동작하며, 다음과 같은 검증 과정을 거친다:

  1. 리모트 브랜치의 상태를 확인:
    • 로컬에서 작업을 시작했을 당시의 리모트 브랜치 상태를 기준으로 비교.

  2. 다른 사용자의 변경 사항 감지:
    • 리모트 브랜치가 로컬에서 작업을 시작한 이후로 변경되지 않았다면 푸시를 허용.
    • 리모트 브랜치에 다른 사용자의 변경 사항이 추가된 경우, 푸시를 차단.


maintenance

git maintenance start (git 백그라운드 동작 활성화)

git maintenance stop

가비지 컬렉션 (Garbage Collection):

Git은 작업 중 생성된 불필요한 객체들을 정리합니다. 이는 git gc 명령과 유사합니다. 이 과정에서 불필요한 파일들을 삭제하고 저장소의 크기를 줄입니다.

팩 파일 최적화:

Git은 데이터를 효율적으로 저장하기 위해 여러 객체를 “팩” 파일로 묶습니다. 이 명령어는 팩 파일을 최적화하여 디스크 공간을 절약하고 성능을 개선합니다.

레이스 히스토리 정리:

오래된 Git 레퍼런스(브랜치, 태그 등)를 정리하여 저장소를 깔끔하게 유지합니다.

profile
프론트 개발자가 되고 싶어요

1개의 댓글

comment-user-thumbnail
2024년 11월 18일

ㄱ?

답글 달기