깃허브 공식 마스코트 : 옥토캣
Git
분산관리 시스템
GitHub
remote repository
Local repository : 내부저장소
Global repository : 외부저장소
Remote repository : 원격저장소
깃허브 시작하기
📌 깃허브 push용 이름 및 이메일 세팅
git —config —global user.name “username”
git —config —global user.email “email@email.com
Token
Github - setting - developer setting - personal access tokens - generate new token
Git ignore
Project에 원하지 않는 Backup File이나 Log File , 혹은 컴파일 된 파일들을 Git에서 제외시킬수 있는 설정 File이다.
적용 : .gitignore 파일을 같이 깃허브로 push
.gitignore 파일은 반드시 최상위 폴더에 존재해야한다 ⭐️
* Git ignore 사이트 참조
https:// www/toptal.com/developers/gitignore
깃허브 활용
내부저장소와 원격저장소 연결
( 연결하기 이전에 깃허브에 저장소가 만들어져야한다)
git remote add origin [ repository address ]
원격 저장소에 업로드
git push -u origin master
내부 저장소 업로드
git add [파일명] : stage area에 추가
git commit -m “commit message” : 로컬 저장소에 추가
협업 실습과정
0
협업 매니저 : 깃허브에 프로젝트 레포지토리 생성 + 콜라보레이터 추가
팀원 : 브랜치 생성
1 깃허브에서 프로젝트 내용을 내부저장소로 가져오기
git clone [repository address]
2 협업 프로젝트에 브랜치 업로드
git push origin [브랜치명]
3 내부저장소에서 프로젝트 내용 수정 -팀원
4 내부저장소에 변경 내용 저장 -팀원
git add .
git commit -m “commit message”
5 깃허브 프로젝트 레포지토리에 업로드 -팀원
git push -u origin [repository address]
6 협업매니저(main)에게 풀리리퀘스트 요청 -팀원
7 풀리퀘스트 확인, merge -매니저
같은 내용을 merge하게 되면 git에서는 merge를 거부
-> 원격 저장소와 내부저장소의 커밋이 서로 다르기때문
충돌 발생시 main 브랜치가 충돌된 영역을 직접 처리
8 변경 내용 내부저장소에 가져오기
git pull origin [repository address]
9 merge 이후 기능이 없어진 브랜치는 삭제
git branch -d [브랜치명]
유의사항
실습진행할 때 바로 clone 명령어를 사용하지않고 git init 이 후에 clone을 진행했더니 브랜치 이름이 main이 아닌 master로 되어있었다. main 브랜치를 새로 생성해서 사용하였는데 로컬에서 작업할때도, 깃허브 브랜치에 push하는 과정에서도 계속 헷갈려서 애를 먹었다. 브랜치는 바로바로 없애고 관리하자😂
이런 경우에는 깃허브의 디폴트 브랜치는 main임으로 깃허브에서 레포지토리를 가져오기 전에 로컬 master 브랜치의 이름을 변경하거나 (master -> main) 삭제하고 clone을 진행하는 것이 좋을 것 같다.
git branch -M master main
협업에서 Pull Request (PR)
수정한 코드가 있을때 협업 매니저에게 내 branch를 가져가 검토 후 병합을 해달라고 요청하는 것
보통은 push 권한이 없는 오픈 소스 프로젝트에 기여할 때 많이 사용한다. (Fork -clone - PR)
clone, pull, fetch 차이점 ⭐️
git clone, git pull, git fetch 모두 원격저장소에 있는 프로젝트 내용을 가져오는 명령어이지만 명백한 차이가 존재한다.
git clone
내부저장소의 내용과 원격저장소의 내용을 일치시킨다.
기존 작업 중 clone명령어를 사용해서 내용을 가져오게 되면 작업하던 내용은 사라지고 원격저장소의 내용이 덮어써진다.
-> clone은 협업 프로젝트 시작할때만 사용하는 것을 권장
git pull (fetch + merge)
원격 저장소의 내용을 가져와 현재 브랜치와 merge(병합)하는 과정을 포함하고 있어 기존 작업 내용을 유지 하며 원격저장소의 내용을 업데이트 할 수 있다. ( *기존작업 commit 필수 )
pull 명령어를 사용하기 전에 기존 작업 내용을 commit(내부저장소에 저장) 해두지 않으면 덮어쓰기가 발생할 수 있다.
git fetch
원격 저장소의 커밋을 내부저장소로 가져온다.
fetch는 pull과 달리 자동 병합을 해주지 않기에 직접 내용을 확인하고 충돌 문제 해결 후 병합(merge)하여 다시 push 해야한다.
파일수정 - commit - push 실패 - fetch - merge - push
단순히 원격 저장소의 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우에도 사용할 수 있다.
버전확인
git —version
커밋 이력 출력
git log
원격저장소 확인
git remote -v
원격 저장소 추가(연결)
git remote add origin [repository address]
로컬 브랜치 확인
git branch
remote까지 출력
git bracn -a
파일 상태보기
git status
ㄴ 스테이지에 추가되지 않으면 변경사항을 🟥빨간색으로 표시
ㄴ 스테이지에 추가되었다면 변경사항을 🟢초록색으로 표시
원격 저장소에 업로드
git push origin [repository address]
원격저장소에서 프로젝트 내용 가져오기
git clone [repository address]
내부저장소에 새로운 브랜치 생성
git branch [브랜치명]
로컬 브랜치를 깃허브에 추가
git push [브랜치명]
내부저장소에 브랜치 삭제
git branch -d
병합
git merge
원격저장소에서 프로젝트 내용 가져오기
git pull origin [repository address] [브랜치명]