GIT

Janice._.oooh·2021년 11월 19일
0

Four Areas of GIT

1. Working Directory (작업영역)

  • real project directory
  • areas where modify and add the actual code
  • all of areas except the .git

2. Repository (저장소)

  • space where store files or folders by history of change
  • it is inside the .git directory
  • Local Repository : private repository that store files at my PC
  • Remote Repository : share repository using a lot of people, files are handled at remote repository server

3. Index (Staging Area)

  • ready area before storing to Repository from Working Directory
  • be handled .git/index file
  • git add : be stored information to Index from Working Directory
  • git commit : be stored information to Repository from Index

4. Stash

  • different with general area (Working Directory > Index > Repository), a separate temporary area
  • it temporarily stores the workings and can bring out them later



GIT reset






Types of GIT Branch

1. Master Branch :
It can be released for a product and updated version by merging with Develop Branch
제품으로 출시될 수 있는 브랜치, Develop브랜치와 병합하며 버전을 관리

2. Develop Branch :
It develop(add functions and modify bug) the Next Release Version
다음 출시 버전을 개발하는 브랜치

기능들이 추가되고 버그가 수정되어 배포하기에 안정적인 상태라면 Develop브랜치를 Master브랜치에 병합한다.
평소에는 이 브랜치를 기반으로 개발을 진행한다.

3. Feature Branch :
It develop a function and if the development is completed, it is merged Develop Branch
기능을 개발하는 브랜치, 개발이 완료되면 Develop브랜치에 병합하여 다른 개발자들과 공유

$ git checkout -b [feature_branch] [develop_branch]
// Develop브랜치로부터 Feature브랜치를 분기함
$ git checkout [develop_branch]
// 새로운 기능에 대한 모든 작업을 마친 후, Develop브랜치로 이동
$ git rebase // Feature브랜치에서 작업한 내용을 Develop브랜치로 병합
$ git branch -d [branch_name] // Feature브랜치 삭제

4. Release Branch :
It get ready for current release
이번 출시 버전을 준비하는 브랜치

  • Develop에서 배포할 수준의 기능과 성능이 모이거나, 정해진 배포 일정이 되면 Release브랜치를 분기한다.
    $ git checkout -b [release_version] [developbranch]

  • Release브랜치에서는 버그수정 및 문서추가 등을 작업한다. 그리고 새로운 기능을 추가로 병합하지 않는다. (새로운 기능을 추가 : Develop브랜치의 역할)

  • Release브랜치에서 배포 가능한 상태가 되면, Master브랜치(병합한 commit에 Release버전 태그 부여)와 Develop브랜치에 병합한다.
    (배포를 준비하는 동안 변경된 내용을 Develop에도 반영시켜주어야 한다.)
    $ git checkout [master_branch]
    $ git rebase**// Master브랜치에 병합
    $ git tag -a [tag_text] // 병합한 commit에 태그를 부여
    $ git checkout [develop_branch]
    $ git rebase // Develop브랜치에 병합
    $ git branch -d [branch_name] // Release브랜치 삭제

  • 위와 같이 배포 준비를 하는 동안, Develop브랜치에서는 다음 배포를 위한 개발을 계속 진행한다.

5. Hotfix Branch :
It modify Bug that is occurred at Release Version(Master Branch)
출시버전(Master브랜치)에서 발생한 버그를 수정

  • 배포한 버전에서 급하게 수정해야 할 버그가 발견될 경우,
    Develop브랜치에서 오류를 수정하고 배포 가능한 버전을 새로 만들기에는 시간과 안정성이 보장되지 않으므로 Master브랜치에서 직접 분기한다.
  • 오류 수정 완료 후, 다시 Master브랜치에 병합하고 태그를 붙인다.
  • Hotfix브랜치에서의 변경된 내용을 Develop브랜치에도 병합한다.
    (Hotfix브랜치에서는 버그수정만을 다루므로, 다음 배포를 위해 개발하던 Develop브랜치의 내용에 영향을 주지 않는다.)

6. Process of Branchs


GIT merge

3-way merge : base, feature, master = new one


GIT rebase

we should often checkout/daily build but also, will get a lot of merge commit.
It is not good when check a issue later because the history is dirty.
Therefore, recommend to use 'rebase' instead of 'merge'.

########## Will continue to add and edit ###########

0개의 댓글