개인 공부를 하며 정리한 글입니다.
틀린 부분, 수정할 부분이 있다면 언제든 피드백 환영입니다 :)
1. 가입하고 토큰 만들기
- Sign Up으로 가입 후 로그인
- Personal access token 만들기
- 우측 상단의 프로필 - Settings
- Developer Settings
- Personal access tokens - Generate new token
- repo 및 원하는 기능에 체크, 기간 설정 뒤 Generate token
- 체크박스에 대한 자세한 설명은 여기 공식문서로
- 토큰 컴퓨터에 저장하기
- Windows 자격 증명 관리자
- Windows 자격 증명 선택
- git:https://github.com 자격 정보 생성
- 사용자명과 토큰 붙여넣기
2. 원격 저장소 사용하기
1 ) GitHub 레포지토리 생성 후 복붙 명령어
$ git remote add origin (원격 저장소 주소)
- 로컬의 Git 저장소에 원격 저장소로의 연결 추가
- 원격 저장소 이름에 흔히 origin 사용. 다른 것으로 수정 가능
$ git branch -M main
- GitHub 권장 - 기본 브랜치명을 main으로
$ git push -u origin main
- 로컬 저장소의 커밋 내역들 원격으로 push(업로드)
- -u 또는 --set-upstream : 현재 브랜치와 명시된 원격 브랜치 기본 연결
2 ) 원격 목록 보기
$ git remote
📢 자세히 보기: git remote -v
3 ) 원격 지우기
- 로컬 프로젝트와의 연결만 없애는 것. GitHub의 레포지토리는 지워지지 않음
$ git remote remove (origin 등 원격 이름)
github 에 저장하는 법이 보고 싶으신 분은 여기로
https://daunje0.tistory.com/58
4. GitHub에서 프로젝트 다운받기
- Download ZIP: 파일들만 다운받음, Git 관리내역 제외
- Git clone: Git 관리내역 포함 다운로드
터미널이나 Git Bash에서 대상 폴더 이동 후
$ git clone (원격 저장소 주소)
5. Push, Pull
1 ) 원격으로 커밋 밀어올리기(push)
- 아래 명령어로 push
- 이미 git push -u origin main으로 대상 원격 브랜치가 지정되었기 때문에 가능
$ git push
- 현재 폴더를 그대로 업로드 하는 것이 아니라, 지금까지의 이력/버전(commit)을 push 하는 것
2 ) 원격의 커밋 당겨오기(pull)
- 아래 명령어로 pull
$ git pull
3 ) 협업상 충돌 발생 해결하기 (pull 할 것이 있을 때 push를 하면?)
- 즉 팀원이 먼저 push를 했고, 내가 동기화가 안 되있을 때
- push 시, 적용 불가 충돌 발생함
- 원격에 먼저 적용된 새 버전이 있으므로 적용 불가
- pull 해서 원격의 버전을 받아온 다음 push 가능
- push 할 것이 있을 시 pull 하는 두 가지 방법
# merge 방식
$ git pull --no-rebase
# rebase 방식
$ git pull --rebase
📢 pull 을 할 때 rebase 협업시 사용 OK
- push하기
4 ) 로컬의 내역 강제 push해보기
- 로컬의 내역 충돌 전으로 reset
- 아래 명령어로 원격에 강제 적용
$ git push --force
이 상황은 로컬 저장소의 커밋 히스토리가 원격 저장소의 커밋 히스토리보다 뒤쳐져 있는데 푸시를 하였으므로 발생하는 에러이다. 하지만 지금 우리가 원하는 것은 이 뒤쳐져 있는 로컬 저장소의 커밋 히스토리를 원격 저장소의 커밋 히스토리로 강제로 덮어쓰는 것이므로 이를 위한 옵션 -f 또는 --force 를 명령어에 추가하여야 한다.
이 때 로컬에 없고 원격에만 있었던 커밋들은 모두 날라간다.
팀원들이랑 레포지토리를 공유하는 상황이면 아주 곤란해질 수 있다.
이미 원격에 올라간 커밋을 흔적도 없이 지우고 싶어서 reset --hard 한 후에 git push --force 옵션을 쓸 수도 있기는 하다. force 옵션을 쓰려면 아래 조건들을 체크하고 신중히 사용해야한다.
- 나 혼자만 사용하는 브랜치에 커밋을 push하였고, 이를 깔끔히 되돌리고 싶은 경우
- 팀원들과 직접 커뮤니케이션해서 내가 되돌린 커밋을 pull로 땡겨간 팀원이 없다고 확인된 경우
하지만 보통 원격에 올라간 커밋을 롤백을 하려는 경우는 흔적이 남기는 해도 안전한 revert 를 사용하는 것을 추천한다.
5. 원격의 브랜치 다루기
1 ) 로컬에만 생성된 브랜치를 원격에 적용하기
원격에 로컬 브랜치를 적용하려면
# $ git push -u (원격저장소 명) (브랜치 명)
$ git push -u origin (브랜치 명)
로컬 + 원격 브랜치 확인하기
$ git branch --all
기존의 git branch 만 하면 로컬 브랜치만 확인이 된다.
2 ) 원격에만 생성된 브랜치를 로컬에 적용하기
1. 원격의 변경사항 확인
$ git fetch
$ git brahcn -a
❗ fetch 와 pull 의 차이점
pull 을 실행하면, 원격 저장소의 내용을 가져와 자동으로 병합 작업을 실행하게 된다.
그러나 단순히 원격 저장소의 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우에는
fetch 명령어를 사용하면 된다.
fetch 를 실행하면, 원격 저장소의 최신 이력을 확인할 수 있다.
이 때 가져온 최신 커밋 이력은 이름 없는 브랜치로 로컬에 가져오게 된다.
다른 작업자들의 작업물을 바로 내 로컬에 반영하려면 fetch는 잊고 pull만 하면 된다(fetch + 내 파일에 반영이 pull 이므로)
2. 원격 브랜치 로컬에 생성하여 연결하고 switch
# git switch -t origin/ (가져올 원격 브랜치 명)
$ git switch -t origin/from-remote
3. 원격 브랜치 삭제
$ git push (원격 이름) --delete (원격의 브랜치명)
위와 같은 결과를 실습하면서 보시고 싶으시면 얄코님의 Git & GitHub강의를 참고해주세요.
https://www.yalco.kr/@git-github/0-1/
'DevOps > Git' 카테고리의 다른 글
Github 에서 원격 저장소를 만들어 보자 (0) | 2024.03.20 |
---|---|
git 의 3가지 트리 그리고 rm, mv, restore, reset 옵션 (0) | 2022.06.30 |
SVN(Subversion) 과 Git 의 차이 (0) | 2022.06.30 |
Git, GitHub 사용하기 기초 2(Branch, merge, rebase) (0) | 2022.06.29 |
Git, GitHub 사용하기 기초 1 (init, add, commit, reset, revert) (0) | 2022.06.27 |