Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

image-20240809-033849.pngImage Added

Table of Contents

1. Git 프로세스 개요

...

2. Git 아키텍처 개요

...

3. 소스 가져오기 : git clone

image-20240808-012930.png

image-20240808-013010.png

소스를 clone하고 해당 디렉토리로 이동한다.

...

Code Block
ADO-git-handson# git clone https://zerobig-devops4demo@dev.azure.com/zerobig-devops4demo/202408_AzureDevOps_Git_Demo/_git/202408_AzureDevOps_Git_Demo 20240808_git_handson
Cloning into '20240808_git_handson'...
Password for 'https://zerobig-devops4demo@dev.azure.com':
warning: You appear to have cloned an empty repository.
ADO-git-handson# cd 20240808_git_handson/
ADO-git-handson# ls -rlht
total 0
ADO-git-handson#

4. git 명령 맛보기 : add/commit/push 실행하기

파일을 생성하고 커밋 후 리모트로 푸시한다.

Code Block
vi README.md
git status
git add .
git commit -m "First Commit"
git status
git push

...

Code Block
ADO-git-handson# git log
commit 18c1fe6382799469b6e433d6269021dddd77a760 (HEAD -> master, origin/master)
Author: Zerobig <zerobig.kim@gmail.com>
Date:   Thu Aug 8 10:35:48 2024 +0900

    First Commit
ADO-git-handson#
ADO-git-handson#
ADO-git-handson# git log --oneline
18c1fe6 (HEAD -> master, origin/master) First Commit
ADO-git-handson#

5. 새로운 브랜치 생성하여 작업하기

현재 브랜치를 확인하고 새로운 브랜치를 생성하여 작업을 준비한다.

...

Info

HEAD 포인터

HEAD현재 브랜치를 가리키는 포인터이며, 브랜치는 브랜치에 담긴 커밋 중 가장 마지막 커밋을 가리킨다. 지금의 HEAD가 가리키는 커밋은 바로 다음 커밋의 부모가 된다. 단순하게 생각하면 HEAD는 *현재 브랜치 마지막 커밋의 스냅샷*이다.

image-20240808-051227.png

6. Pull Request 수행하기

Azure Repo > Branches로 이동하여 Create a pull request를 선택한다.

...

Info

참고

현재 시나리오에서는 간단히 하기 위해서 본인이 직접 Pull Request를 요청하고 처리하지만 실제로는 권한 있는 검토자를 지정하고 해당 검토자를 통해 코드 검토 및 확인을 받아야 한다.

Pull Request를 요청하게 되면 Reviewer에게 요청이 전달되며 다음과 같이 Files 탭에서 변경사항을 확인하고 관련 Comment를 남길 수 있다.

7. Brach 전략 수립하기

Git 브랜치 전략 채택

현재 master 브랜치 내의 코드는 쉽게 접근하여 코드 변경을 수행할 수 있는 상태이므로 이에 대한 보완이 필요하다. 소위 “Git 브랜치 전략”업데이트 할 수 있는 보안적으로 취약한 상태이다.

...

이러한 개념을 확장하고 모순을 피하는 전략을 통해 팀은 일관되고 따르기 쉬운 버전 제어 워크플로를 얻을 수 있다.

Git 브랜치 전략 구성

Azure Repo > files로 이동하여 master 브랜치에서 colors.txt를 선택하고 Edit을 선택한다.

...

이제 구성된 환경을 토대로 코드 변경 및 Pull Request를 통한 master 브랜치로의 병합을 시도해 보겠다.

Git 브랜치 전략 구성 증

소스 현행화

터미널로 이동하여 다음 명령을 통해 feature 브랜치로의 소스를 현행화 한다.

...

Code Block
ADO-git-handson# cd 20240808_git_handson/
ADO-git-handson# git branch
  feat-1-colors
* master
ADO-git-handson# git checkout feat-1-colors
Switched to branch 'feat-1-colors'
Your branch is up to date with 'origin/feat-1-colors'.
ADO-git-handson# git fetch --dry-run
Password for 'https://zerobig-devops4demo@dev.azure.com':
remote: Azure Repos
remote: Found 3 objects to send. (0 ms)
Unpacking objects: 100% (3/3), 295 bytes | 5.00 KiB/s, done.
From https://dev.azure.com/zerobig-devops4demo/202408_AzureDevOps_Git_Demo/_git/202408_AzureDevOps_Git_Demo
   3e53445..28bab0f  master     -> origin/master
ADO-git-handson# git pull origin master
Password for 'https://zerobig-devops4demo@dev.azure.com':
From https://dev.azure.com/zerobig-devops4demo/202408_AzureDevOps_Git_Demo/_git/202408_AzureDevOps_Git_Demo
 * branch            master     -> FETCH_HEAD
Updating b5ecbfd..28bab0f
Fast-forward
 colors.txt | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
ADO-git-handson# cat colors.txt
Red
Green
Blue
Pink
ADO-git-handson# git branch
* feat-1-colors
  master
ADO-git-handson#
ADO-git-handson# git log --oneline --graph
* 28bab0f (HEAD -> feat-1-colors, origin/master) Updated colors.txt
*   3e53445 (master) Merged PR 57: Add colors.txt
|\
| * b5ecbfd (origin/feat-1-colors) Add colors.txt
|/
* 18c1fe6 First Commit
ADO-git-handson# 

소스 수정 및 commit, push

colors.txt 파일을 열어 Yellow를 추가하고 저장한 후 git add, commit 및 push를 수행한다.

...

Code Block
ADO-git-handson# vi colors.txt
ADO-git-handson# cat colors.txt
Red
Green
Blue
Pink
Yellow
ADO-git-handson# git add .
ADO-git-handson# git status
On branch feat-1-colors
Your branch is ahead of 'origin/feat-1-colors' by 2 commits.
  (use "git push" to publish your local commits)

Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   colors.txt

ADO-git-handson# git commit -m "Update colors.txt adding color 'Yello'"
[feat-1-colors dc46381] Update colors.txt adding color 'Yello'
 1 file changed, 2 insertions(+), 1 deletion(-)
ADO-git-handson# git push
Password for 'https://zerobig-devops4demo@dev.azure.com':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Delta compression using up to 8 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 326 bytes | 21.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote: Analyzing objects... (3/3) (6 ms)
remote: Validating commits... (1/1) done (0 ms)
remote: Storing packfile... done (29 ms)
remote: Storing index... done (55 ms)
To https://dev.azure.com/zerobig-devops4demo/202408_AzureDevOps_Git_Demo/_git/202408_AzureDevOps_Git_Demo
   b5ecbfd..dc46381  feat-1-colors -> feat-1-colors
ADO-git-handson#

Pull Request 작성

리모트 리포지토리를 새로고침하여 푸시 결과를 확인한다.

...