Git

SourceTree에 Github를 연동하고 Branch를 생성해보자

Ofglen 2023. 4. 5. 17:51

코딩테스트를 준비하면서 필요한 자료구조를 강제적으로 꾸준히 공부하기 위해 CS 스터디를 개설했다. (총대 매서 스터디장이 됐음ㅎ)

여러 코딩테스트 문제를 풀이하고 github에 올리려는데 하나 하나 커밋 메세지 작성하고 코딩 문제집 마다 파일로 분류하려고 하니 시간이 많이 들어갔다. 또 실수를 했을 때 바로 잡는 것도 시간이 너무 많이 걸렸음ㅠ

즉, 공부한 내용을 github에 빠르게 잘 정리해서 올리기 위해서 Github에 Branch를 생성하고 폴더를 관리하기 위해 GUI인 SourceTree를 이용해보겠다!

push와 pull만 CLI 환경인 gitbash만 이용해봤는데

GUI를 이용하면 시간 단축도 되고 gitbash보다 편리하다고 하길래... 도전해봤다.

윈도우 환경에서 진행 했다.

 

GitHub은 Git을 이용한 원격 저장소이며 로컬 저장소(노트북)에서 저장한 작업물을 원격 저장소에 저장하여 협업을 하는 도구로 쓰인다.

출처: 생활코딩

 

 

순서

초기 설정으로 GitHub에서 원격저장소를 만든다.

이후 로컬 저장소를 만든다.

 

원하는 폴더 경로에 로컬 저장소로 사용할 폴더를 만들고 

 

Git Bash Here을 눌러서 로컬 저장소로 설정한다.

 

 

이후 Git Bash에서 진행한다.

아래 초기화 명령어를 입력한다.

git init

 

저장소 초기화는 왜 할까?
저장소 초기화를 하면 폴더 경로(로컬 저장소)에 .git 폴더가 만들어진다.

 

.git 폴더는 왜 생성될까?
.현재 폴더(로컬 저장소)에서 파일 변경이 발생했을 때 변경 내역을 저장한다.
즉, 버전 관리를 수행하는 폴더다. 

 

변경사항을 확인하는 명령어

git status

 

 

stage란 무엇인가?
원격저장소에 저장하기 전 임시저장소에 저장하는 명령어다
즉, 버전을 생성하기 전 임시저장한 상태!

 

git add [파일명]
git add . # 모든 파일을 stage에 추가함

 

 

 

1. SourceTree를 설치하려면 계정을 무료 가입하고 로그인 해야 한다. 로그인 하고 Branch를 생성 했다.

 

Branch를 생성하면 아래 같은 에러가 난다.

에러 코드 해결을 위해 문장의 끝을 먼저 구글링하면 된다.

not a valid object name: 'master'
git -c diff.mnemonicprefix=false -c core.quotepath=false --no-optional-locks branch jinah fatal: not a valid object name: 'master' 오류가 나면서 완료됨.

 

 

github에 master 브랜치가 main으로 바뀌었는데 (master라는 뜻이 복종의 의미로 좋지 않아 main으로 바뀌었음)

sourcetree는 기본이 master 브랜치로 설정되어 있기 때문에 에러가 발생 했고 이 설정을 main으로 바꾸어주어 해결하면 된다.

 

2. master -> main 브랜치 변경

터미널을 열어 다음 명령어를 입력한다.

git branch -M main

 

3. origin 브랜치 생성

일반적으로 origin이라는 이름의 브랜치를 따로 만들어서 작업하기 때문에 origin 브랜치를 생성했다.

git remote add origin [repository 주소]

 

 

 

자 이제 해결 됐을까? 하던 차에

소스트리 원격에 빨간색 느낌표가 떴다.

 

 

 

흠.. github로 로그인을 따로 해주지 않아서 문제가 발생 했다.

 

 

4. Github에 로그인하기

아래 포스트에서 설명한다.

2023.04.03 - [Git] - SourceTree에 Github 계정을 연결해서 로그인하기

 

차근차근 따라오면 로그인까지 완료 ㅎㅎ

 

이제 되겠지?

생성한 브랜치로 옮겨서 진행하려는데 또 이슈가 났다.

에러 문구는 이렇다.

error: pathspec 'origin' did not match any file(s) known to git

 

 

최초 커밋을 하지 않아 생기는 문제였다.

원격 저장소를 생성하면

…or create a new repository on the command line

아래 명령어들을 터미널에 입력하라고 한다.

 

echo "# cs-study" >> README.md
git init # 초기화
git add README.md # README 추가
git commit -m "first commit" # 커밋 메세지 추가
git branch -M main # main에서 branch 추가
git remote add origin git@github.com:k0605ja/cs-study.git # 원격 저장소 url 추가
git push -u origin main # 원격 저장소에 로컬 커밋 업로드

 

5. 최초 커밋한다. 

또 최초 커밋하는 과정에서 에러를 마주하게 된다...

error: failed to push some refs to

git pull을 하고 push를 하지 않아서 발생하는 에러다.

git pull을 하면 해결될까?

fatal: refusing to merge unrelated histories

 

 

새로 만든 main 브런치에 checkout을 못한다는 에러가 났다.

왜 그럴까? non bare repository는 clone으로 원본을 복사한 레포지토리라는 뜻!

즉, bare-repository에서 push 해야 하는데... (일반적인 방법이라고 한다)

non-bare repository에서 push하려고 해서 이슈가 발생했다. 

 

다음 명령어를 입력하면 해결된다.

git init --bare

 

non-bare repository vs. bare repository
non-bare repository: 작업하기 위한 저장소
bare repository: 서버에 저장하기 위한 저장소

 

 

 

 

초기에 push를 안 해서 문제가 점점 커지는 것 같아서 산 넘어 산이었다...

원격 저장소와 로컬 저장소를 삭제 후 재생성하고 새로 깃 클론했다.  

 

유효한 경로/URL이 아닙니다. 라는 에러를 만났다 ^^ 방가방가

순탄치 않다.

 

아래 포스트에서 해결 방법을 정리했다.

2023.04.05 - [Git] - SourceTree 유효한 경로/URL이 아닙니다. 라는 에러를 만나면 어떻게 해결할까?

 

정상적으로 깃 클론을 완료하고 브랜치를 만들었다.