본문 바로가기

Server Programming/BackEnd Project

2일차. 버전 관리 툴 - Git

반응형

목차

  1. CLI 개념
  2. Git 개념
  3. Gi으로 버전 되돌리기
  4. Github 개념
  5. Github 협업하기 (1)
  6. Github Profile 꾸며보기

1. CLI 개념

 

(1) CLI

Command Line Interface

Graphic User Interface

 

CLI에 익숙해지기

 

(2) 터미널 이용해 폴더 만들기

 

명령어

  • '~' : root 폴더 경로로 맥북/Users/(유저명)
  • ls : 현재 위치 디렉토리의 파일/폴더 목록 (list segments)
  • pwd : 현재 위치 디렉토리
  • '.' : 현재 폴더(디렉토리)
  • '..' : 한단계 위 디렉토리를 나타낸다.
  • rm -rf : 폴더의 모든 파일까지 포함해 삭제
  • rm : 파일만 삭제

경로

  • 상대 경로 : 현재 위치 중심
  • 절대 경로 : root 중심

@-MacBookAir test % mkdir 0

@-MacBookAir test % mkdir 1

@-MacBookAir test % cd 0

@-MacBookAir 0 % mkdir 0

@-MacBookAir 0 % mkdir 1

@-MacBookAir 0 % mkdir 2

@-MacBookAir 0 % cd ..

@-MacBookAir test % cd 1

@-MacBookAir 1 % mkdir 3

@-MacBookAir 1 % mkdir 4

 

 

 

2. Git 개념

버전의 이동이 가능한 Git

최종 <-> 1차 < -> 2차

 

홈브루를 이용해 git 설치

brew install git

git --version

 

 

(1) 명령어의 역할

  • git add : 관리할 파일을 git에 추가
  • git commit : Git에 하나의 버전으로 저장

 

commit 버전 간에는 이동이 가능하다.
revert : 버전 되돌리기

(2) IDE의 터미널에서 사용

 

깃으로 관리할 폴더로 이동 후,

git init : 해당 폴더를 깃에서 관리가능한 폴더로 지정

 

 

init 후에 add, commit과 같은 명령어 가능

git add . : 해당 폴더의 모든 파일을 깃으로 관리

 

 

git status : add가 잘 되었는지 확인

untracked files present라고 뜨는 경우 추적을 하지 않는다.

 

add 후 commit하면 되지만, 처음 깃을 사용할 때에는 blame 기능을 위해 사용자 설정

 

(3) 깃에 사용자 설정

git config --global user.email "(유저이메일)"
git config --global user.name "(유저명)"

 

 

6. 깃에 커밋 메시지 추가하기

  • 커밋 타입 : 동작 기능 이름 / 함수 이름
  • 어떤 함수의 어떤 기능인지 명시하는 기능으로, 업무 파악을 위해 구체적으로 명시해야 한다.

 

커밋 타입의 종류

  • feat : 새로운 기능 추가
  • fix : 버그 수정
  • docs : 문서 수정
  • style : 코드 formatting, 세미콜론(;) 누락, 코드 변경이 없는 경우
  • refactor : 코드 리팩터링
  • test : 테스트 코드, 리팩터링 테스트 코드 추가(프로덕션 코드 변경 X)
  • chore : 빌드 업무 수정, 패키지 매니저 수정(프로덕션 코드 변경 X)
  • design : CSS 등 사용자 UI 디자인 변경
  • comment : 필요한 주석 추가 및 변경
  • rename : 파일 혹은 폴더명을 수정하거나 옮기는 작업만인 경우
  • remove : 파일을 삭제하는 작업만 수행한 경우
  • !BREAKING CHANGE : 커다란 API 변경의 경우
  • !HOTFIX : 급하게 치명적인 버그를 고쳐야 하는 경우

 

콘솔 출력

[master (최상위-커밋) 1cfb368] Feat : Create HelloWorld
 1 file changed, 1 insertion(+)
 create mode 100644 hello.txt

 

+) 커밋 메시지 수정하기

더보기
$ git rebase -i <commit>

지정한 커밋보다 이후의 커밋을 지정하면, 커밋의 목록이 표시됩니다. 그 중에서 코멘트을 수정하려고 하는 커밋을 찾아 그 행 pick 문자를 edit로 변경하고 저장 · 종료합니다.

다음 --amend 옵션을 지정하여 커밋을 실행합니다. 코멘트 입력 화면이 표시되므로 코멘트를 수정합니다.

$ git commit --amend

마지막으로 --continue옵션을 지정하여 rebase를 실행합니다.

$ git rebase --continue

 

 

출처 : https://backlog.com/git-tutorial/kr/reference/log.html


7. 파일 수정 후, 변경 사항 저장하기

  1. 파일 수정
  2. git add . : 수정사항을 스테이징 영역으로 반영하기 위한 명령어
  3. git commit -m" (커밋 메시지)"

 

[master 73b8b86] docs : modified
 1 file changed, 1 insertion(+), 1 deletion(-)

 

 

커밋은 기능 단위로!


여러 기능을 동시에 커밋해야할 때 지켜야할 원칙 : 

기능 1번 관련 파일만 선택해 add 후, 커밋

기능 2번 관련 파일만 선택해 add 후, 커밋

 

8. 여러 기능 동시 커밋해야할 때, 기능 단위로 커밋

  1. 기존의 hello.txt 수정하고, 새로운 new.txt 작성
  2. new.txt 파일만 add
  3. add 한 스테이징 영역만 commit 수행
@-MacBookAir prc % git add new.txt 
@-MacBookAir prc % git commit -m"Feat : only commit this file"      

[master f3781d1] Feat : only commit this file
 1 file changed, 1 insertion(+)
 create mode 100644 new.txt

 

 

9. 로그 보기

  • git log : 자세한 커밋 정보 출력
  • git log--oneline : 커밋 로그만 출력

 


3. 이전 버전으로 되돌리기

  • revert : 되돌리고 싶은 commit으로 해당 코드는 사라지고 그 이전 버전으로 이동하며, 해당 커밋 기록은 남는다.
  • reset : 되돌아가고 싶은 commit으로 이동
    • git reset --soft : (소프트 리셋) 수정 사항은 두고 (add된 상태, 저장은 하지 않은 스테이징 영역), 커밋 기록만 사라짐
      • git reset --mixed : 수정 사항은 두고 add도 되지 않는 상태 (자주 사용하지는 않는다)
    • git reset --hard : (하드 리셋) 수정 사항과 커밋 기록 모두 사라짐

revert를 하게 되면, 커밋 메시지도 수정할 수 있는데 vim 편집기를 사용한다.

vim 편집기 : 터미널에서 사용하는 편집기

  • (esc 후) i → insert 모드 :  (커서가 있는 부분부터) 파일 내부의 내용을 작성, 수정할 수 있습니다.
  • (esc 후) dd → (커서가 있는 부분의) 행을 삭제합니다.
  • (esc 후) :wq → 파일을 저장하면서 에디터를 종료합니다.
  • (esc 후) :q → 파일을 저장하지 않고 에디터를 종료합니다.

4. Github

 

리포지토리

  • Public : 커밋 기록 공개
  • Private : 커밋 기록 비공개

리포지토리의 구분

  • remote repository : github의 리포지토리
  • local repository : 실제 리포지토리

 

원격 저장소와 로컬 저장소 연결

  1. 원격 저장소 생성
  2. 로컬 저장소에서 
    1. git init
    2. git add (추가할 파일)
    3. git commit -m"커밋 메시지"
  3. 로컬 저장소와 원격 저장소와 연결하기
    • git remote add orgin (리포지토리 저장소 주소)
    • git remote -v : 연결한 리포지토리 주소 출력
  4. 브랜치 지정하기
    • 기본 브랜치는 master
  5. git push origin (branch명)
    • 해당 브랜치를 이용해 원격 저장소로 업로드
  6. 로그인 방식
    1. username/Password 이용 (username : 이메일 주소가 아닌 유일한 자신의 이름)
    2. SSH key를 이용한 로그인도 가능
  7. git pull origin (branch명)
    • 깃허브에서 작성한 파일을 로컬 저장소에 다운로드
    • pull오류 발생시 
      1. 커밋 혹은 스태시 이용하는 방법 : git stash 후, 다시 git pull origin master 
      2. 스테이징 영역에 저장하는 방법 : git add로 staging 영역에 저장하고, git pull 작업한다.

 


read.md 작성하기

마크다운 문법을 이용해 작성

 

https://docs.github.com/ko/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax

 

포트폴리오를 위한 목차

  1. 프로젝트 간단 요약
  2. 프로젝트 정보/개요 (진행 기간 / 목표 / 팀원)
  3. 프로젝트 설명 (구현한 기능 및 사진 등)
  4. 사용한 기술 스택 

5. Github로 협업하기 (1) 

 

1. 협업자로 등록하기

  1. 협업하고자 하는 리포지토리로 이동
  2. Settings
  3. Add a collaborator

 

2. 다른 프로젝트에 참여하는 방법

  1. git clone "리포지토리 주소"
  2. 클론은 누구나 가능하지만 push는 협업자만 가능
  3. 클론한 폴더에서 pull을 통해 리모트 저장소에 올라온 코드를 내려받을 수 있다.
    • merge를 수행하는 협업

 

3. 일반적인 협업 방식

  1. 팀장이 repo를 만든다.
  2. 해당 repo의 clone해서 작업을 수행하는 방식

 

4. fetch를 이용한 협업

  1. pull과는 달리 merge 방식이 아닌, 먼저 수정사항을 가져온다.
    • git fetch
  2. 원하는 branch에서 수정 내역을 받아온다.
    • git branch -r : 브랜치 목록 출력
    • git checkout origin/master : origin/HEAD -> origin/master branch 전환

5. fork를 통한 원격 저장소 복제

  • 다른 사람이 리포지토리를 가져와서 자신의 저장소로 관리하는 방법
    1. 원하는 repo를 fork한다.
    2. fork한 리포지토리를 자신의 저장소에서 작업을 수행한다.
    3. pull request : 수정한 사항을 반영해달라고 요청하는 작업
    4. pull request를 수락하게 되면, 해당 리포지토리의 contributor가 된다.
  • fork를 이용하면, 바로 원본에 접근하는 것이 아니라 팀마다 하나의 repo를 관리할 수 있다.
    -> 대규모 프로젝트에서 사용한다. 
    1. 원본 repo의 안전한 관리
    2. 팀/사람 단위로 작업 관리

 

 

 

 

 

 

 

 

 

 

 

반응형

'Server Programming > BackEnd Project' 카테고리의 다른 글

4일차. Git 관리 전략을 활용한 협업  (0) 2022.12.15
3일차. GitHub를 이용한 협업 (2)  (0) 2022.12.14
2일차. TIL  (0) 2022.12.13
1일차. TIL  (0) 2022.12.12
1일차. 프로젝트 과정 OT (+TIL 공부법)  (0) 2022.12.12