GitHub
1. GitHub 세팅
1.1. GitHub 가입하기
아래 페이지로 들어가 회원가입을 해주세요. 메일 인증까지 하셔야 실습을 진행할 수 있습니다.
GitHub 공식 사이트: Where the world builds software
원하는 이메일을 입력하고 Sign up for GitHub을 클릭하신 후 회원가입을 진행합니다.
기존에는 비밀번호 인증을 통해 로그인을 했지만, 2021년 8월부터 비밀번호 인증을 지원하지 않았습니다. 다만 24년 5월 현재 비밀번호 인증을 지원하는 상태입니다. 만약 비밀번호 인증이 작동되지 않는다면 회원 가입 후 4.2로 가서 token발급을 진행해주세요. 이 내용은 깃헙 정책에 따라 변경이 될 수 있습니다.
1.2. Repository 생성하기
로그인이 되었다면 아래 Create repository를 클릭합니다.
레파지토리 이름을 설정하고 Public(공개)/Private(비공개)를 설정하신 후, Add a README file
을 클릭하여 README file을 추가합니다. 설정이 완료되면 Create Repository를 클릭합니다.
- 나중에 설정 탭에서 Public과 Private 상호 변경 가능합니다.
Add a README file
은 보통 체킹을 하지 않고 생성하지만, 간편한 실습을 위해 체킹하여 생성하고 실습하도록 하겠습니다. 체킹을 한 것과 체킹을 하지 않은 것 2개 모두 진행합니다.
1.3. GitHub에 파일 올리기
1.3.1. GUI, CLI를 이용하여 GitHub에 올리기
- Add file > Upload File > 001.html
- 초기 레파지토리 생성시 README.md 파일을 생성하지 않았을 경우 해당 화면이 나오지 않고, 아래와 같은 git 명령어가 나오게 됩니다. 똑같이 git bash에 입력해주시면 README.md파일이 GitHub 레파지토리로 들어가는 것을 확인할 수 있습니다.
💡 이미 컴퓨터에 작업하던 디렉토리가 있을 경우 초기에
Add a README file
를 선택하지 않고Create Repository
를 선택하여 레파지토리를 만들고 연결하는 작업을 진행해야 합니다. 이 페이지 하단에 디렉토리를 연결하는 법이 기술되어 있습니다.
- 초기 레파지토리 생성시 README.md 파일을 생성하지 않았을 경우 해당 화면이 나오지 않고, 아래와 같은 git 명령어가 나오게 됩니다. 똑같이 git bash에 입력해주시면 README.md파일이 GitHub 레파지토리로 들어가는 것을 확인할 수 있습니다.
1.3.2. Repository 내 하위폴더 생성하기
프로젝트를 진행하다보면 레파지토리의 갯수가 늘어나게 될 겁니다. 이렇게 늘어난 레파지토리를 체계적으로 관리하기 위해서는 하위 폴더의 생성이 필요하죠. 하위 폴더를 생성하고자 하는 레파지토리에 들어간 후, 아래 순서를 따라 폴더를 생성해 봅시다.
- 우측 상단의
Add file
을 클릭하고Create new file
을 클릭합니다.
/
를 기준으로 폴더가 분리됩니다./{폴더명}
을 입력해서 폴더를 생성합니다.
- 빈 폴더는 생성되지 않아요! 임의의 파일을 생성해주어야 아래와 같이
commit new file
버튼이 활성화 됩니다.Commit new file
버튼을 클릭합니다.
GitHubTest
레파지토리안에test
폴더가 생성되었고 폴더의 하위에index.html
파일이 생성된 것을 확인할 수 있습니다.
index.html 파일을 각각에 하위 폴더로 넣고 GitHub Page를 운영할 경우 하위 폴더를 http://{계정명}.github.io/{폴더명}/{폴더명}
과 같이 URL 구조처럼 사용할 수 있습니다.
예) paullabkorea/githubtest/test → 실제로는 test 폴더에 index.html로 연결됩니다.
실무에서 바로 적용해야 하는 경우가 아닌 경우, github을 처음 사용하시는 분은 가볍게 GUI로만 사용하시고 익숙해진 다음 CLI로 넘어가시길 권해드립니다.
2. git clone
- 원격 저장소의 코드를 컴퓨터에 받아올 수 있습니다. 새 작업 디렉토리 만들고(
mkdir
명령어) 생성한 디렉토리로 이동(cd
명령어)하겠습니다.$ mkdir filename $ cd filename $ git clone https://github.com/id/clone-filename.git .
$ mkdir filename $ cd filename $ git clone https://github.com/id/clone-filename.git .
클론 시 점(.)을 찍는 이유는 현재 폴더에 클론 받기 위해서 입니다. 만약, 점(.)을 찍지 않을 경우 새 폴더를 생성합니다.
3. git pull
원격 저장소에 업데이트 된 데이터를 가져오고 병합할 때 사용합니다.
$ git pull origin main
$ git pull origin main
-
코드를 수정하고 pull 받으려하니 누군가 이미 코드를 수정했을 경우에 사용하는 명령어 입니다. 여러분이 push를 하려고 했더니 누군가 이미 push를 해서 pull을 받아야 하는 상황이 된거죠.
시나리오 A사람 clone --- push1 B사람 clone -------------- pull-push2 C사람 clone ------------------------------- push3(pull 받지 않아 error)
시나리오 A사람 clone --- push1 B사람 clone -------------- pull-push2 C사람 clone ------------------------------- push3(pull 받지 않아 error)
-
로컬 main과 원격 main을 다른 브랜치로 보고 병합합니다.
git pull --no-rebase
git pull --no-rebase
-
시간상 순서대로 병합합니다.
git pull --rebase
git pull --rebase
-
4. git add, git commit, git push
4.1 git add, git commit, git push
이미지 파일을 다운로드 받은 곳에 올리고 아래 명령어를 입력해주세요.
- 권한이 주어진 경우에는 소스코드 수정 후 커밋과 푸시하기
$ git status $ git add . $ git commit -m "추가 작업 내역입니다." $ git push origin main
$ git status $ git add . $ git commit -m "추가 작업 내역입니다." $ git push origin main
push가 완료되면 GitHub에 잘 올라갔는지 확인합니다. push를 하게 되면 로컬 저장소에 있는 소스코드 또는 파일들이 GitHub에 올라가게 됩니다.
GUI 환경에서 히스토리를 확인할 수 있습니다. 아래처럼 누가 어떤 소스코드를 수정했는지 내역을 확인할 수 있습니다. 되돌릴 수도 있습니다.
- 원격 저장소와 로컬 저장소의 싱크가 맞지 않아(예를 들어 컴밋 개수가 다르다던지) 로컬 저장소로 강제로 맞추고 싶을 때 사용하는 명령어입니다. 이 명령어는 혼자 레파지토리를 사용할 때 사용하시고 절대 협업시 사용해서는 안되는 명령어입니다.
git push --force
git push --force
4.2 git push password 에러
- (23년 3월, 맥북) token을 발급하지 않아도 readme.md 파일 없이 레파지토리 생성 후 GitHub에서 제시한 명령어를 Visual Studio Code 터미널에 입력하면 간단한 웹 인증만으로 연결이 될 수 있으니 참고 바랍니다.(OS에 따라 안될 수도 있습니다.)
push 할 때 다음과 같은 에러가 뜰 수 있습니다. 2021년 8월 13일부터 비밀번호 인증 지원을 사용하지 못하도록 보안 업데이트가 되었기 때문입니다.
remote: support for password authentication was removed on august 13, 2021. please use a personal access token instead.
remote: support for password authentication was removed on august 13, 2021. please use a personal access token instead.
위와 같은 경우, 비밀번호 대신 token 이나 ssh 두가지 중 하나의 인증을 사용해야 합니다. 실습은 4.4.1 token 발급만 진행합니다.
4.2.1. (실습) token 발급하기
- GitHub 오른쪽 상단에 있는 개인 프로필을 클릭한 후, Settings를 클릭합니다.
-
좌측 메뉴 가장 하단에 있는 Developer settings > Personal access token > Personal access tokens (classic) > Generate new token을 클릭합니다.
-
클릭을 했을 때 **Generate new token (classic)**을 선택해주세요. 휴대폰 인증을 활성화 두었다면 아래처럼 휴대폰 인증이 떴을 수도 있습니다. 활성화 해두지 않았다면 비밀번호를 입력하는 창이 떴을겁니다.
-
인증을 마치면, 토큰을 생성합니다. 토큰 이름과 허가할 권한을 체크한 후에 Generate token을 클릭합니다. (repo하나만 체크하셔도 실습하는데 지장 없습니다.)
-
생성된 토큰을 복사하고 필요한 곳에 사용합니다. 이때 토큰은 한번만 보여지기 때문에 안전한 곳에 보관합니다. 우선 메모장에 복사해두세요. 발급된 토큰은 부여된 권한만 볼 수 있습니다. 재발급을 원할 경우에는 재발급하고자 하는 토큰을 클릭 후, Regenerate token을 클릭하면 토큰이 재생성 됩니다.
-
토큰 발급이 완료되면 운영체제에 맞게 적용시킵니다.
-
Windows 제어판 > 사용자 계정 > 자격 증명 관리자 > Windows 자격증명 > git
//github.com 찾기 > 편집 > 암호를 token으로 대체 -
Mac Mac OS의 경우 push 명령어를 실행할 때 여전히 같은 에러가 나타날 수 있습니다. Mac 키체인에 등록되어 있는 GitHub 권한 정보가 ID/Password로 되어 있기 때문인데요. 이럴 경우에는 GitHub의 권한 정보를 위의 발급받은 ID/Personal Access Token으로 변경해주어야 합니다. 아래의 순서에 따라 변경해보세요! 1) 키체인 접근 (Keychain Access app)
![Screen Shot 2022-02-28 at 5.38.41 PM.png](/images/github/chapter02-4/Screen_Shot_2022-02-28_at_5.38.41_PM.png) 2) GitHub.com 찾기 ![BFC0150E-BAC0-40D9-8956-238C3AECED83_4_5005_c.jpeg](/images/github/chapter02-4/BFC0150E-BAC0-40D9-8956-238C3AECED83_4_5005_c.jpeg)
![Screen Shot 2022-02-28 at 5.38.41 PM.png](/images/github/chapter02-4/Screen_Shot_2022-02-28_at_5.38.41_PM.png) 2) GitHub.com 찾기 ![BFC0150E-BAC0-40D9-8956-238C3AECED83_4_5005_c.jpeg](/images/github/chapter02-4/BFC0150E-BAC0-40D9-8956-238C3AECED83_4_5005_c.jpeg)
GitHub.com이 없으신 경우에는 빨간색 박스 버튼을 클릭 후 추가하시면 됩니다.
아래와 같이 이름과 계정 이름 추가하시면 됩니다.
- 암호보기(show password)를 클릭하여 token 암호로 대체합니다.
- 만약 아래와 같은 화면이 뜨면 MAC 비밀번호를 입력하시면 됩니다.
-
4.2.2. SSH Key 생성하기
-
ssh key를 생성합니다. GitHub 계정 생성 시 사용한 이메일과 비밀번호를 입력합니다.
$ ssh-keygen -t rsa -C "email@example.com" Enter file in which to save the key (/c/Users/paullab/.ssh/id_rsa): **Enter를 누릅니다.** Enter passphrase (empty for no passphrase): **github password** Enter same passphrase again: **github password**
$ ssh-keygen -t rsa -C "email@example.com" Enter file in which to save the key (/c/Users/paullab/.ssh/id_rsa): **Enter를 누릅니다.** Enter passphrase (empty for no passphrase): **github password** Enter same passphrase again: **github password**
-
공개키를 가져옵니다. 공개키가 출력되면 복사합니다.
$ cat ~/.ssh/id_rsa.pub
$ cat ~/.ssh/id_rsa.pub
-
GitHub 상단에 있는 개인 프로필을 클릭한 후, Settings를 클릭합니다.
-
좌측 메뉴에 SSH and GPG keys > New SSH key를 클릭하여 SSH Key 이름과 Key에 복사한 공개키를 붙여넣습니다.
-
SSH Key 공개키가 잘 등록된 것을 확인할 수 있습니다.
- 레파지토리가 이미 있다면 2번째 사항 선택
git remote add origin https://github.com/paullabkorea/githubtest.git - https://github.com/paullabkorea/githubtest.git저장소를 origin이라는 이름으로 연결 등록 git branch -M main - 현재 로컬에서 master로 되어 있는 기본 브랜치를 main으로 설정 - 기본 브랜치명 변경(git config --global init.defaultbranch main)을 해두셨으면 2번째 생략 가능 git push -u origin main - origin원격 저장소에 main 브렌치에 현재 브랜치 연결(--set-upstream(단축 : -u) )
git remote add origin https://github.com/paullabkorea/githubtest.git - https://github.com/paullabkorea/githubtest.git저장소를 origin이라는 이름으로 연결 등록 git branch -M main - 현재 로컬에서 master로 되어 있는 기본 브랜치를 main으로 설정 - 기본 브랜치명 변경(git config --global init.defaultbranch main)을 해두셨으면 2번째 생략 가능 git push -u origin main - origin원격 저장소에 main 브렌치에 현재 브랜치 연결(--set-upstream(단축 : -u) )