본문 바로가기

Git

[Git]Git Interactive tutorial

Learn Git Branching 이용

https://learngitbranching.js.org/?locale=ko

 

Learn Git Branching

An interactive Git visualization tool to educate and challenge!

learngitbranching.js.org

강의를 들으면서 interactive Git 을 알게되었고, 연습할 수 있는 시간을 받았다.

git에 대한 명령어들을 GUI 환경으로 직접 확인하면서 연습할 수 있는 사이트이다.

나중에 협업을 위한 툴인 Git의 명령어들을 알게되고, 나중에 도움이 많이 될 것 같으니 해보기로 했다.

 

 

1. Git Commit

git commit은 모든 전에있던 파일과 비교하여 스냅샷을 기록한다.

목표는 git commit을 두번 작성하는 것 같다.

결과는 성공이다!

이러한 화면을 보여주니 굉장히 재미있는 것 같다!!

 

2. Git Branch

깃 브랜치는 "하나의 커밋과 그 부모 커밋들을 포함하는 작업 내역"이라고 설명되어 있는데, 이해가 잘 되지 않아 검색을 해 보았다. "브랜치는 커밋 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것"이라고 git 공식 docs 에 나와있는데, 그냥 하나의 분할 작업을 할 수 있는 공간이라고 생각하면 될 것 같다. 전에있던 작업물을 그대로 복사하여 새로운 환경에 붙여넣고, 거기에서 또다른 작업을 할 수 있도록 만드는 것이라 생각된다.

이번에는 새로운 브랜치를 만드는 것 같다.

나는 branch를 하기 전에 checkout의 명령어에서 -b 옵션을 달면 브랜치가 생기고, 해당 브랜치로 checkout이 되는 것으로 알고 있어 한번 시도해보았다.

바로 성공해버렸다. 원래는 2개의 명령어를 사용한다는데 git branch bugFix로 bugFix 브랜치를 생성 후, git checkout bugFix로 이동하도록 만들어야 했던 것 같다.

 

 

3. Git Merge

이번에는 두개의 브랜치를 합칠 수 있는 방법인 merge 명령어이다.

새로운 bugFix 브랜치에서 작업을 한 새로운 내용을 원래 작업하던 내용에 포함시키는 것이라고 생각한다.

이번 목표는 조금 복잡해보인다.

처음에는 bugFix 브랜치를 생성하고, 새로운 내용을 commit하여 분할하고, main도 내용 작성 후 commit 한다.

그 후 main 브랜치에서 bugFix를 merge 하는것이라고 생각해보았다.

이런 명령어를 사용해 보았고,

결과는 성공이였다!

 

 

4. Git Rebase

"리베이스는 기본적으로 커밋들을 모아서 복사 후, 다른곳에 떨궈놓는 것" 이라고 설명하는데 무슨 소리인지 알아듣지 못하겠다.  인터넷 검색을 해보니 "main 브랜치의 끝에서 시작하도록 전체 bugFix 브랜치를 이동해 main에서 모든 새로운 커밋을 통합한다고 한다. 하지만, rebase는 원본 브랜치에서 각 커밋에 대해 서로운 커밋을 만들어 프로젝트 기록을 다시 작성한다" 라고 하는데.. 직접 설명을 보면서 알아봐야 겠다

참조
https://www.atlassian.com/ko/git/tutorials/merging-vs-rebasing

rebase는 실제로 따로 개발했지만, 복사본을 옮겨 마치 순서대로 개발한 것 처럼 보이도록 하는 것이다.

그 부모에 있었던 브랜치는 rebase하면 이미 rebase된 브랜치로 옮겨진다.

bugFix 브랜치를 commit하고 main 브랜치를 commit한 후에 bugFix를 rebase 해주는 것이라 생각되었다.

코드를 작성하니 성공했다! 성공한 화면은 찍지 못했다 ㅜㅜ

 

그림을 직접 보며 공부하니 이해하기 쉽고 좋았던 것 같다!!

2단계는 다음 글에 올려보도록 하겠다.

'Git' 카테고리의 다른 글

[Git]Git Interactive tutorial6  (0) 2022.08.18
[Git]Git Interactive tutorial5  (0) 2022.08.17
[Git]Git Interactive tutorial4  (0) 2022.08.16
[Git]Git Interactive tutorial3  (0) 2022.08.12
[Git]Git Interactive tutorial2  (0) 2022.08.11