모든 버전 관리 시스템은 브랜치를 지원한다.

개발을 하다 보면 원래 코드와는 상관없이 독립적으로 개발을 진행할 때가 있는데,

이럴때 브랜치가 사용된다.

 

그래서 브랜치란 무엇인가


브랜치는 커밋 사이를 이동할 수 있는 포인터 같은 것이다. 

기본적으로 Git은 master 브랜치를 만든다. 처음 커밋하면 이 master 브랜치가 생성된 커밋을 가리킨다.

이후 커밋을 만들면 master 브랜치는 자동으로 가장 마지막 커밋을 가리킨다.

 

git init 후에 커밋 두번 한 상태

 

그럼 여기서 브랜치를 만든다면 어떻게 될까?

아래의 명령어로 새로운 브랜치를 만들 수 있다.

아래의 버전은 새로운 브랜치를 만들고 바로 이동하는 명령어이다.

$ git branch new_branch
$ git checkout -b new_branch

 

branch를 생성후 아직 new_branch로 이동하지 않은 상태

 

그럼 지금 작업중인 branch가 어느것인지 확인은 어떻게 할까?

답은 git branch를 이용하는 것이다.

*가 앞에 있는 것이 현재 branch다.

$git branch

 

 

이제 new_branch로 이동해보자.

 

$git checkout new_branch

 

checkout 명령어로 new_branch로 이동한 상태

 

그럼 여기서 commit을 해보면 어떻게 될까??

 

커밋을 하나 더 한 상태

 

master 브랜치는 그대로지만 new_branch와 그걸 가리키는 head는 새로운 커밋을 가리키게 되었다!

그럼 여기서 아래의 코드로 master 브랜치로 돌아가면??

$git checkout master

 

다시 master 브랜치로 돌아간 상황

 

다시 master 브랜치가 가리키던 커밋으로 돌아온 걸 볼 수 있다. 

이제부턴 new_branch와 별개로 진행되는 것이다.

여기서 커밋을 한번 해보면 어떻게 될까?

 

master 브랜치에서 추가 커밋을 한 상황

 

이렇게 프로젝트가 10e9q라는 커밋을 기점으로 분리되어 진행할 수 있는 것이다.

이제 checkout을 통해 자유롭게 브랜치를 옮겨다니며 작업을 하고 적절할 때 두 브랜치를 merge한다.

 

그렇다면 브랜치를 사용하는 장점은?


1. 작업 분리와 안정성 유지

 

브랜치는 새로운 기능이나 버그 수정을 독립적으로 진행할 수 있는 환경을 제공한다.

이를 통해 작업 도중 발생할 수 있는 오류가 메인 코드에 영향을 주지 않으므로 프로젝트의 안정성을 유지할 수 있다.

 

2. 효율적인 협업 지원

 

여러 명의 개발자가 각각의 브랜치에서 동시에 작업할 수 있어 개발 속도가 빨라지고,

개발자간의 충돌을 최소화할 수 있다.

 

3. 유연한 버전 관리와 릴리즈 전략

  • 브랜치를 이용해 기능별, 릴리즈별로 코드베이스를 분리할 수 있어, 특정 시점의 코드로 되돌아가거나 긴급한 버그 수정을 독립적으로 적용하는 것이 용이하다. 이는 릴리즈 관리와 긴급 패치 처리에 매우 유리하다.

4. 코드 품질 유지와 테스트 용이성

  • 기능 개발이 완료되면 코드 리뷰를 통해 품질을 검토하고 테스트한 후 메인 브랜치에 병합할 수 있어, 프로젝트의 코드 품질을 높일 수 있다.
    • 테스트용 브랜치를 생성하여 새로운 기능이나 버그 수정을 테스트해볼 수 있으며, 테스트 결과에 따라 안전하게 수정 및 업데이트가 가능하다.

 

다음은 브랜치를 병합(Merge)하는 방법에 대해 알아볼 것이당.

 

 

'Git' 카테고리의 다른 글

[Git] README.md 설정하기  (0) 2024.11.26
Git 사용법  (1) 2024.11.25

이번엔 README.md 파일 작성하는 법을 알아보자

 

README.md 는 개발자가 이 프로젝트 또는 파일에 대한 설명을 적어놓는 곳이라고 생각하면 된다.

 

Github에서 자주 접하는데 들어가자마자 보이니 약간 프로젝트의 첫인상? 같은 느낌이다.

사람도 첫인상이 좋으면 호감이 생기는 것처럼 우리도 아끼는 프로젝트의 README.md를 잘 꾸며주자.

 

그럼 시작하기전에 README의 확장자인 .md가 무슨 뜻일까?

README는 markdown(마크다운언어) 라는 뜻이다.

마크다운언어는 마크업언어의 일종으로 특수기호와 문자를 이용한 매우 간단한 구조의 문법을 사용하여 웹에서도 빠르게 컨텐츠를 작성하고 직관적으로 인식할 수 있다.

Github에서는 기능을 더 추가한 Github-Flavored Markdown 을 사용한다. 

 

그래서 여기에도 문법이 존재한다.

아래 소개할 다양한 문법들로 README.md 파일을 잘 작성해보자

 

1. 제목

 

# 내용 으로 사용가능하다.

#을 많이 쓸수록 크기가 줄어든다.

6개까지 가능하다.

 

# 제목입니다
## 제목입니다

 

 

 

아니면 이렇게도 가능하다.

다른제목
===
작은다른제목
---

 

 

2. 개행 (줄내림)

마크다운은 기본적으로 강제개행(enter키 누르면 줄내림 되는것)을 인식하지 않는다.

개행을 하려면 띄어쓰기를 두번 하거나 역슬래시를 넣으면 된다. 

가독성 문제로 띄어쓰기는 권장하지 않는다.

치즈피자  
먹고싶다

치즈피자\
더\
먹고싶다

 

3. 목록

*이나 -로 목록 표시가 가능하다.

* 목록1
* 목록2
* 목록3
- 목록1
- 목록2

 

순서도 가능하다.

근데 앞에 숫자는 안 맞춰도 작동한다. 어차피 각 행이 HTML의 <li> 형태로 변환되어 정보가 사라지기 때문이다.

1. 1번
2. 2번
3. 3번
6. 4번
3. 5번

 

 

 

아래처럼 목록안의 목록도 가능하다.

 

* 목록
    * 목록
        * 목록
1. 목록
    1. 목록
    3. 목록
1. 목록
    1. 목록

 

4. 굵게와 기울기

** 이나 __ 로 감싸주면 굵은 글씨가 가능하다.

너만 **굵냐** 나도 __굵다__

 

*와 _를 하나씩 사용하면 기울여진 글자가 나오는데, 위의 기능과 같이 쓰면 둘 다 사용가능하다.

*기울게* _기울게_
***굵게기울게*** ___굵게기울게___

 

 

 

 

5. 코드

기본 마크다운과는 다르게 Github는 ``` 로 감싸기만하면 여러 줄까지 지원해준다.

위 ``` 옆에 프로그래밍언어를 쓰면 색깔도 나온다.

참 좋은 세상이다.

``` c
printf("Hello world!");
printf("Bye world!");
```

 

 

6. 인용문

 

> 을 사용하면 된다. 많이 쓰면 중첩된다.

 

> 피자에는
>> 치즈크러스트다
>>> 아니다 고구마무스다

 

 

 

 

 

7. 링크

 

[내용](링크)  내용을 클릭하면 링크로 이동한다.

 

[네이버](https://www.naver.com)

 

8. 이미지

 

![내용](링크) 내용에 이미지 설명과 이미지 주소를 링크에 쓰면된다. 

이거 전체를 위 링크의 내용란에 넣고 링크를 설정해주면 이미지링크로도 사용가능하다.

 

![발로란트곰](https://valorantinfo.com/images/kr/tactibear-spray_valorant_gif_3946.gif)

 

❗ 그냥 내용에 특수문자를 사용하고 싶을 땐 앞에 \ 를 붙여주면 된다!

 

 

더 다양한 기능을 알고싶다면 아래 링크로!

 

추가 기능

 

 

'Git' 카테고리의 다른 글

[Git] Branch 브랜치란?  (0) 2024.11.26
Git 사용법  (1) 2024.11.25

Git 설치

ubuntu 에서 설치 명령어

$ sudo apt install git-all

 

window 에서 설치 

 

Standalone Installer 64bit 받으면 된다.

 

Git 홈페이지

 

Git - Downloading Package

Download for Windows Click here to download the latest (2.47.0(2)) 64-bit version of Git for Windows. This is the most recent maintained build. It was released on 2024-10-22. Other Git for Windows downloads Standalone Installer 32-bit Git for Windows Setup

git-scm.com

 

 

git init 

새로운 Git 저장소(repository)를 생성할 때 사용하는 Git 명령어 

디렉토리 우클릭 하고 git bash로 열기

 

git diff

 

commit 이나 branch 사이에 다른점 혹은 파일이나 Repository와 Working Directory 사이의 다른점을 보여주는 명령어

 

 

git add [파일이름]

 

staging area로 추가 - 대기공간같은 느낌 

git add . -> 모든 파일 추가

 

git commit -m “메시지”  

Staging Area에 추가한 파일들을 Commit을 한다면 최종적으로 저장소(Repository)로  저장되게 됩니다.

 

 

Untracked : Working Directory에 있는 파일이지만 Git으로 버전관리를 하지 않는 상태
Unmodified : 신규로 파일이 추가되었을 때, new file 상태와 같다. ( $ git add 상태 )
Modified : 파일이 추가된 이후 해당 파일이 수정되었을 때의 상태
Staged : Staging Area에 반영된 상태

 

왜 Staging Area에 들릴까?

 

Git의 Staging Area는 어떤 점이 유용한가

Git에는 Staging Area라는 공간이 있다. 어떤 변경사항이 저장소에 커밋되기 전에, 반드시 거쳐야만 하는 중간단계이다. 다른 버전관리도구에는 이에 정확히 대응하는 것은 없다. 저장소가 추적하는

blog.npcode.com

 

 

git rm

파일 삭제

git rm => 원격 저장소와 로컬 저장소에 있는 파일을 삭제한다.

git rm --cached => 원격 저장소에 있는 파일을 삭제한다. 로컬 저장소에 있는 파일은 삭제하지 않는다.

 

git commit --amend 커밋 해시

 

commit 취소하고 다시 날림   commit ID가 바뀌므로 포크해온 저장소의 커밋을 --amend 로 수정하고 PR을 날리려 하면 커밋 트리가 일치하지 않아 컨플릭트의 원인이 될 수도 있다.

 

git checkout

+ branch name - Branch 혹은 Commit 전환 (switch)

+ 해시 - 내용 되돌리기 (restore)

 

git reset 해시

내용 되돌리기

 

checkout과 차이점

reset = HEAD가 가리키던 브랜치가 다른 커밋을 가리키도록 한다.

checkout = HEAD 자체가 다른 커밋이나 브랜치를 가리키도록 한다.

둘 다 HEAD가 다른 commit을 가리키는 결과가 나오지만 reset은 브랜치를 통해, checkout은 HEAD 자체가 가리키는 Detached head가 된다.

 

 

작업을 저장하지않은 상태에서 다른버전으로 왔다갔다 하지 않아야한다.

저장하지 않고 왔다갔다 하면 HEAD가 특정 브랜치가 아닌 커밋을 가리키는 상태가 됨

정상 : HEAD -> branch -> commit

비정상 HEAD -> commit                      -> detached head

해결 git branch -f main HEAD

 

  1. 이전버전 파일 확인만 할때
    1. git checkout 커밋해시
  2. 이전버전(현재상태유지)
    1. git reset –soft 해시
  3. 이전버전(작업디렉토리유지)
    1. git reset -mixed  해시
  4. 이전버전(완전 이전버전으로)
      1. git reset –hard 해시

 

Git push origin branch or master

원격저장소로 업로드

 

Git pull origin branch or master

원격저장소에서 변경사항 가져오기

 

커밋 메시지 규칙

  1. 템플릿
  2. [제목타입] 로그인 기능 구현 (# 이슈번호)
  3. 로그인 기능을 ~랑 ~랑 ~사용해서 어떻게 구현했다.
  4. 꼬리말 타입 : #이슈번호

git flow 전략에 관해서

 

https://inpa.tistory.com/entry/GIT-%E2%9A%A1%EF%B8%8F-github-flow-git-flow-%F0%9F%93%88-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EC%A0%84%EB%9E%B5

 

'Git' 카테고리의 다른 글

[Git] Branch 브랜치란?  (0) 2024.11.26
[Git] README.md 설정하기  (0) 2024.11.26

+ Recent posts