Git & Github 기본 이론 | git 관련 명령어(commit, push, pull, status, add, init, branch ...)

2024. 9. 4. 18:51Git & Github

728x90
반응형

 

반응형

 

 

 

git이란?

https://git-scm.com/

 

Git

 

git-scm.com

 

[Git Documentation]

https://git-scm.com/doc

 

Git - Documentation

Documentation Reference The official and comprehensive man pages that are included in the Git package itself. Quick reference guides: GitHub Cheat Sheet | Visual Git Cheat Sheet Book Videos Length: 05:59 Length: 04:26 What is Git? Length: 08:15 Length: 05:

git-scm.com

 

 

분산형 버전 관리 시스템(DVCS)

여러 개발자들이 하나의 프로젝트를 효율적으로 개발할 수 있도록 도와주는 시스템

 

Visual Studio Code 

menu - settings - default profile - Terminal › Integrated › Default Profile: Windows - git bash 로 설정

 

 

Commit

 

- 파일의 4가지 상태

  • Untracked : git 시스템에 의해 관리되고 있지 않은 상태 (ex. 새로 생성한 파일)  →  빨간색 글씨
  • Unmodified : commit 된 이후로 수정되지 않은 상태  →  빨간색 글씨
  • Modified : commit된 이후로 수정된 상태  →  빨간색 글씨
  • Staged : commit 대기중인 상태  →  초록색 글씨

수정 전 →  빨간색 글씨

수정 후  →  초록색 글씨

 

 

 

git bash 명령어

# git 상태 확인
git status

# git 초기화
git checkout -- ./

# git에 파일 추가
git add 파일명

# git 현재 파일 추가
git add .

# git commit 메세지 추가
git commit -m "메시지"

# git 로그 확인
git log

 

 


# 파일 변경사항 보기
git diff

# 커밋 기록 보기
git log

# 커밋 기록을 통해 commit 아이디를 확인하여 commit 단위로 변경
ctrl + q : git log 종료

# git bash 터미널 기록 지우기
clear

# 커밋되지 않은 변경사항 되돌리기
git restore 파일명

# 특정 커밋 작업 되돌리기
git revert 커밋아이디

# 커밋 기록을 남기고 되돌릴 수 있음(:wq!)


# 특정 커밋으로 되돌아가기
# 돌아가고자 하는 기록의 커밋 아이디 입력
git reset 커밋아이디 --mixed

--mixed : 기본 옵션
--soft : 커밋 아이디의 아후의 변경사항(로컬)이 staged로 남는 옵션
--hard : 커밋 아이디의 변경사항 이후가 아예 사라져버리는 옵션

 


Github

https://github.com/

 

GitHub: Let’s build from here

GitHub is where over 100 million developers shape the future of software, together. Contribute to the open source community, manage your Git repositories, review code like a pro, track bugs and fea...

github.com

 

Git 프로젝트 전용 원격 저장소

 

local : 현재 내가 개발하고 있는 컴퓨터
remote : 협업의 위한 저장소(github)

# git 저장소 생성
git init

# 개발자 정보 입력(작업자 등록)
# 히스토리 파악을 위함
git config 

ex. 계정 등록
git config user.name
git config user.email


# 프로젝트에 연결된 remote repository 관리
git remote

ex.
git remote add origin(remote명) 깃허브주소(ssh)
git remote : 조회
git remote -v

# local 프로젝트 작업사항을 remote repository에 올리기
git push

ex. 
git push origin master


# remote repository를 local에 다운받기
git clone

ex.
git clone 깃허브주소(ssh)

 

 

 


Branch
소프트웨어 개발에서 메인 코드베이스와는 독립적으로 새로운 기능이나 버그 수정을 안전하게 작업할 수 있는 분리된 작업 환경

complict : 깃 공유시 문제 상황

merge : 코드리뷰를 마친 Branch 작업 사항을 메인 코드베이스에 합치는 것

 

# remote 브랜치 작업 사항 현재 브랜치에 다운로드하기
git pull

# 브랜치 관리
git branch 브랜치명

git branch -v : 로컬에 있는 브랜치 목록
git branch -a : remote에 올라간 모든 브랜치 확인
git branch -D 브랜치명 : 해당 브랜치 삭제 

#
git push origin :브랜치명
git push origin :test1


# 특정 브랜치로 작업 환경 변경
git switch 브랜치명

# 특정 브랜치 작업 사항을 현재 브랜치에 합치기
git merge 브랜치명

* 방식
feature 브랜티 작업 내용이 merge 대상 브랜치의 HEAD 뒤에
1. fast forward : 바로 붙을 수 있는 상태
2. 3way merge : 바로 붙을 수 없는 상태

git merge 브랜치명 --no-ff : fast forward를 사용하지 않는 merge


# 특정 브랜치 작업 사항 뒤로 현재 브랜치 작업사항을 보내기
git rebase

git rebase master : master 그 다음으로 이동
git rebase --continue : 해당 위치에 rebase 진행

# remote 동기화
git fetch

# remote에서 삭제된 건 반영
git fetch --prune

 

 

Visual studio Code 내의 Git Graph Extension 추천

 


# 내 작업 브랜치를 대상 브랜치에 합칠때
git request

# github에서 진행 - Review changes 메뉴
# 특정 부분에 의견을 줄때
comment

file changes 메뉴에서 라인 별로 코멘트를 달 수 있음

# 이 코드를 합쳐도 될 것 같을때
approve

 

 

# 초기 프로젝트 세팅

# 빈 Git 저장소를 만들거나 기존 저장소를 다시 초기화
git init

# 계정 등록
git config

# 레포지토리 생성 및 연동
git remote

git push

---------------------- 작업시 이 부분 계속 반복!
# 브랜치로 개발
git branch

git swithch

git add

git commit

# Pull request와 코드 리뷰

# 머지하기
git merge
---------------------- 작업시 이 부분 계속 반복!

 

  • github 내 리포지토리 협업자 등록 : repository - settings - collaborators

 


# git flow

  • Master : 제품 출시 버전을 관리하는 브랜치, 항상 안정적인 상태를 유지해야 함, 언제든지 실제 서비스로 나가도 무방한 상태. 
  • Develop : 개발 중인 기능들이 통합되는 브랜치, 다음 릴리스(버전)를 준비하는 개발 작업이 이루어짐, 개발용 브랜치.
  • Feature : 새로운 기능 개발을 위해 develop 브랜치에서 파생된 브랜치, 개발이 완료되면 develop 브랜치에 머지, 각 기능별 개발하고 있는 브랜치.
  • Release : 다름 릴리스(버전)를 준비하는 단계에서 최종 수정 및 버그 수정을 위해 develop 브랜치에서 파생되는 브랜치(일종의 스냅샷)
  • Hotfix : 긴급한 버그 수정을 위해 master 브랜치에서 파생, 수정 후 master와 develop 브랜치에 머지, 운영중인 master 시점에서 수정되어서 머지해줌으로써 안정적인 운영을 할 수 있도록 함.

 

 

 

 

# github flow

  • Master : 제품 출시 버전을 관리하는 브랜치, 항상 안정적인 상태를 유지해야 함
  • Feature : 새로운 기능 개발을 위해 master 브랜치에서 파생된 브랜치, 개발이 완료되면 master 브랜치에서 머지(좀 더 엄격한 관리를 요함)

 

# gitlab flow

 

# trunk based development

 


git hooks

특정한 git 이벤트(ex. commit 명령어 실행)가 발생할 때 자동으로 스크립트가 실행되도록 설정하는 기능

 

  • pre-commit : 커밋 생성하기 직전에 실행
  • post-commit : 커밋 완료 후 실행
  • pre-push : push 되기 직전에 실행

 


Github Actions

Repository에 일어나는 이벤트를 감지하고 특정 로직을 실행

 

 

 

728x90

 

728x90
반응형