본문 바로가기

Programing/Linux

[완료] 효율적인 개발을 위한 github 사용법 마스터

Git 이란 소스스크립트를 효과적으로 관리하기 위해 개발된 '분산버전 관리 시스템'이다.

Linux 소스코드를 관리하는 목적으로 개발되었지만, 최근은 여러 개발자들이 누군가 필요할 법한 코드를 공유하고 같이 개발하는데 활용되고 있다. 

[Summary] 

#1. 설치 및 설정

#2. 저장소(Repository) git 생성

#3. 파일 커밋리스트에 추가 & 커밋

#4. 코드 병합

#5. Github push 업로드

#6. 주의사항

 



[Summary] 요약본으로도 기본적인 github 활용 가능

1. 브랜치 생성 및 전환

   $ git checkout -b [branch name]  = $ git branch [branch name] + $ git checkout [branch name]

2. 코드 수정

3. 변경된 파일 확인

  $ git status

4. 변경된 코드 파일을 커밋 리스트에 추가

  $ git add [file name]   // git status 상의 변경파일 모두 add :  $ git add .

5. 커밋생성 

  $ git commit -m "커밋 설명 작성"

6. 마스터 브랜치로 이동

  $ git checkout mastser 

7. 작업한 branch를 master 에 병합

 $ git merge [branch name]

8. github 업로드

 $ git push > 로그인필요



#1. 설치 및 설정


# 1-1. Git 설치

Linux OS: $ sudo apt-get install git

Windows OS : $ pip install git

※ 버전확인 : $ git --version

 

# 1-2. Git 설정

$ git config --global user.name "[사용자명]"

$ git config --global user.email "[메일주소]"  

$ git config --global color.ui auto : 출력 메세지 색상설정

$ git config --global alias.co checkout : alias(단축키)설정 'checkout'을 'co'로 단축사용

 


#2. 저장소(Repository) git 생성 


Github에 repository 묶음으로 저장되는 폴더단위를 git이라 부른다.

# 2-1. 로컬에 경로를 생성하고 github으로 업로드 할 수도 있고,  

$ mkdir tutorial : 경로(폴더) 생성

$ cd tutorial : 해당 폴더 진입

$ git init : 해당경로를 git 저장소로 설정

>> Initialized empty Git repository in C:/code/tutorial/.git/


# 2-2. github에서 repository를 생성한 후 로컬로 다운할 수도 있다.

 $ git clone [github address]




#3. 파일 커밋리스트에 추가 & 커밋

 

# 3-1. 현재 코드 변동사항 조회

$ git status 

>> On branch master : master branch 사용중
     No commits yet : 커밋이력 아직 없음
     nothing to commit (create/copy files and use "git add" to track) : 커밋예정인 사항도 없음

 

# 3-2. commit 준비 - index 등록

$ git add [파일명]  # 해당 파일을 commit 묶음 리스트에 추가 ※

$ git add .            # git status 에 조회되는 모든 파일 인덱스에 추가

>> On branch master
     No commits yet
     Changes to be committed:
       (use "git rm --cached ..." to unstage)
        new file:   README.md
        new file:   command.txt
        new file:   command4github.txt

# 3-3. commit 진행

$ git commit -m "[해당 업로드의 주요내용]" 

[master (root-commit) b08b8c5] first commit 

 3 files changed, 147 insertions(+)
 create mode 100644 README.md
 create mode 100644 command.txt
 create mode 100644 command4github.txt

 

 # 3-4. commit 확인

$ git status
>> On branch master
     nothing to commit, working tree clean

→ commit 하려고 index 등록해뒀던 파일들이 사라짐 == commit 완료


# 3-5. Commit 이력확인, 커밋정보와 작성자, 날짜, commit 내용 등 확인 가능

$ git log 
>> commit b08b8c5f19527189613abf11e58e04b8443e4637 (HEAD -> master)
     Author: [name] <[email]>
     Date:   Wed Sep 4 22:32:44 2019 +0900
     first commit



#4. 코드 병합


# 4-1. 병합전 병합본이 될 브랜치로 HEAD 변경 

$ git checkout [master]

# 4-2. 코드 병합 

$ git merge [병합될 branch]



#5. Github push 업로드

$ git push



#6. 주의사항

Q. 특정 브랜치에서 파일을 수정&추가 후 커밋하지 않은 상태에서 '다른 브랜치로 checkout' or 'merge' 할 경우 오류발생 

     >> please commit your changes or stash them before you switch branches

     >> please commit your changes or stash them before you merge

$ git stash  # 현재 진행중이던 내용 임시저장 ( 잘못된 branch에서 작업중이었을 경우 내용이관도 가능 )


#6-1. 임시저장 관련 명령어

$ git stash list                       # 임시 저장된 변경내용 확인 

$ git stash apply [stash 선택]    # 가장 최근 임시 저장된 내용을 현재 branch에 적용만 ※ stash선택 ex) stash@{n}

$ git stash pop                     # 가장 최근에 임시 저장된 내용을 현재 branch에 적용 후 임시저장 삭제

$ git stash drop                    # stash에 저장된 내용 삭제 

 

#6-2. GUI 기반 코드 버전&커밋 확인

$ gitk : GUI 기반으로 commit 변경이력 확인 가능 

 

HEAD(활성화 브랜치)에 tag 달기 : $ git tag [tag name]

설명 추가 태그 : $ git tag -am "[디스크립션]" [tag name]


태그목록 확인 : $ git tag -n

태그 삭제 : $ git tag -d [tag name]


 참고자료 : https://backlog.com/git-tutorial/kr/intro/intro1_1.html