새소식

Study/Git

git, github 기초(1)

  • -

GIT 깃이란?

- 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템

- 한마디로 코드를 효율적으로 관리하기 위한 버전 관리 시스템!

날짜 별로 언제 어떤 파일이 어떻게 바뀌었는지 확인 가능

> 이렇게 특정 시점에 생성된 백업 복사본을 스냅샷(Snapshot)이라 하고

> 이 스냅샷을 만들어 주는 작업을 커밋(Commit)이라고 한다.

 


 

Git과 Github

- Git은 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템

- Github는 git repository를 관리할 수 있는 클라우드 기반 서비스 

git으로 관리하는 폴더를 github에서 사람들과 공유하는 것 > 개발자들의 SNS라고 할 수 있다.

 

Git Repository

- 저장소

- Remote repository : 원격 온라인 서버 상의 저장소, 여러 사람이 함께 공유 가능.

- Local repository : 내 컴퓨터 저장소, 개인 전용 저장소.


 

Git, Github 사용 방법

* 처음 시작할때

- git을 설치하면 먼저 사용자 이름과 이메일 주소를 설정, 설정에 기록된 이름과 메일을 앞으로 git commit 내역에 기록.

git config --global user.name "내 사용자 이름"
git config --global user.email "내 이메일 주소"

--global 옵션으로 설정하면 사용자 홈에 저장되므로 git을 설정할 때 처음에 딱 한 번만 입력하면 됨.

github의 사용자 이름이나 이메일을 변경한다면 이 명령어를 다시 입력해야 함.

여러 프로젝트를 진행 중이라 프로젝트마다 다른 이름과 메일을 사용하고 싶다면 --global 옵션을 빼고 명령 실행할 수 있다.

 

에디터

git에서 커밋 메세지를 기록할 때, 특히 merge commit 확인 메세지가 나올 때 텍스트 에디터가 열린다.

기본값으로 vi가 열리는데 vi에 익숙하지 않다면 nano로 변경하는 것이 좋다.

git config --global core.editer nano

 

SSH 등록

HTTPS로 git을 사용할 땐 토큰을 발행하여 접속해야 한다. (꼭 알아햐 하는 내용이지만 지금 적용하기엔 너무 번거롭기에 나중에 상세히!)

ssh (Secure shell) - 보안이 강화된 shell 접속을 뜻한다.

CLI 환경(터미널)에서 다른 PC에 접속하거나 요청할 때 사용, 비대칭키를 이용해 사용자를 인증한다.

 

- github에 ssh 공개키(비대칭키 중 하나)를 등록하는 방법

ssh 키는 비대칭키로 구성되며, 두 개의 키가 서로 대칭이 되지 않는 형태로 존재한다.

ssh-keygen

프롬프트에 위 명령어 입력 후 ssh키 페어 생성하기! 엔터 키 몇 번 입력하면 생성됨

~/.ssh/에 id_rsa와 id_rsa.pub 두 파일을 생성, 이 두 파일은 ssh키 페어라고 하며

이중 id_rsa.pub은 누구에게나 공개해도 되는 공개키(Public Key)라고 한다

id_rsa는 공개되면 안되고 나만 보관하고 있어야 하는 키로 개인키(Private Key)또는 비밀키(Secret Key)라고 한다

 

- 공개키(Public Key) 복사

cat ~/.ssh/id_rsa.pub

ssh id_rsa.pub 공개키

입력해서 나오는 키 전체 복사

github -> settings -> SSH Keys에서 New SSH key 클릭

Title 입력, 복사한 공개키 붙여넣고 Enter ->

Add SSH key 버튼 클릭 ->  승인하여 공개키 등록!

 

 

 

 


 

코드스테이츠 자료

Github의 workflow

- fork

포크로 찍어서 가져온다 생각하면 됨.

원하는 대상의 repository에서 내 repository로 fork 해오면 내 remote repository에 복사가 된다

 

- clone

remote repository에 있는 걸 내 local repository로 가져온다, 복사해온다, 클론을 만든다

한마디로 github에 있는 파일을 내 컴퓨터로 복사해오는 것

git clone 레포지토리주소

 

- init

기존 디렉토리를 Git Repository로 변환 -> 내 컴퓨터에 있던 폴더를 git repository로 바꾸는 것

git init

 

- remote add origin

나의 remote repository에 연결

git remote add origin 레포지토리주소

 

- status

내 로컬로 복사해 온 디렉토리의 commit이 되기 전까지의 상태

터미널을 잘 읽어보자 어떤 파일을 add 할건지, restore할 건지

git status

 

- restore

commit 혹은 staged 되지 않은 변경 사항을 폐기

작성했던 코드들을 보니 이전에 저장했던(commit했던) 버전이 더 나아서 싹 다 밀어 버리고 다시 할 때

git restore 파일명

 

- add

Untracked files를 Staging area로 추가해서 gitd의 관리하에 둠

commit 하기 위해서는 add로 staging area로 옮겨줘야한다. add를 했을 때 터미널에 변화가 없다

git add 파일명    >> 하나의 파일만 추가
git add .       >> 모든 파일을 한 번에 추가

 

- commit

수정 작업이 끝났을 때 변경 사항을 저장

git commit
git commit -m '남길 메세지'

커밋 메세지를 작성하기 위한 기준이 있음 

https://chris.beams.io/posts/git-commit/

 

How to Write a Git Commit Message

Commit messages matter. Here's how to write them well.

cbea.ms

 

코드스테이츠의 이미지 자료

 

- reset

local 에서 commit한 내용을 취소할 때(remote에 push하진 않았을 때)

git reset HEAD^

추가로 hard와 soft 옵션도 있다 나중에 정리하기...

 

- push

local에서 변경, commit 된 사항을 remote repository에 업로드!

git push origin master

origin에는 pair가 들어갈 수도 있고 master에는 다른 branch이름이 들어갈 수 있지만

따로 설정을 안해놓았다면 origin master 일 것...

 

- pull

remote repository의 작업 내용 가져오기

git pull shortname branch

예) 페어의 리모트에서 가져올거면 git pull pair master

 

- log

현재까지 commit 된 내역들을 터미널 창에서 확인

git log

 

- Pull Request

내가 push 한 변경 사항에 대해서 다른 사람들에게 알리는 것 


실제로 git을 이용할 때

1. 다른 사람, 다른 프로젝트를 가져와서(fork)해서 쓸 때

   1) 해당 repository 클릭 > 오른쪽 상단의 fork 클릭

 

   2) 그럼 내 repository로 가져와짐, local repository 로 가져오게 터미널에서 git clone 주소(한마디로 내 pc로 다운로드 받는 것)

git clone 주소복붙

 

  3) local repository(내 pc)에서 작업 후 push > remote repository 로 보내짐

  4) 반영해달라 할거면 pull requests

 

2. 나 혼자 만들어서 내 개인 repository로 올릴 때

1) 내 remote repository(git repository)로 옮길 로컬 폴더에서 git init 

2) git remote add origin 레포지토리주소

3) 수정하고 git status 확인

4) commit 할 파일들 git add . 아니면 git add 파일명

5) git commit -m '메세지'

6) git push origin 브런치이름 (기본은 git push origin master)

 

 

3. 페어와 함께 작업할 때

1) git remote add pair 페어레포지토리주소 

페어와 리모트 연결!

 

2) git remote -v

현재의 로컬 레포와 연결된 모든 리모트 레포 목록 확인!

 

3) git pull pair master

페어의 리모트 레포지토리에서 내용을 가져올 때

 

4) git push origin master

페어에게 내가 작업한 파일을 넘길 때도 꼭 내 레포지토리로 push 해야됨!!!!!!!!!

같은 부분을 수정하면 충돌이 일어남 > 다음에 정리하기

Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.