본문 바로가기

Git/Git & CodeCommit & Bitbucket

<CodeCommit> git checkout <branch_name>

# Git checkout 과정 알아보기

- vs code에서 git checkout을 통해 local 저장소를 변경한다.

1. git branch 확인

- git branch 명령어로 조회해보면 2개의 branch를 확인할 수 있다.

$ git branch
  main
* master

2. git checkout을 통한 local 저장소 변경

git checkout main
Switched to branch 'main'

git checkout master
Switched to branch 'master'

3. branch 별 폴더구조 확인

- main branch의 폴더구조는 아래와 같다.

- master branch의 폴더구조는 아래와 같다.

만약 아래와 같은 오류 메세지가 발생하면 git add -A로 add 명령어를 수행한다.

$ git commit -m "testing"
On branch test
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   ../src/App.js

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        ../hello.txt
        ../test_test.txt

no changes added to commit (use "git add" and/or "git commit -a")

 

- 신규 브랜치를 생성 후 파일들을 생성해보자.

git checkout -b test

git add -A

git commit -m "message"

git push orgin test

생성한 branch로 이동하고 파일을 확인한다.

신규로 생성한 test_test.txt. 파일과 hello.txt 파일을 확인 할 수있다.

- branch 별 폴더구조를 확인 하면, branch를 변경할 때마다 파일 리스트가 변하는것을 볼 수 있다.

4. 시나리오 테스트

- 테스트

① AWS CodeCommit에 수동으로 임의의 branch를 생성한다. 부모 branch로 main을 지정하면, main에 있는 파일들을 가지고 브랜치를 생성한다. (임의의 branch명을 zzanggu로 하자.)

그러면 AWS CodeCommit에는 zzanggu라는 브랜치가 main 브랜치의 파일들과 함께 생성 되어 있을것이다.

② local cmd에서  git checkout -b zzanggu 라고 입력하여 새로운 branch를 생성한다.

그러면 local에도 zzanggu라는 브랜치가 있을것이고, AWS CodeCommit에도 zzanggu라는 브랜치가 있을것이다.

하지만 해당 브랜치의 파일리스트는 다를것이므로, 로컬에서 git push origin zzanggu 명령어를 실행하면 현재 local zzanggu branch의 파일들이 AWS CodeCommit의 zzanggu branch와 동기화 되어 있는것을 확인 할 수있다.

③ zzanggu.txt 파일을 생성하고, 파일 구조를 확인해보자.

(아래 이미지에서 브랜치를 변경할때마다 바뀌는 폴더 구조를 확인할 수 있다.)

5. 결론

branch별로 저장소의 리소스가 다른것을 확인 할 수 있다. (너무 당연한건가.)

- 추가로 Git과 같이 AWS CodeCommit에도 브랜치와 브랜치를 합칠수 있다. 아래의 과정을 통해 병합이 가능하다.

위의 풀요청 생성에서 master 브랜치를 main 브랜치와 병합 즉 합칠수 있게 된다. 이 과정에서 충돌 이라고하는 문제가 발생할 수 있고, 충돌을 해결하기 위해서는 코드 정리가 필요하다.