2023/07/26 TIL

김도현·2023년 7월 26일
0

TIL

목록 보기
7/76

금일 한 것

제대로 파는 Git & GitHub - by 얄코 3-2 ~ 4-4까지

금일 배운 것

3. 차원 넘나들기

(1). branch 합치기

① merger로 합치기

주가 될 브랜치에서 git merger를 실행

git merge 브랜치명
  • :wq으로 자동입력된 커밋 메시지 저장하여 마무리

💡 merge는 reset으로 되돌리기 가능

  • merge도 하나의 커밋
  • merge하기 전 해당 브랜치의 마지막 시점으로

병합된 브랜치는 삭제

git branch -d 브랜치명

② rebase로 합치기

합쳐질 브랜치로 이동 후 실행

  • merger와는 반대
git rebase 브랜치명
  • 소스트리에서 상태 확인 시 주 브랜치는 뒤쳐진 상태
    주 브랜치로 이동 후
git merge 합쳐질_브랜치명

병합된 브랜치는 삭제

git branch -d 브랜치명

(2). 충돌 해결

① merge충돌 해결하기

  • 오류 메시지와 git status확인
  • VS Code에서 해당 부분 확인

당장 충돌 해결이 어려울 경우 아래 명령어로 merge 중단

git merge --abort

해결 가능 시 충돌 부분을 수정한 뒤 git add ., git commit으로 병합 완료

② rebase충돌 해결하기

  • 오류 메시지와 git status 확인
  • VS Code에서 해당 부분 확인
    당장 충돌 해결이 어려울 경우 아래 명령어로 rebase 중단
git rebase --abort

해결 가능 시

  • 충돌 부분을 수정한 뒤 git add .
  • 아래 명령어로 계속
git rebase --continue
  • 충돌이 모두 해결될 때까지 반복

(3). SourceTree로 진행해보기

① 브랜치 만들고 merge, rebase 하기

merge

rebase

브랜치 삭제

② merge 충돌 해결해보기

💡 rebase는 충돌 가능시 CLI로 진행 권장

4. GitHub 사용하기

(1). GitHub 시작하기

github.com 살펴보기

  • Git으로 관리되는 프로젝트의 원격 저장소
  • 👑 오픈소스의 성지
    • Git, VS Code, Tensorflow, React 등 살펴보기

② 가입하고 토큰 만들기

  1. 로그인하기
  2. personal access token 만들기
  • 우측 상단의 프로필 - Settings
  • Developer Settings
  • Personal access tokens - Generate new token
  • repo 및 원하는 기능에 체크, 기간 설정 뒤 Generate token
      1. Note : 토크 명칭
      1. Expiration : 만료기간(7일, 30일, 60일, 90일, 만료기간 없음)
      1. repo :

  • 토큰 안전한 곳에 보관해 둘 것

③ 토큰 컴퓨터에 저장하기

  • Windows 자격 증명 관리자
  • Windows 자격 증명 선택
  • git:https://github.com 자격 정보 생성
  • 사용자명과 토큰 붙여넣기


    암호 = 토큰

④ 소스트리에도 추가



위의 Github는 자동으로 생성된 것
아래의 Github는 이번에 새로 만든 것

⑤ GitHub에 새 Repository 생성


    1. 프로젝트의 이름
    1. 공개설정
    • Public: 모두에게 보일 수 있는 프로젝트
    • Private: 허용된 인원만 볼 수 있는 프로젝트

⑥ 협업할 팀원 추가



  • 레포지토리의 Settings - Collaborators
    • Manage AccessCollaborators로 바뀌었습니다.
    • (이러한 메뉴명은 이후로도 변경될 수 있습니다.)
  • Add people

(2). 원격 저장소 사용하기

① 로컬에 원격 저장소 추가 후 푸시

⭐️ HTTPS 프로토콜 사용
첫 생성 시 모습

GitHub 레포지토리 생성 후 복붙 명령어

git remote add origin (원격 저장소 주소) 
  • 로컬의 Git 저장소에 원격 저장소로의 연결 추가

    • 원격 저장소 이름에 흔히 origin 사용. 다른 것으로 수정 가능
git branch -M main
  • GitHub 권장 - 기본 브랜치명을 main으로
git push -u origin main 
  • 로컬 저장소의 커밋 내역들 원격으로 push(업로드)

    • -u 또는 --set-upstream : 현재 브랜치와 명시된 원격 브랜치 기본 연결

결과

git remote add origin https://github.com/subscriptioncat/git-practice.git
git branch -M main
git push -u origin main

⭐️ GitHub의 해당 레포지토리 페이지 새로고침하여 살펴보기

  • 파일들 내용
  • 커밋 내역들

원격 목록 보기

git remote
  • 자세히 보기: git remote -v

원격 지우기 (로컬 프로젝트와의 연결만 없애는 것. GitHub의 레포지토리는 지워지지 않음)

git remote remove (origin 등 원격 이름)

② GitHub에서 프로젝트 다운받기

    1. Download ZIP: 파일들만 다운받음, Git 관리내역 제외(.git이 없음)
    1. Git clone: Git 관리내역 포함 다운로드
    • 저장할 곳에 우클릭으로 추가 옵션 표시 선택
    • Open Git Bash here를 선택

    • 복사한 HTTPS을 입력
      hj247@DESKTOP-R1VCF2H MINGW64 /f/project_download
      $ git clone https://github.com/subscriptioncat/git-practice.git
      Cloning into 'git-practice'...
      remote: Enumerating objects: 83, done.
      remote: Counting objects: 100% (83/83), done.
      remote: Compressing objects: 100% (48/48), done.
      remote: Total 83 (delta 34), reused 83 (delta 34), pack-reused 0
      Receiving objects: 100% (83/83), 7.62 KiB | 1.52 MiB/s, done.
      Resolving deltas: 100% (34/34), done.

터미널이나 Git Bash에서 대상 폴더 이동 후

git clone (원격 저장소 주소)
  • 이번 강에서는 HTTPS 프로토콜 사용
  • VS Code로 해당 폴더 열어보기

(3). push와 pull

① 원격으로 커밋 밀어올리기(push)

git push
  • 이미 git push -u origin main으로 대상 원격 브랜치가 지정되었기 때문에 가능

② 원격으로 커밋 당겨오기(pull)

git pull

③ pull 할 것이 있을 때 push를 하면?

push 해보기

  • 원격에 먼저 적용된 새 버전이 있으므로 적용 불가
  • pull 해서 원격의 버전을 받아온 다음 push 가능
$ git push
To https://github.com/subscriptioncat/git-practice.git
 ! [rejected]        main -> main (non-fast-forward)
error: failed to push some refs to 'https://github.com/subscriptioncat/git-practice.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

push 할 것이 있을 시 pull 하는 두 가지 방법

  1. git pull --no-rebase - merge 방식
    • 소스트리에서 확인해보기
    git pull --no-rebase
    Auto-merging leopards.yaml
    Merge made by the 'ort' strategy.
    leopards.yaml | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)
  2. git pull --rebase - rebase 방식
    • pull 상의 rebase는 다름 (협업시 사용 OK)
    $ git pull --rebase
    Successfully rebased and updated refs/heads/main. 

push하기

④ 협업상 충돌 발생 해결하기

pull 하여 충돌상황 마주하기

  • --no-rebase--rebase 모두 해 볼 것

⑤ 로컬의 내역 강제 push해보기

git push --force

0개의 댓글