repository란?
git이라는 친구가 파일버전을 저장해두는 장소를 repository라고 합니다.
로컬 작업폴더엔 .git폴더가 있는데 그게 repository입니다.
repository는 한국말로 저장소라고합니다.
실제로 개발할 땐 온라인repository를 많이 사용합니다.
내가 컴퓨터에 만들어 놓은 git repository를 온라인으로 저장해두는 겁니다.
Github에서 만든 원격 저장소에 올리기
로컬저장소 -> 원격저장소
이렇게 업로드하고 싶으면 작업폴더에서 터미널켜서
git push -u 원격저장소주소 main
하면 됩니다.
- 로컬저장소의 main브랜치를 원격저장소에 올리라는 뜻입니다.
- -u 옵션은 방금 입력한 주소 기억해두라는 뜻입니다. 다음부터는 주소를 입력안하고 git push만 입력해도 잘됩니다.
주소는 github에 들어가보면 복사해올 수 있습니다.
그래서 실제로 vscode의 터미널에서 commit을하고 push를 해보겠습니다.
아래의 순서대로 진행했습니다.
- 파일 생성 git init
- 문서 생성하고 저장 git add .
- git commit -m '작명'
- git push -u 주소
github에들어가보면 이렇게 내역이 만들어집니다.
원격 저장소에 있던거 그대로 내려받기
git clone https://원격저장소주소
를 하면 원격저장소에 있던 내용을 그대로 내려받아집니다.
친구라는 새로운 폴더를 만들어서 git clone을 해보겠습니다. 아까만든 파일이 잘 내려받아집니다.
협업할때 git push주의점
gitpush는 마음대로 할 수 있는게 아닙니다.
갑자기 다른 사람이 만든 파일이 원격저장소에 생기면 git push못합니다.
github에서 새로운 파일(b, test)를 만들었습니다.
그리고 vscode에서도 c라는파일을 새로 만들고 push를 해보겠습니다.
다음과 같이 에러가 발생합니다.
이유는 원격 vs 로컬 내용이 다르면 로컬저장소에 git push가 안됩니다.
그래서 git pull을 이용하면 현재 원격저장소 내용 가져올 수 있습니다.
git pull 원격저장소주소
이러면 원격 저장소에 있던 모든 브랜치 내용을 가져와서 로컬저장소에 합치라는 뜻입니다.
이걸 해주면 로컬이 최신상태가 되기 때문에 이제 git push가 가능합니다.
결론은 변동사항이 생기면 git pull 하고나서 git push 하면됩니다.
실제로 pull을 해보면 b와 test가 잘 가져와지고 이제 push를 해보겠습니다.
pull 이후에 push도 잘됩니다.
(참고)
- git pull 원격저장소주소 브랜치명 입력하면 특정 브랜치만 가져올 수 있습니다.
신기능을 만들고 싶으면 main브랜치에 코드짜다가 프로젝트 망치지말고
다른 브랜치를 만들어서 거기에 개발하는 것도 안전하다고 좋다고 했습니다.
원격 repository(저장소)에도 브랜치를 만들 수 있습니다.
- github.com에서 브랜치를 직접 만들어도 되고
- 로컬에서 만든 브랜치를 올려도 브랜치생성이 가능
로컬에서 한번해보면
git clone으로 복사해온 작업폴더에서
새로운 브랜치(mining)만들고 , 파일도 하나 새로 만들어서 commit 합니다.
그 다음 로컬 브랜치를 원격에 올리고 싶으면
git push 원격저장소주소 로컬브랜치명
하면 됩니다.
git push 원격저장소주소 로컬브랜치명 하면 특정 로컬저장소 브랜치 -> 원격저장소
git push 원격저장소주소 하면 모든 로컬저장소 브랜치 -> 원격저장소 입니다.
특정 브랜치만 올리는 일이 잦습니다.
Pull request
팀끼리 일하는 경우 merge 하기 전에 토론하거나 검토하거나 그래야 하는 경우가 많습니다.
그래서 github.com은 pull requesy라는 기능이 있습니다. 쉬운말로 merge request입니다.
내 브랜치좀 merge 해달라는 요청을 할 수 있고
팀원끼리 merge전에 코드검토가 가능합니다.
github에서 아래버튼 누르면 생성가능합니다.
그 다음 어떤 브랜치를 어디에 합칠지 선택하고
하단에서 commit 내역, 변경내역을 볼 수 있습니다.
그럼 코드를 리뷰할 수 있습니다.
그리고 merge 의 옵션을 선택하면 됩니다.
저장소에 올리지 않는 파일들은 .gitignore
원격저장소를 효율적으로 쓰고 싶으면 쓸데없는 파일은 commit해서 올리지 않는게 좋습니다.
.gitignore 파일을 하나 만들면 저장소에 올리지 않을 파일들을 쉽게 명시가능합니다.
거기 명시한 파일들은 git add . 해도 스테이징이 되지 않아서 편합니다.
Q. merge할 때 어떤 방법 쓰는게 좋을까요?
- 기록을 남겨야하는 중요한 브랜치를 merge할 땐 3-way merge
- 기록을 남길 필요없는 쓸데없는 브랜치를 merge 할댄 squash, rebase 쓰면 됩니다.
참고자료
https://codingapple.com/course/git-and-github/
'Git' 카테고리의 다른 글
Git Branch Switching, 협업순서,Commit 메시지 규칙 (0) | 2023.11.20 |
---|---|
merge(3-way, fast-forward, squash, rebase) (0) | 2023.08.08 |
Git - branch 만들기 (0) | 2023.08.08 |
Git - add, commit (0) | 2023.08.07 |