Skip to main content

git 명령어 모음


git 명령어 모음입니다.



기본 명령어​

git init // git 생성
git clone 레포지토리주소 // 원격저장소 등 복사하기
git status // 현재 디렉토리 변화점 추적
git add // 커밋 전 파일 추가
git commit -m "커밋메세지" // 커밋 및 메세지 넣기
git push origin master // 로컬저장소에서 원격저장소로 보내기
git push origin 브런치이름 // 브런치를 푸시
git pull origin master // 원격저장소에서 로컬저장소로 변경사항 가져오기
git remote add origin 레포지토리주소 // 원격저장소 주소 추가
git remote remove origin 레포지토리주소 // 원격저장소 주소 삭제
git remote -v // 연결된 원격저장소 주소 확인
git diff // 변경된 부분 보기
git branch // 브런치 목록 표시
history // 깃 명령어는 아니지만, 최근에 실행했던 명령어 한눈에 볼수 있음


원격 저장소로 강제 푸시​

싱크가 꼬여서 로컬 저장소를 원격 저장소에 덮어 씌울때 쓰인다.

git push origin +master

또는

git push --force


과거 커밋 파일들 열람하기​

과거에 커밋했던 작업공간을 그 당시 그대로 열람하고 싶을때 쓰인다.

git checkout 커밋해시

또는 브런치를 열람할 수도 있다.

git checkout 브런치이름

열람이후 최신 커밋으로 돌아가고 싶으면 아래와 같이 입력해준다.

git checkout master


과거 커밋으로 되돌아가기​

내가 작업했던 파일 및 폴더들은 그대로 살려두고, 커밋만 과거로 변경하고 싶다. (기본값)

git reset 커밋해시

내가 작업했던 공간을 모조리 없애버리고 과거 커밋상태 그대로 돌아가고 싶다.

git reset --hard 커밋해시


하위 디렉토리 또는 파일에서 특정 문자열 찾기​

문자열 또는 정규표현식을 넣어서 찾을 수 있다.

git grep 정규표현식

또한 아래 명령어를 이용하게 되면 과거 커밋에 있는 내용까지도 삳삳히 조회할 수 있다.

git grep 정규표현식 $(git rev-list --all)


커밋 기록 보기​

과거에 커밋을 했던 기록들을 보고 싶다면 아래 명령어를 입력하면 된다.

git log

만약 특정 파일이 변경되었던 커밋들만 보고 싶다면 아래 명령어를 입력하면 된다.

git log --follow ./파일의경로 ## 특정파일이 변경되었을때의 커밋들 표시


과거 시점에 커밋하기​

과거의 시점으로 커밋을 하고 싶을때에는 아래와 같이 명령어를 입력해주면 된다.

git commit -m "커밋메세지" --date="Fri Apr 24 23:20:00 2020 +0900"

일일히 요일과 달을 쓰기 번거롭다면 아래와 명령어처럼 써도 무방하다.

git commit -m "커밋메세지" --date=2020-03-26T15:30:00+0900

다만 author date만 변경되는 것으로 committer date도 변경하고 싶을때는 아래와 같이 git filter를 이용해야 한다.



GIT_COMMITTER_DATE 수정하기​

아래의 명령어를 입력하게 되면 모든 committer date가 author date와 똑같아진다. (참고: 깃, 과거 커밋했던 내용 수정하기)

git filter-branch --env-filter \
'if [ "$GIT_AUTHOR_DATE" != "$GIT_COMMITTER_DATE" ]
then
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
fi'

만약 단지 몇 개의 커밋만 수정하고 싶을경우에는 아래 코드를 커밋해시와 날짜만 수동으로 바꾸어 가면서 적어주면 된다.

git filter-branch --env-filter \
'if [ $GIT_COMMIT = 커밋해시 ]
then
export GIT_AUTHOR_DATE="Fri Apr 24 23:20:00 2020 +0900"
export GIT_COMMITTER_DATE="Fri Apr 24 23:20:00 2020 +0900"
fi'


이메일 및 이름 변경하기​

아래 명령어를 형식에 맞게 넣어주면 새 이름과 새 이메일로 변경된다. (참고: 깃, 커밋 이메일 변경하기)

git filter-branch --env-filter '

WRONG_EMAIL="변경전 이메일"
NEW_EMAIL="변경후 이메일"

WRONG_NAME="변경전 유저네임"
NEW_NAME="변경후 유저네임"

if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
then
export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi

if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
then
export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi

if [ "$GIT_COMMITTER_NAME" = "$WRONG_NAME" ]
then
export GIT_COMMITTER_NAME="$NEW_NAME"
fi

if [ "$GIT_AUTHOR_NAME" = "$WRONG_NAME" ]
then
export GIT_AUTHOR_NAME="$NEW_NAME"
fi

' --tag-name-filter cat -- --branches --tags


git 대소문자 구분하기​

git은 대소문자를 구분하지 않는 파일 시스템(Windows의 NTFS, macOS의 HFS+)에서 파일 이름을 변경해도 추적되지가 않습니다.

다음 명령어를 이용해서 해당 레포지토리의 대소문자 변경을 추적할 수 있습니다.

git config core.ignorecase false