thumbnail
Git 시작하기(7)
Git / Github
2022.02.05.

여기서는 편의상 remote repositoryrepository라고 줄여서 표현하였다. 정확한 구분은 local repository ↔︎ remote repository 가 맞다.

Github는 Git을 기반으로 소스코드를 호스팅하고, 협업을 지원하는 서비스다. Github를 이용하여 로컬에서만 관리하던 프로젝트를 온라인 상에서 떨어진 동료들과 협업 할 수 있다.

Github 연결하기

1. 토큰생성하기

remote: Support for password authentication was removed on August 13, 2021. Please use a personal access token instead. ... The requested URL returned error: 403

위와 같은 메시지가 뜨면서 id/pw 방식으로 push를 시도할 때 오류가 발생할 수 있다. 그 이유는 Github에서 Token Authentication 방식을 요구하기 때문이다. Github에 로그인하면 우측 상단에 프로필 아이콘이 있는데 이를 통해 계정 설정으로 이동이 가능하다.

Imgur > Imgur

  1. Settings > Developer settings > Personal access tokens 이동
  2. Generate new torken 클릭
  3. Note 및 Expration, access scope 설정 후 생성

2. 연결하기

github profilename(계정아님)과 토큰을 등록해주면 된다.

Editor(IDE) - MAC

Imgur

  1. Keychain Access > github 검색
  2. kind가 Internet password로 되어있는 키체인 접속(없으면 생성)
  3. Account와 password(Token) 등록

SourceTree

Imgur

  1. Source Tree > Preferences > Accounts
  2. Add 클릭 후 username과 password 등록

Repository 생성하기

1. 생성하기

Imgur

  1. Owner 설정 : 기본은 자기자신이지만, 본인이 속한 단체(Organization)도 선택 가능하다. (추후 이전도 가능)
  2. Repository 이름
  3. 공개여부 : public의 경우 다른 github 유저가 별도 허가 없이 사용 가능하다.(저작권을 말하는 것이 아님, 기능적으로) 만약 private를 선택할 경우 협업하는 인원으로 등록한 user만 접근이 가능하다.
  4. 기본파일 생성여부 : git clone해서 사용할 거 아니면 아무것도 체크 안해야지 충돌없이 push 할 수 있으니 참고.

2. 연결하기

기본파일 생성을 안했다면, 로컬에 저장되어있는 Git과 바로 연결을 할 수 있다.

Imgur

git remote add <remote-name:origin> <repository-url>
git branch -M main
git push -u <remote-name> <branch-name>

보통 원격저장소는 origin으로 표현하는 것이 기본인데, 로컬 Git에 github의 특정 Repository 말고도 여러 군데 연결이 가능하다. (이름은 다르게 해야겠지)

git clone <repository-url>  //

만약 기존에 존재하는 Repository를 가져와서 쓸려면 위의 명령어를 사용하면 된다.


Repository 사용하기

1. push

git push 명령어는 원격저장소(Repository)에 Branch의 Commit 이력들을 전송하는 역할을 한다.

git push <repository-name> <branch-name>

push 명령어의 인자는 이와같이 두개를 받는다.

git push -u <remote-name> <branch-name>

하지만 위와같이 -u 옵션을 통해 한번 저장소와 브랜치명을 정해주면 git push 명령어 만으로도 commit 내역들을 전송 할 수 있다.

최초 git과 연결했던 명령어를 보면 -u옵션을 사용한 것을 알 수 있다.(그래서 push만 써도 가능했던 거임)

git config --global push.default current

위의 명령어로 글로벌 셋팅 값을 변경하면 현재 위치한 브런치를 기준으로 전송할 수 있다.

2. pull

git pull 명령어는 원격저장소(Repository)의 변경사항을 가져오는 역할을 한다. push를 할 때 원격과 로컬의 내역이 다르면 push를 할 수 가 없다. 이때는 두가지 방법이 있다.

no-rebase 방식(merge방식)

  • git pull -no-rebase 로컬의 Branch와 원격의 Branch를 merge하여 commit된 상태로 가져온다.

rebase 방식

  • git pull --rebase 로컬의 Branch중 분기되어 있는 > 영역을 원격 Branch에 붙여서 가져온다.
  • 원격 껄 붙인뒤, 내가 변경한 걸 붙여준다고 생각하면 된다.

3. 충돌이 일어날 때

  • commit 충돌날때랑 동일하게 처리하면 된다.(rebase, merge)
  • 협업상황에서는 rebase를 쓰지말라고 했는데, 그건 가져온걸 rebase로 바꾸지 말라는 것이고, pull할 때는 rebase를 사용해도 된다.

4. 강제 push

git push --force
git push -f

Repository Branch 다루기

그냥 브랜치 만들어서 push 할 수는 없다. repository의 branch와 연결되어있어야한다.

1. 확인하기

git branch --all
git branch -a

2. 연결하기

  • 위의 git push 설명 참고

3. 원격 Branch 가져오기

git fetch만 한다면, 원격저장소(Repository)의 Branch를 병합(Merge)하지 않고 가져오기만 한다.

git fetch
git switch -t origin/from-remote

4. 삭제

git push <remote-name> --delete  <repository-branch-name>

여기까지 git을 다루는 기본 방법에 대해서 알아보았다. 해당 내용을 반복적으로 잘 사용하다가 심화 사용방법에 대해서 공부해봐야겠다.


참조

Thank You for Visiting My Blog, Have a Good Day 😆
© 2022 Engineer Haesim, Powered By Gatsby.