본문 바로가기

STUDY/GitHub

Github_guide

​Github 준비하기 

 출처- 국방부오픈소스아카데미 

-Git에 관한 강의를 듣고 작성한 내용입니다.-


강사: 미래창조과학부KOSS

송태웅 ( https://github.com/taeung )




​Git이란? 

git == history 관리하는도구


즉 개발과정, 소스파일 등을 관리하는 도구입니다.

History가 관리가 되어 개발되어온 과정, 역사를 볼 수 있고, 특정시점으로 복구가 가능합니다.


(history 관리 기능- 이전 코드와 차이가 무엇이고 수정이유를 LOG를 남길 수 있다.)



그럼 Git을 시작해 볼까요?


git을 시작하기 앞서 미리 다운받고 해야 할 일들이 있습니다.


1.Git 설치하기

https://git-scm.com/downloads


2. Editor 다운받기

https://atom.io/

(에디터는 SublimeText도 괜찮아요!)


3.Github 회원가입

https://github.com/join

 <Git 필수 명령>



1.add커밋할 목록에 추가
  -git add *   → (모든 파일을 목록에 추가)

2.commit: 커밋(히스토리의 한단위) 만들기

(이 두과정은 컴퓨터 사이에서 벌어지는 일)

                                      -git commit -m "깃헙에표시될이름"

3.push: 현재까지 역사(commits)Github에 밀어넣기

(인터넷이 있어야 하고 커밋한 목록을 서버에 저장하는 과정)

                                      -git push -u origin master → (깃헙 자신의 프로젝트에 업로드)

4.mkdir (폴더이름) : 폴더 만들기

5.cd ~경로이동
  -cd.. 상위폴더로 이동 

6.init해당폴더를 git 초기화

7.status상태확인하기

8.shortlog: 지금까지 commit들을 확인하기



​Github 실습

명령어 | 파일이름


​▶1일차

1.미리 캐치저장되어 있을지 모를 계정정보 삭제(처음 설치시 생략가능)

# git config --global --unset credential.helper 

# git config --system --unset credential.helper 


2.나의 Github 계정 이메일 과 이름을 캐치

# git config user.email "00ghks22@naver.com"

# git config user.name "김영환"


3.git-bash 또는 터미널 실행하고 HOME 경로(~)로 이동

# cd ~


4.report-card(다른 이름도 OK)폴더 만들고 window 폴더탐색기로 열어두기

mkdir report_card


5.경로이동 (pwd 명령어로 현재경로 확인하기)

cd report_card


6.해당폴더를 git 초기화 (is-A명령어 생성된 .git 숨김폴더 확인하기)

# git init


7.프로그램 pdf파일추가 (커밋할 목록에 추가add)

# git add report_card.pdf


8.commit 하기 (역사 한단위 만들기)

[이때 커밋할 파일을 미리 생성해둔 report_card 폴더로 옴기기!]

# git commit -m "report_card: Add question PDF"

Add question PDF → 일종의 파일 설명 


9.상태 확인하기

# git status


10.지금까지 commit들을 확인하기

git shortlog


​▶2일차

1.진행중인 코딩 파일을 변경후 report_card에 덮어쓰기 후 차이를 확인

# git diff


2.diff 로 변화분을 확인했다면 add를 진행

# git add report_card.c  //c프로그래밍 소스파일로 가정


3.서명과 함께 commit 하기 (-s 옵션으로 서명을 포함한다.)

# git commit -sm "report card: show the sum of each grade"

(*서명의 의미는 본 오픈소스의 라이센스를 제대로 이해하고 작성한commit이라는 확인서명)


4.Github 원격저장소 URL을 등록하자.

지금까지 한것은 commit만 진행했다. commit은 로컬상에서만 저장되기 때문에

push로 원격으로 서버에 저장하기 위해서는 원격저장소 URL 등록이 필수이다.


1)Github 사이트에 접속하여 로그인 후 오른쪽 상단에 +를 클릭

2)New repository 를 클릭하여 본인이 원하는 프로젝트명 설정 

3)화면 하단에 create repository를 클릭하여 새로운 원격 저장소 생성

4)새로운 원격 저장소에서 제공해주는 URL을 복사 (임의로A 칭함)


5.아까 복사해둔 URL(=임의로 A)로 Github 원격저장소에 등록

# git remote add origin A(URL주소)


6.Github 원격저장소 (origin)에다가 밀어넣기.

# git push origin master 


7.Github 웹페이지 열고 확인하기.

본인이 추가한 commit들이 나오는지 확인하기!


8.실수 마지막 커밋한 파일에 수정해야하는일이 생기면!


1)우선 파일은 수정후 report_card 폴더안에서 덮어씌워준다.
2)diff를 통해서 변화분을 확인해준다.
3)가장 위에 있는 commit을 수정해준다.
#git commit --amend
→ 이 명령어를 치면 
* vi 에디터 또는 지정된 에디터 ( 메모장 등 ) 이 열릴수있다 . Commit 메시지를 수정하거나 수정없이 에디터를 닫으면 완료 
* vi 에디터는 i 또는 a 키를 눌러 수정모드로 변경하여 수정 후 ESC 키 누르고 :wq 명령어를 입력하여 Enter 눌러 나올 수 있다 .
4) 바뀐내용을 바로 push를 해보자( 충돌 오류발생 )
# git push origin master
5) 강제로 push 해서 수정하자 (--force 쪼는 -f 옵션 사용가능) 
# git push origin master --force (or -f)

* 4) 의 충돌이유는 Local( 본인 노트북 ,PC) 에 기록된 commit 들과 Github 에 먼저 push 하여 저장된 commit 들의 commit ID 가 일치하지 않는부분이 있기 때문이다 .
* 물론 모든 commit ID 가 일치한상태에서 Local 에만 새로운 추 가 commit 있을때는 push 가능

7.reset으로 add한거를 취소해보자.
# git reset 
8.reset으로 가장 최근 commit을 지워보자.
# git reset HEAD~1

만약 잘못된 커밋이 웹상에 올라갔다면?
* Github 웹상에 있는 commit 을 수정할 길은 Local 에서 수정후 -f 옵션으로 강제push 하는방법뿐이다 .

​▶3일차

 Pull-request 한다는 의미?

다른프로젝트에 내가 만든 commit을 제출한다는 의미(실제 전송단위는 branch)


상대방 프로젝트를 fork( 복사 ) 해서 

내 계정에서 관리되는 프로젝트로 새롭게 만들어두고


그 fork 한 github 프로젝트를 토대로 

새로운 commit 내용들을 pull-request제출 할 수 있다.


1.최초경로 HOME 경로로 이동하자.(report-card 작업하던 폴더에서 벗어나기)

cd ~


2.clone 으로 fork한 repo 받아오기( '<', '>' 는 생략하고 적는다)

git clone <아까 fork한 repo에서 복사한 URL>


3.Pull-request 작업할 브랜치 (develope) 따로 만들기

git checkout -b develope

*-b 는 브랜치 


4.Pull_request_test 폴더로 이동

cd pull_request_test   


5.내 이름으로된  (younghwan) 폴더 만들고

mkdir younghwan; cd younghwan


6.내이름으로된 폴더에 작업하던 소스파일이나 아무파일 집어넣기

(윈도우 폴더 탐색기 이용)


7.추가한 폴더 통째로 add( '<', '>' 는 생략하고 적는다)

# git add <나의소스작업폴더>


8.준비된 파일들 commit

# git commit -sm "test pull request"


9.내가 fork한 repo의 develope 브랜치로 push (주의:master 아님)

# git push origin develope


10.Github홈페이지 나의 프로필에서 fork해서 만들어진 프로젝트 페이지로 이동

10-1)방금 push 했던 브랜치를 확인하기 위해서 Branch 탭 클릭

10-2)pull request 하려는 브랜치에서 New pull-request 버튼을 클릭

10-3)본래프로젝트 주인 웹페이지에서 만들어지 pull-request 확인하기


merge로 2개 브런치 합치기


1.방금작업한 develope 브랜치가 현재 브랜치인지 확인하기 (status로도 확인가능)

# git branch


2.추가 브랜치 만들기.

# git checkout -b test 


3.touch로 빈파일하나 만들어서 commit만들어보기.

touch test; git add test; git commit -sm "test"


4.현재브랜치(develope)을 기준으로 추가 브런치(test)를 합치기

git checkout develop; git statusgit merge test

*이때 어디서 어디로 합쳐지는건가?

 현재브랜치 기준으로 merge 명령어 뒤에 오는 브런치가 합쳐짐


​▶4일차