It's Ward

[Git Hub] - Git 설치방법 및 Git hub 연동(2) 본문

기타/Git Hub

[Git Hub] - Git 설치방법 및 Git hub 연동(2)

I'm ward 2022. 5. 26. 02:44

layout: post
title: "Git 기본 사용방법 - Git Getting started"
date: 2022-05-03 22:47:08 +0900
categories: git


3. GitHub 사용 방법

 

3.1 GitHub 연동 -SSH키 만들기

 

우리는 지금까지 Git을 설치하고, 간단하게 버전관리하는 방법을 알아봤습니다.

이번에는 다양한 협업 기능을 제공하는 GitHub를 연동하여 사용하는 방법에 대해 알아보겠습니다.


GitHub를 사용하려면 **SSH 키** 를 먼저 등록해야 합니다.

SSH 키란? 안전한 셸(Secure SHell) 로 CLI(Command Line Interface)에서 다른 PC 혹은 서버에 연결하기 위한 인증 방법입니다.
사용자, 패스워드 등 다양한 인증방법을 지원하지만, 편리성, 안정성 면에서 추천하는 방법은 공개키 인증 방식 입니다.
공개키 인증 방식을 사용하려면 공개키와 개인키를 한 쌍을 만들어 공개키를 서버에 미리 등록해두면, 사용자는 개인키를 통해 SSH에 접속하고 공개키에 일치하는 부분이 있으면 인증에 성공하여 서버에 접속되는 방식입니다.

 

ssh-keygen


명령어를 이용해 ssh key를 생성합니다.

먼저 저장할 위치를 물어봅니다. `Generating public/private rsa key pair. Enter file in which to save the key (/c/Users/유저이름/.ssh/id_rsa):`
기본값을 사용하기위해 그냥 Enter키를 눌러 다음으로 넘어갑니다.

다음으로는 SSH 추가 Password를 지정할 것인지 물어봅니다. 추가 패스워드는 나중에 지정할 수 있으므로 우선 Enter를 두 번 눌러 키를 생성합니다.합니다.


image






생성된 ssh키는
개인키(Private Key) id_rsa
공개키(Secret Key) id_rsa.pub 두개를 생성합니다.

개인키(Private Key)절대 외부에 공개되면 안되는 키입니다.
생성된 키 중 공개키(Secret Key)를 복사하여 자신의 GitHub에 등록합니다.

 

cat ~/.ssh/id_rsa.pub

image






화면에 출력된 키(ssh-rsa ~~ 컴퓨터 이름)를 마우스로 드래그하여 복사합니다.


복사하는 방법은 다음과 같습니다.

  1. 마우스 우클릭 - 복사(Copy)
  2. 키보드 복사
    > _(windows CMD 또는 터미널 등) Ctrl+C
    > _(git bash) Ctrl+Insert
    > *(MacOS) Command+C

메모장에 붙여넣기하여 복사가 잘 되었는 지 확인후, github에 공개키를 등록합니다.




3.2 GitHub 연동 - 공개키를 GitHub 계정에 등록하기



Git Hub로 이동해 SSH Key를 등록합니다.

image




Title에는 사용자 임의로 제목을 입력합니다.

Key에는 이전에 복사한 공개키(Secret Key) 를 붙혀넣기 한 후 Add SSH key를 눌러 등록합니다.

image





정상적으로 등록된 경우 아래 사진처럼 추가됩니다.

image

SSH 키가 정상적으로 등록되었는 지 확인하기 위해 원격 저장소(Remote Repository)에서 자신의 로컬 저장소(Local Repository)로 복제가된다면, 정상적으로 연결이 된겁니다.

원격 저장소 복제(Clone)하기

원격 저장소 복제(Clone) 혹은 공개키를 GitHub 계정에 등록하기를 실패했을경우, SSH키를 계정에 등록하였는데도 안되는경우를 클릭하여 확인해보세요.



3.3 GitHub 에서 원격 저장소(Remote Repository) 만들기



Github는 원격에서 Git 저장소(Repository) 를 호스팅 해주는 서비스입니다. GitHub에서는 GUI환경의 웹에서 원격 저장소(Remote Repository) 를 간단하게 생성하고 관리할 수 있습니다.

GitHub를 맨처음 로그인 하게되면 다음과 같은 웹페이지가 나옵니다.


image






원격 저장소(Remote Repository) 를 만들기위해


  1. GitHub에 로그인되어있다면 여기를 클릭하세요.
  2. 혹은 GitHub 메인 홈페이지의 New를 누릅니다.

    사용할 **원격 저장소의 이름(Repository name)** 을 입력합니다.

개발 언어 혹은 환경마다 통상적으로 사용하는 규칙 혹은 스타일이 있습니다.
>여기에 자세하게 나와있으며

stack overflow 답변을 참조하세요.

image





해당 저장소(Repository) 의 간단한 설명을 입력합니다.

image

공개 여부를 선택합니다.

Public : 전체 공개

Private : 선택적 공개

image



저장소(Repository) 초기화 입니다. 모두 선택 후 Create repository를 눌러 저장소를 새로 제작합니다.

Add a README file : 해당 저장소(Repository) 에 대한 자세한 설명이나 사용 방법에 대해 서술하는 파일을 만듭니다.

Add .gitignore : 지정한 확장자 파일을 무시합니다. (Git 버전 관리에서 제외할 파일 목록을 지정하는 파일 지정)

Choose a license : 라이센스를 선택합니다. (자세한 내용은 여기를 확인하세요)



image



3.4 GitHub 원격 저장소(Remote Repository) 복제(Clone)하기



clone 명령어는 원격 저장소(Remote Repository) 에 있는 소스코드나 프로젝트들을 복사하여 로컬 저장소(Local Repository) 로 가지고오고 싶을 때(복제), 사용하는 명령어 입니다.



먼저 복제(Clone) 하려는 원격 저장소(Remote Repository) 에 접속합니다.



저는 여러분들이 지금 읽고 있는 이 저장소(Repository)[https://github.com/ItsWard/GitHub-getting-started] 를 이용해 예제를 들겠습니다.




Git과 GitHub가 어떤 방식으로 연결되었는지(SSH 인증방식/HTTP 인증방식)에 따라 해당 하는 인증방식을 선택 후 주소를 복사하여 git clone명령어를 입력합니다.

image



SSH 인증방식의 경우

 

git clone git@github.com:ItsWard/GitHub-getting-started.



HTTPS 인증방식의 경우

 

git clone https://github.com/ItsWard/GitHub-getting-started.git



git bash 붙혀넣기
Shift + Insert



image




사용자가 등록한 SSH키와 복사하려는 저장소(Remote Repository) 의 이름이 다른경우

This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])? 와 같이 나오게되는데, yes를 입력합니다.

image






정상적으로 복제가 완료되었다면 ls 명령어를 이용해 확인이 가능합니다.

image

혹은 해당 폴더에 들어가면 저장소(Repository) 가 복제 되어있는 것을 볼 수 있습니다.

image



3.5 GitHub 원격 저장소(Remote Repository)에 push 하기

 

push로컬 저장소(Local Repository)commit되어있는 파일을 원격 저장소(Remote Repository) 에 업로드하는것으로 이해해주시면 편합니다.


push 전 알고 넘어가야 할 용어에 대해 소개합니다.

origin : 원격 저장소(Remote Repository) 의 단축이름

Git에서 해당 저장소(Repository) 인 GitHub-getting-started 대신 origin으로 사용가능

ex) git push origin main = git push GitHub-getting-started main

한번이라도 init하거나 clone하는경우 자동으로 origin에 원격 저장소(Remote Repository) 의 이름이 저장된다고 생각하면 됩니다.



우리는 2.6 Git 맛보기 에서 로컬 저장소(Local Repository)commit 하는 것 까지 진행했습니다.
pushcommit로컬 저장소(Local Repository)원격 저장소(Remote Repository) 에 업데이트해 주는 기능입니다.



준비사항 : 로컬 저장소, 원격 저장소



간단한 테스트를 위해


임의의 작업공간(Work Space) 에 README.md 파일을 하나 제작하였습니다.

README.md 파일은 .txt 파일을 하나 만들고, 확장자를 .md로 변경하였습니다.

작업공간(Work Space) 폴더 명 : be-simple-git-push-test
테스트 파일 : README.md



image

README.md 파일을 텍스트 뷰어로 열어, 다음과 같이 수정한 후 저장합니다.

 

image

해당 폴더에서 마우스 우클릭 - Git Bash Here 을 클릭해 Git Bash창을 하나 열어주세요.


image

먼저 해당 작업공간(Work Space)로컬 저장소(Local Repository) 로 만들기 위해 git init를 입력합니다.

 

git init

정상적으로 init가 진행되었다면 .git 폴더가 생성된 것을 확인 할 수 있습니다.



image

commit을 위해 README.md 파일을 add 해주세요.

(조금 어려운 내용이지만, addcommit을 하기위해 untracking 상태의 파일을 staging area로 올리는것을 말합니다. 아직 이해하지 않으셔도 괜찮습니다.)

 

git add README.md

 

image

정상적으로 파일이 add되었는 지 확인하기 위해 git status 명령어를 이용해 확인합니다.

git status

 

아래 사진과 같이 Changes to be committed: (use "git rm --cached <file>..." to unstage) new file: README.md

나와있다면 정상적으로 add되어있는 상태입니다.

image

해당 내용을 commit 합니다.

git commit -m "test ver1"

image

git log를 통해 정상적으로 저장되어있음을 확인할 수 있습니다.

git log

image



이제 GitHub 저장소(Repository) 에 해당 프로젝트를 push 해보겠습니다.


먼저 GitHub에서 원격 저장소(Remote Repository) 를 생성합니다. GitHub저장소 생성방법


저장소(Repository) 주소는 다음과 같이 설정합니다. https://github.com/<GitHub유저이름>/<프로젝트이름>.git

저의 GitHub 유저이름은 ItsWard이고, 작업공간 이름이 be-simple-git-push-test 이므로 https://github.com/ItsWard/be-simple-git-push-test.git으로 제작하겠습니다.

image

생성한 저장소(Repository) 의 자신의 인증방법에 맞는 주소를 복사합니다.

 

HTTPS

image

 

git remote add origin <HTTPS/SSH 주소>

 

image

정상적으로 origin 설정이 되었는지 확인합니다. 설정이 정상적으로 나온다면, push 명령어를 통해 원격 저장소(Remote Repository) 를 생성하고, 프로젝트를 저장합니다.

git push origin main

image



git remote -v

GitHub 원격 저장소(Remote Repository) 를 새로고침해 정상적으로 push되었는 지 확인합니다.

image



3.6 GitHub 원격 저장소(Remote Repository)에서 pull 하기



git pull 명령어는 원격 저장소(Remote Repository) 에 있는 프로젝트 내용을 가져와 현재 로컬 저장소(Local Repository) 와 병합하는 역할을 합니다.

git clone원격 저장소(Remote Repository) 에 있는 내용을 그대로 가져와 붙혀넣기되어 기존 작업물들이 사라져 직접 복구해야하는 반면, git pull은 기존 작업물은 유지되면서 최신 코드로 업데이트가 가능합니다.


다른사람이 가져오려는 GitHub의 코드를 업데이트 하거나 GitHub를 통해 직접 Commit 했을 경우, 내용을 클라이언트로 내려받을 때 유용하게 사용됩니다.


테스트환경을 만들기 위해 3.5 GitHub 원격 저장소(Remote Repository)에 push 하기 에서 사용했었던 저장소(Repository) 내의 README.md 파일을 수정한 후 커밋해보겠습니다.


README.md 우측의 연필모양을 눌러 파일을 수정합니다.

image


다음과 같이 PULL 테스트 입니다라고 작성한 후, 메모는 test ver2로 입력 후 ```commit``` 합니다.

image




image



 

해당하는 로컬 저장소(Local Repository) 로 이동하여 마우스 우클릭 - Git Bash Here 을 클릭해 Git Bash창을 하나 열어주세요.

image



git pull 명령어를 통해 로컬 저장소(Local Repository) 에 변경사항을 추가하여 병합합니다.

git pull origin main

image

내용이 추가된것을 확인 할 수 있습니다.

image



3.7 GitHub 게시물 가져오기(Fork)



Fork원격 저장소(Remote Repository) 에 있는 소스코드나 프로젝트들을 복사하여 내 GitHub의 원격 저장소(Remote Repository) 로 복제하고 싶을 때, 사용하는 기능입니다.



SSH키를 계정에 등록하였는데도 안되는경우



(공통)SSH키 재설정

 

  1. Github - Settings - SSH keys 에 등록한 공개키 삭제합니다.
  2. 프롬프트에 cat ~/.ssh/id_rsa.pub 명령어를 입력하여 나타나는 공개키를 다시 복사합니다.
  3. Github - Settings - SSH keys 에서 New SSH key 버튼 클릭합니다.
  4. Title을 입력하고, 복사한 공개키를 Key에 붙여 넣고 Enter 키를 입력해 한 줄을 추가(개행)
  5. Add SSH key 버튼을 클릭하고, 승인하여 공개키를 등록



GitHub CLI 설치(Windows) - HTTPS 인증



여기에서 github cli를 다운로드합니다.

image



다음과 같이 설치합니다.

image

 

image

 

image

gh --version명령어를 입력했을 때 다음과 같이 버전이 확인되면 정상적으로 설치된 것입니다.


gh --version

image

winpty gh auth login 명령어를 입력해 로그인을 시도합니다.


winpty gh auth login



macOS 환경

brew install gh 명령어를 이용해 GitHub CLI를 설치합니다.

brew install gh

gh --version명령어를 입력했을 때 다음과 같이 버전이 확인되면 정상적으로 설치된 것입니다.

gh --version

gh auth login 명령어를 입력해 로그인을 시도합니다.

gh auth login



Git CLI을 이용한 인증과정 진행



방향키와 Enter를 이용하여 git Bash 혹은 터미널 창에서 선택할 수 있습니다.

? What account do you want to log into? -> GitHub.com을 선택합니다.

image

SSH로 인증을 실패하였으므로 HTTPS를 선택해 인증을 진행합니다.

? What is your preferred protocol for Git operations? -> HTTPS

 

image

Git허브 인증으로 Git을 인증할건지를 선택합니다.

? Authenticate Git with your GitHub credentials? -> Y

 

image

GitHub 로그인 방법을 선택합니다.

? How would you like to authenticate GitHub CLI?->Login with a web browser

image

Enter를 누르지 말고 ! First copy your one-time code를 미리 메모장에 복사해 둡니다. 이후 Enter를 누르면 GitHub 인증코드 입력 페이지가 나옵니다.

 

image

 

image

Authorize GitHub 를 클릭하여 Git과 GitHub를 연동합니다.

image

연동이 완료되었으면 Git과 GitHub에서 연결완료가 되었다고 나옵니다.

image



image

 

 

image

ls 명령어로 정상적으로 복제(clone) 한 것을 확인할 수 있고

image

혹은 폴더에서 정상적으로 복제(clone) 한 것을 확인할 수 있습니다.

image



Git 기본 브랜치 master 에서 main으로 변경하기



위에서 언급한 내용이지만, 설치 시 Git Repository 설정을 master로 한 경우 main으로 변경할 수 있는 방법을 공유드립니다.

git init를 진행하면 해당 폴더가 자동으로 master 로 지정이 되나, 2020 10월 이후로 국제사회에서 master/slave, blacklist/whitelist 등 변경하는 운동이 많아짐에 따라 GitHub에서는 mastermain으로 변경되었습니다. 자세한 내용은 여기를 참조하세요.

Local만 사용할 경우 문제가 없지만, GitHub를 연동 하는 경우 우리가 사용하는 Branch도 main으로 변경하여야지만 정상적으로 GitHub에 업로드가 가능합니다.

git config --global init.defaultBranch main

 

해당 설정 이후 init 혹은 clone으로 생성된 브랜치는 main으로 변경됩니다.

다만 이전 master로 되어있는 브랜치는 수동으로 main 으로 변경 하여야 합니다.

git branch -M main



번외1. 기타 사이트 모음

Git Tip모음 - Integerous님 GitHub

GitHub Wiki TOC generator

GitHub 이모티콘 모음

마크다운 markdown 작성법

Git 이름 스타일 가이드

매력적인 깃허브 프로필을 만들어보아요

InteliJ 깃허브 연결

좋은 git 커밋 메시지를 작성하기 위한 7가지 약속


Truble Shooting

가입 시 이메일 주소를 잘못 입력하였을 경우

만약 가입할 때, 이메일 주소를 잘못 입력하였을 경우, 이메일 인증 과정을 진행 할 수 없습니다. 이 경우 Update your email address에 클릭합니다.

image

Add email address에 해당 이메일을 다시 입력한 후 Unverified - Resend Verification email을 클릭하여 인증을 다시 진행해주세요.

이후 잘못된 이메일은 우측 상단 쓰레기통 메뉴를 눌러 제거합니다.

imageimage



Reference

코드스테이츠
🎥Git으로 시작하는 협업 및 오픈소스 프로젝트 - 동빈나님

어떻게 깃을 사용하는지 빠르게 알아봅시다.

깃허브(GitHub)란? - 서스포PAR_개발블로그

GITHUB입문 Git 설치하기 - 코딩의행복블로그

Git허브 브랜치 - 베르의 게임 개발 유튜브

[Windows 10] Git 최신 버전 설치 및 사용 방법 - LainyZine: 프로그래머 가이드

GitHub Git 브랜치의 종류 및 사용법 (5가지) -HeeJeong Kwon님의 블로그

누구나 쉽게 이해할 수 있는 Git 입문

Comments