동아리 지원을 위해 처음으로 제대로 사용할 깃헙 레포지토리를 만들었다.
간단한 프로젝트를 올리기 위해 git
명령어를 통해 init, add, commit, 그리고 push까지 했을 때, 깃헙 레포지토리에 바로 반영되지 않고 compare&pull request가 떴다.
기존에 간단한 실습으로 로컬 레포지토리 생성 및 push를 했을 때는 분명 깃헙 레포지토리에 그대로 반영이 됐었는데 의외의 결과에 마주하게 됐고, 바로 구글링을 시작했다.
첫 커밋이 아니였다..?
git push origin master
명령어 오류를 겪은 한 블로그에서 그 원인과 해결방법을 찾을 수 있었다. 해당 작성자가 참조한 stackcoverflow페이지를 직접 들어가봤다.
깃헙 레포지토리 생성 시 체크할 수 있는 initialize repo with a README
옵션과 관련된 해당 문제는 정리하자면 다음과 같다:
해당 옵션 체크 시 발생하는 README
생성은 커밋으로 간주된다.
따라서 git init
을 통해 생성한 로컬 레포지토리에서 생성한 '첫 커밋'은 연결된 깃헙 레포지토리의 README
생성으로 생긴 커밋과 충돌하게 된다.
이는 두 레포지토리 간 push
혹은 pull
시 에러를 야기한다
커밋 ID, 커밋 히스토리와 관련된 해당 충돌에 대한 내용은 여기 자세히 나와있다.
커밋과 관련된 이슈이기에, 단순히 깃헙 레포지토리에서 README
파일을 직접 다운받는 것으로 해결이 불가능하다.
git
을 사용하는 버전관리 자체에 경험이 없어서 해당 내용을 완전히 이해하지는 못했지만, 대략 커밋과 관련된 로컬-원격 저장소 간 동기화 문제라고 요약할 수 있을 것 같다.
README
없이 생성. 로컬 레포지토리 X | README
있는 깃헙 레포지토리 O
1) git clone
으로 원격 저장소 복제
2) 로컬 저장소에서 수정
3) commit
, push
로컬 레포지토리 O | README
있는 깃헙 레포지토리 O
git push -f origin master
pull
and push
git pull origin master
>> make changes <<
git push --set-upstream origin master
* 흔히 프로젝트 시 2번 방법을 많이 사용한다고 한다. (git init
을 사용하지 않는 방법)
* 3번의 두번째 방법 같은 경우, branch
와 관련된 주의할 점이 있었다. 원 글 참고
참조한 글들에 따르면 나는 에러가 날 상황이였는데도 오히려, 에러 없이 push가 되어 구글링 하는데 오래 걸렸다. 왜 에러가 나지 않았는 지는 아직 모르겠다. 읽은 답변들 중 branch
와 관련된 내용도 있었는데, 이는 나중에 다루기로 한다.
해당 내용을 공부하며, git
과 github
도 틈틈이 공부해둬야겠다고 느꼈다.
문제 해결을 위해 구글링 하던 중 흥미로운 것을 발견했다.
On Oct. 1, 2020, any new repositories you create will use main as the default branch, instead of master
git
에서 새 저장소 생성 시 기본 브랜치의 이름으로 관습처럼 사용하던 master branch
가 단어 'master'가 내포하는 인종차별적 성격때문에, Github
는 대신 main branch
라는 용어를 사용하기로 했다고 한다. BLM
과 관련이 있다고 하는데, PC를 위한 바람직한 선택인지, 기술 상의 이슈와 관련이 없음에도 관습을 수정하여 번거로움을 나을 뿐인지 개발자들의 생각이 궁금하다.