오픈소스 컨트리뷰션 git 이슈 정리

수정이 없음에도 git status에서 수정함으로 나타난 경우

Windows는 CRLF를 사용한다. 그러나 Mac 또는 Linux는 LF만을 사용한다. 이러한 문제가 발생하지 않도록 다음 설정을 해주어야 한다.

git config --global core.autocrlf true
git stash
git stash pop

원격 레포지토리에 push한 Commit 수정하기

최신 commit 수정하기

git commit --amend

n개의 커밋 수정하기

git rebase -i HEAD~n

r e499d89 Delete CNAME
r 0c39034 Better README

git push -f orgin master 

PR 수정하기

git add 작업파일 

커밋 덮어쓰기 
git commit --amend 또는 git rebase -i HEAD~n 

git push -f origin master 

commit 유저가 잘못된 유저와 연동돼요

git config --global user.email "@email.com"
git config --global user.name "name"

git user.email과 user를 설정한 후에 push한 결과 github에서 내 계정과 연동되지 않고 없는 유저로 인식이 된다. 이러한 경우 Github 계정 설정에서 이메일을 추가함으로서 해당 문제를 해결할 수 있다.

 

https://github.com/settings/emails 에서 이메일을 추가하면 자동으로 연동이 된다.

원격 저장소 최신 동기화

# 현재 저장소 확인
git remote -v 
origin  https://github.com/kwx4957/litmus-docs.git (fetch)
origin  https://github.com/kwx4957/litmus-docs.git (push)

# 원격 저장소 추가
git remote add upstream https://github.com/litmuschaos/litmus-docs.git

# 원격 저장소 변경사항 확인
git fetch upstream

# 브랜치 변경
git checkout master

# 원격 저장소 변경사항 반영
git merge upstream/master 

다른 브랜치 커밋 가져오기

다른 브랜치의 특정 커밋 가져오기

git cherry-pick 57ccc2

여러 개의 커밋

git cherry-pick 1165 57ccc2 f8cc0

커밋 범위 지정

git cherry-pick 57ccc2..f8cc0

충돌난 커밋 해결 후 재진행

git cherry-pick --continue 충돌난 부분을 해결한 후, 실행하면 체리피킹이 마무리된다.

충돌난 커밋 제외, 체리피킹

git cherry-pick --skip

체리피킹 실행 전으로 복구

git cherry-pick --abort

브랜치

브랜치 생성 및 이동

git checkout -b 브랜치명

브랜치 삭제

git branch -D 브랜치명

원격 저장소 확인

git remo

원격 저장소 추가

git remote set-url upstream https://github.com/kwx4957/litmus-e2e.git

원격 저장소 기준 브랜치 초기화

git fetch --all
git reset --hard upstream/master

Rebase를 잘못한 경우, 특정 시점으로 되돌아가기

로컬 작업 로그 확인
git reflog

특점 시점으로 돌아가기
git reset --hard HEAD@{61}

 

배운점
PR은 원격 브랜치를 기준으로 하나의 기능(목적)에 대해서만 PR을 보낸다.
master 브랜치는 Fork한 저장소를 바라본다. 기능 구현은 별도의 브랜치에서 작업하여 PR을 보낸다.

원격 저장소에서 커밋을 push하기 전에 최대한 커밋을 정리해서 보내자.

 

https://parksb.github.io/article/28.html
CRLF 개행 문자 차이
Changing a commit msg
PR 수정하기
why are my commits linked to the wroong user
https://mylko72.gitbooks.io/git/content/branch/checkout.html
https://eteo.tistory.com/402
https://hbase.tistory.com/141
https://velog.io/@whoyoung90/TIL-51-git-rebase를-잘못한-경우-되돌아가기
https://velog.io/@ujeongoh/git-upstream-원격-저장소-설정하기
https://docs.github.com/ko/get-started/getting-started-with-git/managing-remote-repositories
https://cometj03.github.io/posts/how-to-split-pull-request/

'Git' 카테고리의 다른 글

Priavete Reposiory 복제하기  (0) 2024.06.08
.gitignore is not working  (0) 2023.08.18
파일명 또는 폴더명 대소문자를 무시하는 경우  (0) 2023.08.18