1. 브랜칭(branching)

  • 메인 개발 코드를 그대로 복사하여 기존의 메인 개발 코드를 건드리지 않고 새로운 기능을 개발할 수 있는 버전 관리 기법이다
  • 처음에 Git 리포지토리를 생성하면 나오는 main 브랜치에서만 작업을 하다가 새로운 기능 개발을 위해 feature 브랜치를 새로 생성하는 경우, 기존 main 브랜치에서의 작업은 유지하고 새로운 feature 브랜치에서 자유롭게 코드를 추가 및 삭제할 수 있다

 

2. Git branch

 1) main 브랜치

  • main 브랜치는 사용자에게 언제든 배포할 수 있으며, 사용자에게 언제든 제품으로 출시할 수 있는 브랜치이다
  • 회사에 따라서 master, prod, production 등으로 사용하기도 한다
  • 일정 기준을 충족했고, 핵심 기능이 완성되었으면 main 브랜치로 배포할 수 있다
    - 대표적인 기능이 완성되어 있다
    - 기존 기획했던 레이아웃이나 전체적인 디자인이 대부분 완성되어 있다
    - 클라이언트, 서버, 데이터베이스가 공개된 웹에서 정상적으로 통신할 수 있다
    - 최소한의 보안이 마련되어 있다
     : 브라우저에서 개발 버전에서 사용하던 secret이나 유저의 비밀번호가 노출되지 않도록 한다
     : 유저의 기밀 정보 조회를 위해 인증 토큰, 세션이 필요하도록 한다

 

 2) dev 브랜치

  • 다음 버전 배포를 위한 개발 중인 브랜치이다
  • main 브랜치에서부터 브랜치를 생성한다
  • main 브랜치와 dev 브랜치는 Github 리포지토리에 항상 업데이트 되어있어서 팀원의 코드 리뷰를 받고 진행한다
  • 가능하면 모든 팀원이 확인 가능하도록 코멘트를 Github Pull Request에 남기는 것을 권장한다

 

 3) 보조 브랜치

  • feature 브랜치라고 한다
  • feature 브랜치는 기능 개발, 리펙토링, 문서 작업, 단순 오류 수정 등 다양한 작업을 기록하기 위한 브랜치이다
  • 분류를 세세하게 나누는 경우에는 refactor, fix, docs, chore와 같이 세세하게 커밋 메시지나 브랜치명에 prefix를 달기도 한다
  • 아래는 feature 브랜치 이름과 커밋 메시지의 예시이다
hash (브랜치 명) 커밋 메시지
2f85eea (feat/create-todo) feat: Todo 추가 기능
2ad0805 (fix/var-name) fix: 변수 네이밍 컨벤션에 맞게 변수명 변경 (ismale => isMale)
e7ce3ad (refactor) refactor: 불필요한 for 루프 삭제
  • feature 브랜치는 보통 각 개인의 로컬 리포지토리에서 만들고 작업한다
  • feature 브랜치는 기능 개발을 위한 브랜치이기 때문에 2명 이상 같이 작업하는 경우가 없다
  • 커밋 기록을 남기는 일반적인 rebase-and-merge 와 커밋 기록을 정리하는 squash-and-merge 등의 merge가 있다
  • 일반적으로 feature 브랜치는 머지하고 나서 삭제하지만, 복원해야 할 필요성이 있는 경우는 남겨두기도 한다

▶ 커밋 메시지의 예시 : https://www.conventionalcommits.org/ko/v1.0.0/ 

 

Conventional Commits

커밋 메세지에 사용자와 기계 모두가 이해할 수 있는 의미를 부여하기 위한 스펙

www.conventionalcommits.org

 

 

3. 브랜치 생성 및 변경(git switch)

 1) 브랜치 생성

브랜치를 새로 생성하는 경우, -c를 붙인다
git switch -c feature

checkout 이라는 명령어도 사용할 수 있다
git checkout -b feature

feature 브랜치로 이동한다
git switch feature

기존에 있던 main 브랜치로 HEAD를 변경 시에는 -c를 붙이지 않는다
git switch main
git checkout main

 

 

4. 브랜치 합치기(git merge)

  • 기능 개발이 끝나면 브랜치를 main 브랜치와 합칠 수 있다
feature 브랜치에서 기능 개발
git commit -m "기능1의 세부 기능1"
git commit -m "기능1의 세부 기능2"
git commit -m "기능1 개발 완료"

머지를 위해 main 브랜치로 전환
git switch main

main 브랜치로 feat/todo 브랜치를 병함
git merge feat/todo

  • 프로젝트 개발 시에는 브랜치를 Github의 pull request 기능을 이용하여 변경 내역을 충분히 확인한다
    - 로컬에서 머지하지 않고 feature 브랜치를 push하여 pull request를 요청하는 것이 문제 발생을 감소시킨다
기능 개발이 진행
git commit -m "기능1의 세부 기능1"
git commit -m "기능1의 세부 기능2"
git commit -m "기능1 개발 완료"

Github 리포지토리로 푸시
git push origin feat/todo

Github에서 Pull Request 실행

 

5. 브랜치 삭제(git branch -d)

  • 머지된 feature 브랜치는 이미 dev 브랜치에 기록이 완벽하게 남아있기 때문에 남겨둘 이유가 없으므로 삭제한다
  • 원격 레포지토리에서 pull request가 성공적으로 마무리되면, 아래 스크린샷처럼 브랜치를 삭제하는 버튼을 눌러 쉽게 삭제할 수 있다

  • 로컬 리포지토리에서 브랜치 삭제는 git branch -d <브랜치명> 으로 할 수 있다
git branch -d feat/todo
  • Git은 버전 관리를 위해서 브랜치가 합쳐지지 않으면 삭제하지 못 하도록 설정되어 있다
    - 미완성 기록을 삭제하고 싶을 경우에 -D 옵션을 쓰면 삭제할 수 있다
    - 머지되지 않은 브랜치 삭제는 버전 기록 시스템의 사용 목적과는 맞지 않는다
    - 미완성 기록이라도 해당 기능으로 돌아가야 할 수도 있으므로 남겨두는 것을 권장한다
git branch -D feat/todo

 

6. Git 문제 발생 대처안

 

 

7. Git Error  대처방법

 1) reject error

  •  ! [rejected]        master -> master (non-fast-forward))
  • git push 또는 git push origin main 등의 명령을 실행해도 reject를 동반한 에러가 발생할 경우 대처 방법이다
 ! [rejected]        master -> master (non-fast-forward)

push 하고져 하는 디렉토리에서

git init 
로 초기화 한 후
git remote add origin {git push 주소}
로 다시 연결을 진행한다
다시
git push 또는 git push origin main
을 하여도 에러가 발생한다면...

git push origin +main
처럼 main 앞에 '+'를 붙여서 진행한다

'Git' 카테고리의 다른 글

Git - 명령어 / HELP  (0) 2022.08.01
GitHub  (0) 2022.07.10
Git(global information tracker)  (0) 2022.07.10

1. Git 설정

로컬 레포지토리와 연결할 유저 정보를 설정합니다.

버전 히스토리를 식별할 때 사용할 이름을 설정한다
git config --global user.name "[firstname lastname]"
각 기록과 연결할 이메일 주소를 설정한다
git config --global user.email “[valid-email]”

 

2. 도움말 보기

  • help 명령어를 이용하여 각 명령어 및 옵셥의 기능에 대해 살펴볼 수 있다
git에서 제공하는 모든 명령어를 볼 수 있다
git help -all
특정 command에서 사용할 수 있는 모든 옵션을 볼 수 있다
git [command] -help

 

These are common Git commands used in various situations: 다양한 상황에서 사용되는 일반적인 Git 명령은 다음과 같다
start a working area (see also: git help tutorial)

   clone Clone a repository into a new directory
   init Create an empty Git repository or reinitialize an existing one    


work on the current change (see also: git help everyday)

   add       Add file contents to the index
   mv        Move or rename a file, a directory, or a symlink
   restore   Restore working tree files
   rm        Remove files from the working tree and from the index


examine the history and state (see also: git help revisions)
   bisect    Use binary search to find the commit that introduced a bug        

   diff      Show changes between commits, commit and working tree, etc        
   grep      Print lines matching a pattern
   log       Show commit logs
   show      Show various types of objects
   status    Show the working tree status


grow, mark and tweak your common history

   branch    List, create, or delete branches
   commit    Record changes to the repository
   merge     Join two or more development histories together
   rebase    Reapply commits on top of another base tip
   reset     Reset current HEAD to the specified state
   switch    Switch branches
   tag       Create, list, delete or verify a tag object signed with GPG       




collaborate (see also: git help workflows)

   fetch     Download objects and refs from another repository
   pull      Fetch from and integrate with another repository or a local branch
   push      Update remote refs along with associated objects
작업 영역을 시작합니다(참조: git help tutorial 참조).

clone   새 디렉터리에 리포지토리 복제
init       빈 Git 저장소를 만들거나 기존 Git 저장소를 다시 초기화합니다.

현재 변경 작업(매일 도움말 보기)

add       추가 인덱스에 파일 내용 추가
mv        파일, 디렉터리 또는 심볼 링크 이동 또는 이름 변경
restore  복원작업 트리 파일 복원
rm         작업 트리와 인덱스에서 파일 제거


내역 및 상태 검사(Git help revices(도움말 수정) 참조)
이등분 버그를 발생시킨 커밋을 찾기 위해 이진 검색을 사용합니다.

diff        커밋, 커밋 및 작업 트리 간 변경 사항 표시 등
grep      패턴과 일치하는 선 인쇄
log        커밋 로그 표시
show     다양한 개체 유형 표시
status    작업 트리 상태 표시

여러분의 공통의 역사를 성장시키고, 표시하고, 수정하세요.

branch      분기 지점 목록, 생성 또는 삭제
commit     저장소에 변경 사항 기록 커밋
merge       두 개 이상의 개발 기록을 함께 결합
rebase      다른 기본 팁 위에 커밋 다시 적용
reset         현재 HEAD를 지정된 상태로 재설정합니다.
switch       스위치 분기 전환
tag            GPG로 서명된 태그 개체 생성, 나열, 삭제 또는 확인


공동 작업(참조: git 도움말 워크플로우)

fetch     다른 리포지토리에서 다운로드 개체 및 참조 가져오기
pull       다른 리포지토리 또는 로컬 분기에서 가져오기 및 통합
push     관련 개체와 함께 원격 참조 업데이트 푸시

 

3. 세팅 및 초기화

  • 레포지토리를 초가화하거나 존재하는 레포지토리를 클론할 수 있다
현재 디렉토리를 기준으로 Git 저장소가 생성된다
git init
URL을 통해 리모트 레포지토리를 로컬 레포지토리에 복제한다
git clone [url]

 

4. Stage & Commit

  • 스테이지 영역을 이용하여 커밋할 수 있다
다음 커밋을 위해 현재 디렉토리에서 수정된 파일을 확인한다
git status
다음 커밋을 위해 파일을 추가(스테이지)한다 (stage)
git add [file]
추가한 파일을 언스테이징하고 변경 사항은 유지한다
git reset [file]
스테이지되지 않은 변경 사항을 보여준다
git diff
스테이지했지만 커밋하지 않은 변경 사항을 보여준다
git diff --staged
스테이지된 컨텐츠를 메시지와 함께 커밋한다 (스냅샷 생성)
git commit -m “[descriptive message]”

 

5. Branch & Merge

  • 작업 내역을 브랜치로 분리해 컨텍스트를 변경, 통합한다
브랜치 목록을 보여준다 * 표시로 현재 작업중인 브랜치를 확인할 수 있다
git branch
현재 커밋에서 새로운 브랜치를 생성한다
git branch [branch-name]
다른 브랜치로 전환한다
git switch [branch-name]
git checkout [branch-name]

새로은 브랜치를 생성하고 해당 브랜치로 전환한다
git switch -c [branch-name]
git checkout -b [branch-name]
현재 브랜치에 특정 브랜치의 히스토리를 병합한다
git merge [branch-name]
현재 브랜치의 모든 커밋 히스토리를 보여준다
git log

 

6. 비교 및 검사

  • 로그 및 변경 사항을 검사할 수 있다
브랜치B에 없는 브랜치A의 모든 커밋 히스토리를 보여준다
git log branchB..branchA
해당 파일의 변경 사항이 담긴 모든 커밋을 표시한다 (파일 이름 변경도 표시)
git log --follow [file]
브랜치A에 있지만 브랜치B에 없는 것의 변경 내용(diff)을 표시한다 (branch간 상태 비교)
git diff branchB...branchA

 

7. 공유 및 업데이트

  • 특정 레포지토리의 업데이트 사항을 검색하여 로컬 레포지토리를 업데이트할 수 있다
url을 통해 특정 리모트 레포지토리를 별칭으로 추가한다
git remote add [alias] [url]
별칭으로 추가한 리모트 레포지토리에 있는 모든 브랜치 및 데이터를 로컬로 가져온다
git fetch [alias]
리모트 브랜치를 현재 작업중인 브랜치와 병합하여 최신 상태로 만들 수 있다
git merge [alias]/[branch]
로컬 브랜치의 커밋을 리모트 브랜치로 전송한다
git push [alias] [branch]
리모트 레포지토리의 정보를 가져와 자동으로 로컬 브랜치에 병합한다
git pull

 

8. 히스토리 수정

  • 브랜치 또는 커밋을 수정하거나 커밋 히스토리를 지울 수 있다
특정 브랜치의 분기 이후 커밋을 현재 작업중인 브랜치에 반영한다
git rebase [branch]
특정 커밋 전으로 돌아가며 스테이지된 변경 사항을 모두 삭제한다
git reset --hard [commitish]

 

9. 임시 저장

  • 브랜치를 전환하기 위해 변경되었거나 추적중인 파일을 임시로 저장할 수 있다
수정하거나 스테이지된 변경사항을 스택에 임시 저장하고 현재 작업 내역에서 삭제한다
git stash
스택에 임시 저장된 변경사항의 목록을 보여준다
git stash list
스택에 임시 저장된 변경사항을 다시 현재 작업 내역에 적용한다
git stash apply
스택에 임시 저장된 변경사항을 다시 현재 작업 내역에 적용하고 스택에서 삭제한다
git stash pop
스택에 임시 저장된 변경사항을 삭제한다
git stash drop
 

'Git' 카테고리의 다른 글

GitHub - Git branch  (0) 2022.08.22
GitHub  (0) 2022.07.10
Git(global information tracker)  (0) 2022.07.10

1. GitHub

 1) 계정 생성

  • https://github.com/에 접속해서 계정을 생성한다
  • 계정 생성 후에는 토큰을 생성한다
  • 토큰 생성 후 윈도우의 자격증명관리자 메뉴로 가서 window자격증명에 등록한다
오른쪽 상단의 메뉴에서 settings 왼쪽 메뉴에서 Developer settings

 

 2) 저장소 생성

  • 메인 화면으로 돌아가서 New 버튼을 눌러 저장소를 생성한다

  • owner은 본인 계정을 선택하고 Repository name에는 프로젝트 명칭을 작성한다

  • Public는 전체에게 공개하는 범위이고 Private는 승인된 계정에만 공개하는 범위이다
    - Public으로 설정하여도 승인하지 않으면 변경을 할 수 없다

 2-1) 저장소 옵션 설정

  • README.md 파일을 자동으로 생성한다

  • Add .gitignore 설정
    - .gitignore 파일을 자동으로 생성한다
    - Java, Node.js 템플릿 중 선택하면 된다
    - Git에서 확인하지 않아야 하는 파일을 점차 추가한다

  • Choose a license 설정
    - 라이센스 파일을 생성해 준다
    - 상용 소프트웨어 개발의 경우는 private 리포지토리를 사용하며, 코드를 공개하지 않기 때문에 라이센스를 보통 작성하지 않는다
    - 오픈소스 소프트웨어 개발의 경우 보통 제약이 적은 MIT 라이센스나 Apache License를 적용한다

▶ 라이선스 종류 : https://www.bloter.net/newsView/blt201410100005 

 

GPL·AGPL·MPL…한눈에 보는 오픈소스SW 라이선스

부끄럽지만 용기내어 고백해볼게요. 크리에이티브 커먼즈 코리아 활동가로 지내면서 크리에이티브 커먼즈 라이선스(CCL)엔 어느정도 익숙하고 많은

www.bloter.net

 

 2-2) 저장소 사용

  • 저장소가 생성되면 Settings를 클릭한다

  • Collaborators에 들어가서 협업자의 GitHup 아이디 또는 이메일을 입력해 준다

 

 3) 파일 올리기 

  • Repository 의 Code 화면에서 해당하는 조건을 선택하여 주소를 복사한다

  • git 파일을 생성했고, 파일까지 commit 한 상황이라면 두번째 조건으로 파일을 올린다
    - 3줄의 문장을 차례로 복사/붙여넣기를 하면 자동으로 실행된다
    - git remote add origin 은 로컬의 Git저장소에 원격 저장소와의 연결을 추가한다는 의미이다
    - 원격 저장소 이름에는 일반적으로 origin을 사용한다
    - git branch -M main 은 원격 저장소의 기본브랜치명을 GitHub에서 권장하는 main으로 한다는 의미이다
    - git push -u origin main 은 로컬 저장소의 커밋된 내역들을 원격 저장소로 업로드 한다는 의미이다
    - 현재 브랜치와 명시된 원격 브랜치를 기본 연결할 경우 -u 또는 --set-upstream 을 사용한다
  • 저장소를 재실행하면 아래와 같이 파일이 업로드 되어 있다

  • git remote 와 git remote -v 를 사용하여 원격 저장소의 내역을 자세히 확인할 수 있다

 

 4) 파일 내려받기

  • Code 화면의 Code 메뉴로 들어가서 Http 주소를 복사한다
    - zip으로 내려받을 경우에는 파일에 .git 파일이 없으므로 Git이 관리를 하지 않는다

  • 탐색기를 열고 저장을 하려는 폴더의 우클릭 메뉴 중 gitbash를 오픈한다
  • 'git clone 원격저장소 주소' 를 사용하여 복사해 둔 Http 주소를 입력 후 파일을 내려받는다

 

 5) 파일 변경 후 업로드

  • Test6 파일을 새로 생성한 후 GitHub에 업로드 한다

  • GitHub의 원격 저장소를 새로고침하면 Test6가 추가된 것을 확인할 수 있다
  • 이미 git push -u origin main으로 원격 브랜치가 지정되어 있기 때문에 git push 만으로도 업로드가 가능하다

 

 7) 로컬 저장소에서 작업하기

  • Github 리포지토리를 생성한 후 해당 레포지토리를 로컬로 clone 받은 다음에 작업을 시작한다
git clone <git 주소>
cd <디렉터리명>
  • 로컬 리포지토리에 [README.md] 파일을 추가한다
    - README.md 파일에는 다음의 정보를 포함한다
     : 프로젝트 이름
     : 프로젝트 핵심 기능 소개
     : 팀원 소개
     : Wiki로 링크
touch README.md

 

README.md 파일은 아래 정보를 꼭 포함해야 합니다.

  • 프로젝트 이름
  • 프로젝트 핵심 기능 소개
  • 팀원 소개
  • Wiki로 링크
# My Todo App

OOOO을 위한 웹 애플리케이션입니다.

## Features

- 편리한 UI로 OOOO를 쉽게 생성하고 삭제할 수 있습니다.
- OOOO에 기한과 카테고리를 설정할 수 있습니다.
- create-react-app으로 간편한 번들링과 배포가 가능합니다.
- Spring Boot로 쉽게 서버 배포를 할 수 있습니다.

## Contributors

- FE: OOO, OOO
- BE: OOO, OOO

## Project Wiki

프로젝트 팀 정보, 기획, 아키텍쳐에 대한 자세한 안내입니다.
http://www.ooooooooo.com/ooo?/ooo

 

 8) 협업자 간의 변경 후 파일 업/다운

  • 로컬 저장소 내용과 원격 저장소의 내용이 모두 변경이 있을 경우에는 로컬에서 push를 할 경우 에러가 발생할 수 있다
  • 원격 저장소의 커밋 내용을 확인하고 변경이 있다면 다음과 같은 방법으로 진행할 수 있다
    - git pull --no-rebase 는 merge 방식으로 파일을 내려받는 방식이다
    - git pull --rebase 는 rebase 방식으로 파일을 내려받는 방식이다
    - pull 진행할 경우 rebase 방식이 협업시에는 용이하다
  •  git pull 을 진행한 후에 git push를 진행하면 충돌 에러가 해결된다
  • git pull --force 는 강제로 이전버전의 커밋으로 돌리는 명령어이며, 협업자와 합의가 없으면 사용하지 않는다

 

2. Git Repository

  • Github는 개발자의 SNS라고 불릴 정도로 다양한 종류의 오픈소스 프로젝트가 공유되어 있다

 1) 필수 파일

  • README.md
    - 오픈소스 프로젝트에 들어가면, 가장 먼저 확인할 수 있는 정보가 README.md 파일이다
    - 기본적인 마크다운 사용법을 알고 있으면 간단한 소개 페이지처럼 제작할 수 있다
    - README.md 파일을 적는 양식은 따로 존재하지 않는다
    - 일반적으로 해당 오픈소스의 활용에 대한 상세한 정보가 작성되어 있다
    - Pre-Project Github 리포지토리 README.md 파일은 아래 정보를 꼭 포함해야 한다
      : 프로젝트 이름
      : 프로젝트 핵심 기능 소개
      : 팀원 소개

 

  • .gitignore
    - gitignore dotfile은 git으로 관리하지 않는 파일의 모음이다
    - 주로 기록되는 파일은 다음과 같다
      : 개인이 따로 관리해야 하는 중요한 secret token
      : 다른 동료와 공유할 필요가 없는 설정 파일
      : 그 외 공유할 필요 없는 파일
    - gitignore에 기록한 파일은 git이 컨트롤 하지 않는다
    - push 할 경우에도 github 리포지토리에 push되지 않는다

 

  • LICENSE
    - 해당 코드의 라이센스를 표기한다
    - 깃허브에 public하게 공개된 리포지토리도 라이센스에 따라서 사용을 할 수도 있고, 하지 못 할 수도 있다
    - 회사에서 사용하는 코드는 private으로 관리하고, 외부에 공개하지 않아 라이센스 정보를 따로 표기하지 않기도 한다
    - 만약에 회사에서 작성하는 코드가 public으로 공개된다면, LICENSE를 명확하게 표기해야 한다

 

 2) 프로젝트 관리에 활용할 수 있는 Github 기능

▶ 이슈 및 풀 리퀘스트 템플릿 정보 : https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/about-issue-and-pull-request-templates 

 

About issue and pull request templates - GitHub Docs

After you create issue and pull request templates in your repository, contributors can use the templates to open issues or describe the proposed changes in their pull requests according to the repository's contributing guidelines. For more information abou

docs.github.com

  • Issue
    - 프로젝트에 새로운 기능을 제안하거나, 버그를 찾아 제보하는 등 프로젝트의 이슈를 의미한다
    - Pre-Project에서는 Issue를 하나의 칸반 티켓처럼 사용한다
    - 세부 설정 기능
     : Assigness : 해당 태스크를 맡은 사람을 지정할 수 있으며, assign yourself를 누르면 자신의 태스크로 만들 수 있다
     : Labels : 태스크 카드에 라벨링을 한다
     : Projects : Projects를 지정한다
     : Milestone : Milestone을 지정다.

 

  • Milestone
    - 이정표의 역할 및 태스크 카드(Issue)를 그룹화하는 데 사용한다
    - Milestone에 연결된 태스크 카드(Issue)가 종료되면 Milestone마다 진행 상황이 업데이트 된다
    - Milestone 기능을 통해 연관된 이슈의 추적과 진행 상황을 파악할 수 있다
    - Pre-Project에서는 Bare Minimum, Advanced Challenge, Nightmare를 표시하기 위해 사용한다

 

  • Pull Request
    - 자신이 작업한 내용을 중요 git branch에 합칠 수 있는지 확인하는 요청이다
    - Github에서는 Pull Request에서 커밋한 코드를 별도로 선택하여 해당 부분에 코멘트를 작성할 수 있다

 

  • Project
    - Github 내에서 업무 관리를 해줄 수 있도록 지원하는 기능이다
    - Pre-Project에서는 이 Project 기능을 이용하여 칸반 보드를 생성하고, 칸반으로 Pre-Project의 업무 흐름을 관리한다

 

3. 칸반

  • 팀과 조직이 작업을 시각화하고, 업무의 병목 현상과 리소스 낭비를 해결하는 업무 관리 방법이다

trello : https://trello.com/ 

 

Manage Your Team’s Projects From Anywhere | Trello

Trello cards are your portal to more organized work—where every single part of your task can be managed, tracked, and shared with teammates. Open any card to uncover an ecosystem of checklists, due dates, attachments, conversations, and more.

trello.com

monday.com : https://monday.com 

 

새로운 업무 방식 을 위한 플랫폼

monday.com work OS는 누구나 업무를 수행하는 데 필요한 툴을 만들 수 있는 개방형 플랫폼입니다.

monday.com

 Asana : https://asana.com/ko 

 

온라인에서 팀의 업무, 프로젝트, 작업 관리 • Asana

언제 어디서나 Asana로 작업하세요. Asana를 활용하여 근무하는 장소와 관계없이 팀과 조직 전체가 최종 목표, 프로젝트, 작업에 집중할 수 있습니다.

asana.com

▶ 작업 관리를 위한 10가지 최고의 온라인 칸반 보드 프로그램
 : https://gitmind.com/kr/kanban-board-online.html 

 

2022년 상위 10개 무료 칸반 보드 프로그램 및 프로젝트 관리 툴

이 게시물에서는 작업을 효과적으로 구성하는 데 도움이되는 최고의 무료 칸반 보드 프로그램에 대해 알아 봅니다.

gitmind.com

 

 1) 칸반 보드를 통한 시각화

  • 칸반 보드는 업무를 하나의 티켓으로 표현하고, 업무 단계를 하나의 열로 표현한다
  • 새로운 업무가 생기면 가장 왼쪽 열에 업무가 쌓이고, 업무가 잘 진행되면 가장 오른쪽으로 전달되어 쌓이는 방식이다
  • 어떤 업무가 현재 어느 업무 단계에 있는지 한눈에 파악할 수 있다

 

 2) Work In Progress(WIP)로 진행중인 업무 제한 및 흐름 관리

  • WIP는 현재 진행하고 있는 작업을 의미한다
  • 칸반에서는 각 업무 단계에 WIP 제한(WIP limit)을 둘 수 있다
  • WIP 제한이 2이면, 두 개 이상의 카드가 해당 열에 위치할 수 없게 됩니다. 아래 예시의 경우 하나의 업무를 추가할 수 있습니다.
  • 업무 흐름 관리
    - 업무가 과도하게 쌓이지 않는 원활한 업무 흐름을 위한 관리이다
    - 모든 팀원이 100%의 리소스를 사용하고 있는 상태에서 계속 새로운 업무가 쌓이게 되면, 업무가 과부하되어서 업무 효율이 나지 않게 된다
    - WIP 제한은 업무의 과부하를 조절해 주는 역할을 한다
  • 진행중인 업무 제한
    - 개발 프로젝트는 타 업무와 달리 맥락 전환(context switching)이 없이 집중할 수 있어야 업무 효율이 증가한다
    - 제조업 업무는 기계 가동률을 높이거나 일부 생산을 아웃소싱하면 짧은 기간 내에 산출물을 만들 수 있다
    - 개발 업무는 지식 업무에 해당하기 때문에 야근을 하거나 인원을 많이 투입한다고 좋은 퀄리티의 산출물이 빠른 시간 안에 나오지 않는다
    - 소통이 많이 필요한 개발 프로젝트의 경우 인원수가 늘어난다고 소요 기간이 확연하게 감소하지 않는다
    - 한 번에 처리하는 업무의 양을 최소화하여 팀원이 한 번에 여러 업무를 동시에 진행해서 생기는 맥락 전환의 문제를 방지한다
    - 업무 흐름을 적당하게 유지시켜 업무가 순차적으로 처리될 수 있도록 한다

 

 3) 명확한 팀 정책 설정

  • 칸반을 잘 활용하기 위해서는 정책을 설정한다
  • 칸반의 열을 정의, WIP limit, 회의 일정, 의사결정 방법 등에 대한 명확한 정책을 수립해야 한다
  • 정책 수립 시에는 팀원이 모두 모여서 합의를 하고, 합의한 정책은 향후 업무 진행 상황에 따라서 팀원이 모여 언제든지 조정할 수 있다
  • 프로젝트 시작하기 전에 정하면 도움이 되는 정책은 아래와 같다
    - 회의 시간 및 해당 회의에서 논의할 내용을 정한다
    - 팀원 간 소통 원칙을 정한다
    - 칸반 티켓을 언제, 어떻게, 누가 추가할 것인지를 정한다
    - WIP 제한을 정한다

 

 4) 회의와 리뷰를 통한 업무 개선

  • 칸반을 사용하는 경우에는 일반적으로 데일리 칸반 회의와 주간 보충 회의를 진행한다
  • 데일리 칸반 회의는 업무의 상태 및 흐름을 파악하고 확인한다
    - 구현하고자 하는 기능을 좀 더 빠르게 구현할 수 있는 방법을 협의한다
    - 업무가 끝난 인원이 다른 업무를 처리할 수 있는지 확인하고 진행한다
  • 주간 보충 회의는 칸반 보드에 추가할 업무가 있는지를 확인하고, 다음 주에 어떤 업무를 할 것인지 정한다
    - 프로젝트 진행 상황이 매우 원활하여, 추가로 구현하기로 했던 기능을 구현할 수 있게 된 경우에는 주간 보충 회의를 통해 해당 기능 구현 티켓을 칸반 보드에 추가할 수 있다
  • 추가로 격주, 혹은 월간으로 KPT 회고를 진행할 수도 있다
    - 지금까지의 진행 상황에 대해서 솔직하게 회고하고, 개선점을 찾을 수 있다

 

 5) 칸반 실천법

  • 칸반의 6가지 실천법을 정리하면 아래와 같다
    1. 업무 시각화
    2. 진행 중인 업무 제
    3. 흐름 관리
    4. 명확한 프로세스 정책
    5. 피드백 루프 구현
    6. 협력적인 개선, 실험적인 발전

 

4. 레포지토리 내에 프로젝트 생성

 1) 프로젝트 생성

  • 레포지토리 > Project > Add project 를 클릭한다
  • 기존에 프로젝트가 있으면 선택하고, 없응면 새로 생성을 클릭한다

  • Table 또는 Board 를 선택한다
    - 설정창이 뜨지 않으면 View1 옆의 아래 화살표를 클릭하면 보인다

  • 오늘쪽 상단의 '...'을 클리한 후 Setting를 클릭한다

  • 프로젝트의 이름과 설명을 작성하고 Save 버튼을 클릭한다

  • 설정 페이지 왼쪽 탭에 Manage access 를 클릭한다
    - Base Role을 필요에 따라 선택하여 변경한다
    - 함께할 팀원이 있다면 권한을 부여하고 초대한다

 

 2) 프로젝트에 Issue 연결

  • '+' 옆 칸에 '#'을 작성하여 해당 레포지토리를 찾아 선택한다
  • 레포지토리 선택 후 옆 칸을 클릭하면 issue나 PR을 선택할 수 있다

  • 리포지토리에 작성한 issue들이 project의 추가된 것을 확인할 수 있다
  • 각 이슈들의 상태를 설정할 수 있다
    - 기본적으로 Todo , In Progress , Done 세가지 상태가 있다
  • '+'를 클릭하여 Labels, PR, Reviewers, Repository, Milestone등 새로운 칼럼도 넣을 수 있다

  • 그룹으로 나눠서 볼 수도 있다
    - 그룹 아이콘을 클릭한다
    - Assignees, Status, Milestone, Repository 등으로 나눌 수 있다
  • Board를 선택하면 칸반보드로 볼 수 있다

 

'Git' 카테고리의 다른 글

GitHub - Git branch  (0) 2022.08.22
Git - 명령어 / HELP  (0) 2022.08.01
Git(global information tracker)  (0) 2022.07.10

ItsWard/GitHub-getting-started: 📝GitHub를 시작해보자

 

GitHub - ItsWard/GitHub-getting-started: 📝GitHub를 시작해보자

📝GitHub를 시작해보자. Contribute to ItsWard/GitHub-getting-started development by creating an account on GitHub.

github.com

1. Git(global information tracker)

  • 파일의 버젼관리를 용이하게 할 수 있는 프로그램이다
  • 개발자 혹은 동료들 간의 협업 시 파일의 수정, 보완이 용이한 프로그램이다
  • git download : Git - Downloading Package (git-scm.com)

 1) Git 장점

  • 분산형 버전 관리 시스템으로 소스코드를 효과적으로 관리하기 위해 개발되었다
  • 소스 코드가 변경된 이력을 쉽게 확인할 수 있다
  • 현재 소스 코드와 원하는 시점에 저장된 버전의 소스 코드를 비교하기가 용이하다
  • 특정 시점에 저장된 소스 코드로 되돌아갈 수도 있다
  • 협업자와 소스 코드 파일이  충돌할 경우에 경고 메시지를 출력한다
  •  백업용 복사본 파일을 생성할 필요가 없다

 

2. Git repository(저장소)

 1) 특성

  • Git repository는 파일이나 폴더를 저장하는 공간이다
  • 비슷한 파일의  내용이 일부라도 다르면 각각의 파일로 인식하고 저장한다
  • 파일의 변경 이력을 구분하여 저장한다
  • 일반적인 폴더를 Git에서는 작업트리(Work Tree)라고 한다

 2) 저장소 종류

  • 원격 저장소(Remote Repository)
    - 파일을 원격 저장소 전용 서버에서 관리한다
    - 여러 명이 협업을 하는 경우 파일을 공유하기에 적합하다
  • 로컬 저장소(Local Repository)
    - 내 PC에 파일을 저장하는 공간이다
  • 내 PC에서 작업한 파일을 로컬 저장소에 1차로 저장한 후 공개 시점에서 원격 저장소로 파일을 업로드한다
  • 협업자는 원격 저장소에 있는 파일을 본인의 로컬 저장소로 다운로드 할 수 있다

 

 3) 저장소 생성 방법

  • 원격 저장소를 새로 생성할 수 있다
  • 원격 저장소를 로컬 저장소로 복사할 수 있다

 

3. 커밋(Commit)

  • 파일이나 폴더의 추가 또는 변경 사항을 작업트리에서 원격저장소로 저장하기 위한 기능이다
  • 커밋을 할 경우 이전에 커밋한 상태부터 현재 상태까지의 변경 이력이 생성된다
  • 커밋은 최근 기록부터 순차적으로 저장되며, 저장된 기록을 시간까지 확인할 수 있다
  • 커밋된 파일에는 영문과 숫자로 이루어진 고유의 이름이 생성된다(40자)
  • 커밋을 할 경우에는 필히 나중에 확인할 수 있는 메시지를 입력해야 한다
    - ex) 'No : 변경 사항' 형식으로 작성하는 것이 좋다
  • 커밋은 작업트리 -> 인덱스 -> 원격 저장소 의 단계로 이루어 진다
  • 인덱스는 가상의 저장 공간을 의미한다

  • Git은 내부적으로 3가지 종류의 작업 영역으로 동작한다
     1) working directory
       - 작업을 하는 프로젝트 디렉토리를 의미한다
     2) staging area
       - git add를 한 파일들이 존재하는 영역이다
       - commit 을 하면 staging area에 있는 파일들만 commit 에 반영되고 대기한다
     3) repository
       - working directory의 변경 이력들이 저장되어 있는 영역이다
       - commit 된 파일들이 저장되는 영역이다

4. Git 설치

 1) 아래 사이트에서 Window용 Git을 다운로드 한다

 

Git for Windows

Git for Windows focuses on offering a lightweight, native set of tools that bring the full feature set of the Git SCM to Windows while providing appropriate user interfaces for experienced Git users and novices alike. Git BASH Git for Windows provides a BA

gitforwindows.org

  • 다운받은 파일을 실행하고 순차적으로 설치한다

 2) Git 설치 확인

  • git 설치 후 Git BASH를 실행하여 간단히 확인해 본다
  • 탐색기에서 파일명을 클릭한 후 마우스 우측버튼을 눌러 나오는 gitbash here를 실행하면 해당 파일 위치에서 작업을 시작할 수 있다

  • got --version 으로 git 설치 버젼을 확인해 본다

  • gitbash > 우클릭 > 메뉴 > option > Text 에서 설정을 Local변경하면 한글로 패치할 수 있다

 

 3) 최초 설정

  • Git 계정과는 별개로 Git 프로젝트에서 사용할 사용자 이름과 이메일 주소를 설정한다
  • commit 을 하기 전에 작성자의 이름과 email을 필히 설정해 주어야 한다
  • Git에 commit을 실행한 작성자를 기록하기 위한 설정이다
  • 설정을 통해 협업 시 누가 commit 한 파일인지 확인할 수 있다
  • 이름과 이메일은 각각의 프로젝트를 시작할 때 변경하여 적용할 수 있다

  • 설정이 되었는지 확인해 본다

  • 기본 브랜치를 main으로 변경하여 준다

  • 아래는 config 관련 명령어이다...참조

config 관련 명령어

 

4. Git 프로젝트 생성

 1) 로컬 저장소 생성

  • 생성하고져 하는 위치에 폴더를 만든다
  • 탐색기에서 우클릭하여 연관 프로그램으로 이동한다
     - GitBash / IntelliJ / VSCode 등등 

  • 해당 폴더 위치에서 시작하게 된다

 2) Git 관리하기

  • Git이 관리하도록 git init 명령을 입력하면 .git 이라는 폴더가 새로 생성되면서 관리가 시작된다
  • .git 폴더는 탐색기에서도 볼 수 있는데 혹시 안보이면 탐색기 옵션에서 숨긴폴더를 해제하면 볼 수 있다
  • .git 폴더에는 Git에서 관리한 내역이 저장된다
  • .git 폴더를 삭제하면 이전에 관리된 내역이 모두 삭제되고 현재 파일만 남게 된다

 

 3) 파일 테스트

아무 파일이나 2개 정도 만들어서 저장해 본다

git status 명령으로 저장된 내용을 확인하면 Git에서 관리되고 있는 파일의 목록이 나타난다

 

 

5. 특정파일/폴더 배제

  • Git 관리 목록에 포함할 필요가 없는 경우나 포함하지 말아야 할 경우에 사용한다
     - 자동 생성되는 파일
     - 보안에 민감한 파일
  • 폴더 안에 .gitignore 파일을 생성한다

  • .gitignore 파일에 숨기고져 하는 파일을 작성한다
    - .gitignore 파일에 작성된 파일은 Git의 관리 목록에서 제외된다 
    - '*' 전체, '이름/'이름 폴더 전체 숨김 표시가 가능하다 
숨기기 전 목록 secrets.yaml 파일 숨김
  • 일반 코드 프로그램에서는 파일 생성 시 .gitignore 파일을 자동으로 생성하고 제외 항목들을 포함하고 있다

 

6. Git 파일 관리

 1) git add

  • 업로드 할 파일을 지정한다
    - git add Test1.java

  • Test1.java 파일이 Changes to be committed 대기 중으로 변경된다
  • git add . 으로 전체를 지정할 수 있다

 

 2) git commit

  • git commit 를 입력 후 실행한다
  • VSCode 에디터가 열리면서 아래와 같은 화면이 출력된다
    - 1번 줄에 저장하고 싶은 메시지를 작성 후 저장하고 파일을 빠져 나온다

  • 위와 같은 에디터 표시를 없애고 빠르게 진행하기 위해서는 git add -m "메시지" 로 실행한다
  • 작성한 메시지가 표시되고 3개의 파일이 change 되었다고 표시된다

  • git.status를 입력해도 commit 대상이 없다고 확인된다

  • git.log 명령을 실행하면 메시지, commit 실행한 시간, commit 고유번호를 확인할 수 있다

 

 

※ 에디터가 지정되어 있지 않으면 아래와 같이 출력된다
- i 를 입력하면 맨 위 상단에 커서가 이동하면서 code 작성이 가능해 진다
- 저장할 메시지를 작성 후 ESC를 누른다
- :q(저장하지 않고 종료) , :q!(저장하지 않고 강제 종료) 를 하면 둘 다 저장하지 않고 나오게 된다
- 저장을 해야 commit가 진행되므로 :wq 를 작성 후 Enter 한다

 

 3) 파일 변경 후 commit

  • Test2 파일을 삭제하고 Test3 파일을 추가, Test1 파일은 내용 변경을 한 후 git.status로 확인해 본다

  • git diff 명령으로 변경 내역을 더 자세히 알아볼 수 있다
    - Test3은 신규 생성 파일이라서 변경 내역에는 나타나지 않는다

  • 변경 사항을 git add . 으로 업로드 할 파일을 지정한다

  • git commit -m "second file" 로 업로드를 준비한다

  • git log 로 확인해 보면 first, second 모두의 commit 정보를 확인할 수 있다

 

 4) 버젼 관리

  • 파일을 2개 더 추가한 후 commit까지 진행한다

과거의 시점으로 돌아가는 방법은 2가지가 있다
- 과거 시점으로 돌아간 후 이후에 실행되었던 파일들을 모두 삭제하는 경우에는 git reset --hard commit고유번호 를 사용한다
- 과거 시점으로 돌아가지만 이후에 행적은 그대로 두고 추가로 진행되는 경우에는 git revert commit고유번호 를 사용한다

협업 시에는 revert를 사용하는 것이 용이하다

 

 

7. 파일 푸쉬(push)

  • 로컬 저장소에 git 폴더를 만들고 파일을 commit하여 스테이징까지 진행하였다
  • 스테이징 한 파일을 원격 저장소로 업로드 하는 것을 푸쉬(push)라고 한다
  • 푸쉬를 하면 스테이징된 파일이 원격 저장소로 업로드 된다

 

8. 원격 저장소 복제

  • 원격 저장소의 파일을 복제하는 것을 클론(clone)이라고 한다
  • 복제를 하면 원격 저장소에 있는 파일 내용 전체를 다운로드 한다
  • 변경 이력도 함께 복제된다

 

9. 로컬 저장소 업데이트

  • 공유 작업자들이 push로 원격 저장소에 업로드 한 파일을 로컬 저장소로 업데이트 하는 것을 풀(pull)이라고 한다
  • 풀을 하면 변경된 파일 이력을 다운로드 한다

 

 

 

 

10. 레포지토리 만들기

 1) 컴퓨터에 프로젝트 디렉토리 생성하기

  • gitbash에서 'mkdir 디렉토리명'을 사용하여 프로젝트를 저장할 디렉토리를 생성한다
  • 디렉토리는 자신이 작업하고자 하는 드라이브의 위치로 경로 이동 후 생성한다
  • 'cd 디렉토리 경로' 를 사용하여 해당 디렉토리로 진입한다

 

 2) 프로젝트 디렉토리를 관리하기 위한 레포지토리 설정하기

  • 디렉토리의 버젼관리를 위한 설정을 git init 을 사용하여 실행 한다
    - 비어있는 .git 레포지토리를 설정할 수 있다
user@DESKTOP-MJ9EVF2 MINGW64 /d/Spring/be-homework-exception-main (main)
$ git init
Reinitialized existing Git repository in D:/Spring/be-homework-exception-main/.git/
  • ls -al 로 레포지토리 내용을 살펴 본다
    - drwxr-xr-x 1 user 197609     0 Jul  1 14:58 .git/ 이라는 레포지토리가 생성된 것을 볼 수 있다
user@DESKTOP-MJ9EVF2 MINGW64 /d/Spring/be-homework-exception-main (main)
$ ls -al

total 28
drwxr-xr-x 1 user 197609     0 Jun 30 21:48 ./
drwxr-xr-x 1 user 197609     0 Jun 29 15:06 ../
-rw-r--r-- 1 user 197609 12288 Jun 30 21:50 .CONTRIBUTING.md.swp
drwxr-xr-x 1 user 197609     0 Jul  1 14:58 .git/
  • cd .git 으로 경로 이동하여 레포지토리 내부의 디렉토리 내용을 살펴 본다
user@DESKTOP-MJ9EVF2 MINGW64 /d/Spring/be-homework-exception-main (main)
$ cd .git

user@DESKTOP-MJ9EVF2 MINGW64 /d/Spring/be-homework-exception-main/.git (GIT_DIR!)
$ ls -al
total 17
drwxr-xr-x 1 user 197609   0 Jul  1 14:58 ./
drwxr-xr-x 1 user 197609   0 Jun 30 21:48 ../
-rw-r--r-- 1 user 197609  19 Jun 30 22:35 COMMIT_EDITMSG
-rw-r--r-- 1 user 197609   0 Jun 30 19:30 FETCH_HEAD
-rw-r--r-- 1 user 197609  21 Jun 30 19:22 HEAD
-rw-r--r-- 1 user 197609 130 Jul  1 14:58 config              //프로젝트별 구성 옵션이 포함
-rw-r--r-- 1 user 197609  73 Jun 30 19:22 description
drwxr-xr-x 1 user 197609   0 Jun 30 19:22 hooks/
-rw-r--r-- 1 user 197609 249 Jun 30 22:35 index
drwxr-xr-x 1 user 197609   0 Jun 30 19:22 info/               //Git이 저장하는 위치
drwxr-xr-x 1 user 197609   0 Jun 30 19:58 logs/
drwxr-xr-x 1 user 197609   0 Jun 30 22:35 objects/            //데이터베이스의 모든 내용을 저장
drwxr-xr-x 1 user 197609   0 Jun 30 19:22 refs/ 
                  //refs : 해당 데이터(브랜치, 태그, 원격지 등)의 커밋 객체에 대한 포인터를 저장
  • 저장소를 백업하거나 복제하려는 경우 레포지토리를 다른 곳에 복사하면 필요한 거의 모든 것을 얻을 수 있다

 

11. 기존 파일 버전 제어

  • 기존 파일의 버전 제어(빈 디렉토리와 반대)를 시작하려면 해당 파일을 추적하고 초기 커밋을 수행해야 한다
$ git add *.c
$ git add LICENSE
$ git commit -m 'Initial project version'

12. 기존 리포지토리 복제

  • 기존 Git 리포지토리(예: 기여하려는 프로젝트)의 복사본을 얻으려는 경우 필요한 명령이다
  • libgit2 리포지토리의 모든 데이터를 풀다운하고 복사한다
  • 새로 생성된  libgit2 디렉터리로 이동하면 작업하거나 사용할 준비가 된 프로젝트 파일이 표시된다
//git clone <url>
//예를 들어 libgit2가능 라이브러리를 복제하려면 다음과 같이 하면 됩니다.
git clone https://github.com/libgit2/libgit2
  • 저장소를 다른 이름의 디렉토리에 복제하려면 libgit2새 디렉토리 이름을 추가 인수로 지정한다
//git clone <url> 디렉토리명
git clone https://github.com/libgit2/libgit2 mylibgit

 

13. 파일상태 확인

  • 어떤 파일이 어떤 상태에 있는지 확인하는 데 사용하는 기본 도구는 git status명령이다
  • 클론 직후에 이 명령을 실행하면 다음과 같이 표시된다
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
  • 깨끗한 작업 디렉토리가 있음을 의미한다
  • 현재 있는 지점을 알려준다
  • 현재 지점은 항상 master가 기본값이다

 

14. 파일 커밋(commit)

  • commit 하기 전에 파일을 반영하는 git add 를 먼저 실행한다
    - 스테이징되지 않은 모든 파일, 즉 생성하거나 수정한 파일 중 편집한 이후에 git add를 실행하지 않은 파일은 이 커밋에 포함되지 않고 디스크에 수정된 파일로 남아 있게 된다
    - git add를 하지 않고 commit을 실행하면 'nothing added to comit but ubtrack files present'라는 문구가 나오면서 추적할 파일이 없음을 표시한다
git add 파일명.확장자

 

  • git commit 를 실행하면 편집기가 실행된다
  • 편집기는 보통 vim 또는 emacs에 의해 설정 되지만 git config --global core.editor 를 사용하여 EDITOR를 원하는 대로 구성할 수 있다
  • 편집기가 시작되면 다음과 같은 기본 문구가 표시된다
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
# On branch master
# Your branch is up-to-date with 'origin/master'.
#
# Changes to be committed:
#	new file:   README
#	modified:   CONTRIBUTING.md
#
~
~
~
".git/COMMIT_EDITMSG" 9L, 283C
  • 기본 커밋 메시지에는 주석 처리된 명령의 출력과 맨 위에 빈 줄 하나가 포함되어 있다
  • 주석을 제거하고 커밋 메시지를 입력하여 커밋 내용을 기억하는 데 도움이 되도록 남겨둘 수 있다
  • 편집기를 종료하면 Git은 해당 커밋 메시지로 커밋을 생성한다
  • commit 뒤에 -m 을 사용하여 커밋 메시지를 입력할 수 있다
//git commit -m "메시지"
$ git commit -m "Story 182: fix benchmarks for speed"
[master 463dc4f] Story 182: fix benchmarks for speed
 2 files changed, 2 insertions(+)         //2개 파일, 2줄의 내용이 추가
 create mode 100644 README

 

15. branch 생성

  • branch는 프로젝트 수행 중에 추가적인 작업을 별개로 진행하고 싶을 때 생성하여 저장할 수 있는 별도의 저장 공간이다
  • git branch 브랜치명 으로 생성할 수 있다
  • git branch 로 브랜치 목록을 확인하면 main이 있고 브랜치 add-another가 있는 것을 확인할 수 있다

  • 브랜치로 위치를 이동할 경우에는 git switch 브랜치명 으로 이동한다
    - 오른쪽 끝에 위치가 main에서 브랜치명으로 변경되는 것을 확인할 수 있다

  • 브랜치를 생성과 동시에 위치도 이동할 경우에는 git switch -c 브랜치명 을 사용한다

  • commit 기록을 확인하면 각각의 브랜치 내역만 확인이 가능한다
  • 전체 commit 기록을 확인하기 위해서는 git log --all --decorate --oneline --grahp 명령어를 사용한다
  • 브랜치를 삭제할 경우에는 'git branch -d 브랜치명' 으로 삭제한다
  • 브랜치 이름을 변경할 경우에는 'git branch -m 브랜치명 변경브랜치명' 으로 변경한다

16. branch 병합

  • 브랜치를 유지하면서 개발 기록을 main에 병합할 경우에는 merge 를 사용한다
    - git branch main 으로 이동한다
    - git merge 병합브랜치명 으로 병합한다
    - merge도 하나의 커밋이기 때문에 reset을 사용하여 merge 하기 전 해당 브랜치의 마지막 시점으로 되돌리기가 가능하다
    - 병합 중에 충돌이 발생하면 Git에서 경고를 출력한다
    - 충돌 부분을 상황에 맞게 해결할 수 있다
    - 브랜치 병합을 중단하고져 할 경우에는 git merge --abort 를 사용한다
  • 브랜치를 삭제하면서 개발 기록을 main에 병합할 경우에는 rebase 를 사용한다 
    - git branch 병합브랜치명 으로 이동한다
    - git rebase main 으로 병합한다
    - 병합 전 시점의 main 뒤에 병합브랜치에 있던 커밋들이 이동하게 된다
    - 병합 후에도 main의 시점은 머물러 있기 때문에 git merge 병합브랜치명 으로 시점 이동을 시켜 준다
    - 병합 중에 충돌이 발생하면 Git에서 경고를 출력한다
    - 충돌 부분을 상황에 맞게 해결할 수 있지만 merge와 다르게 각 커밋한 부분마다 해결해 주어야 한다
    - 브랜치 병합을 중단하고져 할 경우에는 git rebase --abort 를 사용한다
    - 완료가 되면 git add . -> git rebase --continue 로 커밋을 진행한다

 

 

'Git' 카테고리의 다른 글

GitHub - Git branch  (0) 2022.08.22
Git - 명령어 / HELP  (0) 2022.08.01
GitHub  (0) 2022.07.10

+ Recent posts