[ 一日30分 인생승리의 학습법] Git 사용 방법 정리(commit, push, pull request, merge 등)

Git

git 개념 및 명령어 정리

개인 개발을 넘어, 공동 개발에서 효율적인 코드 형상 관리를 하기 위함.

 

Git 영역

(1) Working Directory (Local)

    : 개인 코드 작성

(2) Staging 영역

    :​ git add 를 통해서 수정된 코드를 올리는 영역

(3) Repository

    ​ git commit 을 통해서 최종 수정본을 제출

 


Git 작업 플로우

먼저 터미널에 git을 설치합니다.

linux (Ubuntu) 기준

$ sudo apt install git-all

 

(1) 저장소(Repository) 생성

원하는 폴더 들어간 후

$ git init

 

또는 기존 github에 있는 저장소를 내 로컬로 복제할 수도 있습니다.

$ git clone (git 저장소의 URL)

 

(2) 코드 생성 (in Working directory)

이 예제에서는 README.md 라는 파일에 스트링 문자를 쓰는 코드를 만들겠습니다.

$ echo "Hello, Git!" > README.md

 

확인 >>

 
 
$ cat README.md
 
Hello, Git!

 

(3) Staging 영역에 추가

코드 수정이 완료되면 staging 영역에 추가합니다.

$ git add .

현재 디렉토리에 있는 업데이트 된 파일을 전부 스테이징 영역으로 추가합니다.

 

또는,

$ git add -A

수정된 파일 전부를 스테이징 영역에 추가합니다.

 

$ git status

로 현재 add 내역을 확인할 수 있습니다.

 

(4) Repository에 commit

$ git commit -m "feat: README.md update"

-m 은 메세지의 약자이고, 뒤에 ""안에 공유할 메시지 내용을 적어주시면 됩니다.

 

(5) 원격 저장소에 push, 업데이트 된 내용은 pull

내 local 디렉토리로 부터 원격저장소(Remote repository)로 보내기 위해서는 push 명령어를 사용합니다.

그 전에 원격 저장소와 내 로컬을 연결해야 합니다.

원격 저장소 연결 (github)

$ git remote add origin (원격 저장소 github URL)

origin은 remote repository의 이름이며, 다른 이름으로 설정해도 무방합니다.

 

push

$ git push origin master

origin이라는 원격저장소의 master 브랜치 (브랜치는 뒤에서 설명)에 푸쉬합니다.

 

최근에는 깃헙에서 메인 브랜치이름을 master가 아닌 기본으로 main 으로 해놓았습니다. (필자의 수정날짜는 2021-05-11)

따라서 브랜치를 바꾸고, 바꾼 브랜치로 push 해주시면 됩니다. (브랜치 관련 명령어는 밑에 더 나옵니다.)

 
 
$ git branch -M main
 
$ git push origin main

 

 

pull

또한 다른 사람이 원격 저장소(Remote repository)에 업데이트한 파일이 있을 때, 원격저장소와 내 로컬저장소의 상태를 동일하게 만들기 위해 pull을 이용합니다.

$ git pull

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 


그 외 알아두면 좋은 git 명령어

 

(6) 커밋 이력 확인

$ git log

 

또는

한 줄로 요약해서 보고 싶은 경우

$ git log --oneline

 

(7) 파일변경시 (Working drectory → Staging) 내역 확인 및 취소

현재 디렉토리에 README.md 가 있다는 가정하에,

이 파일에 다른 내용을 적어 업데이트하고, 무엇이 바뀌었는지 확인해봅니다.

파일 내용 변경

$ echo "update test" >> README.md

 

내용 변경 확인

 
 
$ cat README.md
 
Hello, Git!
 
update test

 

변경 내용 확인

$ git diff

 

staging 취소 (unstage)

$ git reset

또는

$ git reset --hard

working directory 까지도 변경전 상태로 되돌림 즉, 변경한 내용이 소멸되므로 주의

 

(8) commit 정리

여러개의 commit을 하나의 commit으로 정리

$ git rebase -i

직전과 금번 커밋을 하나로 정리

git commit --amend

 

 

 


Git Branch

프로젝트 진행 시, 중간에 에러가 발생한다면 이를 고쳐야합니다. 하지만 그와 동시에 지금 진행하고 있는 프로젝트에서 새로운 모듈을 개발해야 할 경우 위 두 코드는 독립적으로 수행되어야 합니다.

따라서 master (기본 브랜치) 외에 다른 브랜치가 하나더 필요합니다.

 

(9) branch 확인

$ git branch

현재 설정된 브랜치 앞에 * 가 붙습니다.

 

(10) branch 생성 및 변경

$ git branch mybranch

새로운 브랜치 mybranch를 생성했습니다.

$ git checkout mybranch

기존 브랜치(master)에서 새로운 브랜치(mybranch)로 전환합니다.

따라서 바뀐 브랜치에서 commit을 하면, 원래 브랜치에는 업데이트가 안되고, 새로운 브랜치에서만 업데이트가 됩니다.

push는 다음과 같이 진행하면 됩니다.

$ git push origin mybranch

origin이라는 원격저장소의 mybranch로 push합니다.

 


Pull Request와 Merge

commit을 한다고 최종 코드가 수정되는 것은 아닙니다.

개인이 commit을 했으면, 관리자가 이 코드를 리뷰하고 바꿀것이 있으면 수정해달라고 다시 요청해야하기 때문입니다. 그 과정을 알아봅니다.

 

1) Pull Request 발행 (Review 의뢰자)

github에 접속 후, 원격저장소에 들어가서 해당 commit의 pull request 버튼을 누르면 Reviewer에게 풀리퀘스트 메시지 전송

 

2) Review & Comment (Review 수행자)

리뷰 후 comment 할 것이 있으면 comment 버튼 클릭

 

3) Comment 대응 (Review 수행자)

local에서 코드 수정 후 원래와 같은 방식으로 commit 수행

 
 
$ git add .
 
$ git commit -m "커밋 메시지"
 
$ git push

 

4) Review 및 병합 (Review 수행자)

리뷰 후 최종 결과 만족 시 병합(merge) → github에서 pull request merge 버튼 클릭

 

[출처] https://wordbe.tistory.com/entry/Git-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95-%EC%A0%95%EB%A6%ACcommit-push-pull-request-merge-%EB%93%B1

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1111 [ 一日30分 인생승리의 학습법] KoELECTRA로 기계독해(MRC) API 개발 file 졸리운_곰 2023.01.01 7
1110 [ 一日30分 인생승리의 학습법] 일 안 해도 생기는 수입? 그런 ‘패시브 인컴’은 없다 file 졸리운_곰 2023.01.01 6
1109 [ 一日30分 인생승리의 학습법] Qemu를 이용한 가상화 기초 file 졸리운_곰 2022.12.31 5
1108 [ 一日30分 인생승리의 학습법] 파이토치로 딥러닝해야 하는 5가지 이유 졸리운_곰 2022.12.31 6
1107 [ 一日30分 인생승리의 학습법] 왜 ‘한국어’의 자연어처리(NLP)는 유독 어려울까? file 졸리운_곰 2022.12.31 10
1106 [ 一日30分 인생승리의 학습법] MinIO Windows Service 등록 졸리운_곰 2022.12.24 7
1105 [ 一日30分 인생승리의 학습법] Apache 2.2에서 2.4로 마이그레이션 시 발생하는 에러 및 해결책 정리 졸리운_곰 2022.12.18 6
» [ 一日30分 인생승리의 학습법] Git 사용 방법 정리(commit, push, pull request, merge 등) 졸리운_곰 2022.12.04 18
1103 [ 一日30分 인생승리의 학습법] [웹 기획] 화면 설계 용어 - 와이어프레임, 스토리보드, 프로토타입의 차이점 file 졸리운_곰 2022.12.03 6
1102 [ 一日30分 인생승리의 학습법] REST API 설계 (네이밍) 졸리운_곰 2022.11.26 22
1101 [ 一日30分 인생승리의 학습법] REST API URI 규칙 졸리운_곰 2022.11.26 12
1100 [ 一日30分 인생승리의 학습법 ] REST API URL 규칙 졸리운_곰 2022.11.26 9
1099 [ 一日30分 인생승리의 학습법 ] prolog 문법 : Prolog Syntax 졸리운_곰 2022.11.21 3
1098 [ 一日30分 인생승리의 학습법 ] noVNC 작동원리 file 졸리운_곰 2022.11.16 6
1097 [ 一日30分 인생승리의 학습법 ] 프로젝트 만들고 GitHub에 첫 Commit하고 Push하기 file 졸리운_곰 2022.11.15 4
1096 [ 一日30分 인생승리의 학습법 ] 우분투(리눅스) 에서 EBS 라디오 자동녹음 만들기 졸리운_곰 2022.11.11 9
1095 [ 一日30分 인생승리의 학습법 ] EBS FM 라디오, rtmp 서비스 중단 졸리운_곰 2022.11.11 9
1094 [ 一日30分 인생승리의 학습법 ] 악보 읽는 방법 file 졸리운_곰 2022.11.08 12
1093 [ 一日30分 인생승리의 학습법 ] 13가지 주요 오픈소스 프로젝트 file 졸리운_곰 2022.10.09 15
1092 [ 一日30分 인생승리의 학습법 ] 극상의 학습 난이도로 입문자 울리는 프로그래밍 언어 Top 10 졸리운_곰 2022.09.03 15
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED