merge와 rebase는 서로 다른 두 개의 commit을 하나로 합치는 행위이다.

아래에서 merge와 rebase에 대해 알아본다. 각 동그라미는 하나의 commit을 뜻한다. 즉, 변경 사항이다. *이 붙어 있는 branch가 현재 선택한 branch임으로 이를 주의 깊게 본다.

* merge

merge의 뜻은 '병합하다, 하나로 합친다.' 이다. 위의 변경은 "git merge bugFix" 명령을 수행한 결과이다. merge나 rebase를 사용할 때 어느 branch가 새로 만들어진 commit을 가리키게 되는지 헷갈릴 때가 있는데 현재 branch를 주어로 하여 명령이 수행된다는 것을 기억하면 헷갈릴일이 없다. *을 보고 현재 branch가 main임을 알 수 있다. C2, C3 두 commit의 변경 사항을 모두 반영한 새로운 commit C4를 생성하고 현재 branch인 main이 가리키도록 한다.

* rebase

merge와 유사하다. 위의 변경은 "git rebase main" 을 수행한 결과이다. 현재 branch는 bugFix이다. 현재 branch인 bugFix가 가리키는 commit C2의 base를 main이 가리키는 C3으로 변경(rebase)한다.

merge, rebase 모두 서로 다른 두 commit의 내용을 합친 새 commit을 생성한다는 점에서 동일한 효과를 가진다. 변경 후의 그림을 보면 rebase는 마치 branch를 여러 개로 분기하지 않고 하나의 branch에서 commit을 계속 수행한 것처럼 보인다. 한 commit의 base를 다른 commit 아래로 변경한다는 개념 때문인데 덕분에 git history가 더 깔끔해 보인다.

'개발 > git' 카테고리의 다른 글

github gist test  (0) 2021.11.25
github token으로 연동해서 command-line으로 push하기  (0) 2021.10.25

github gist를 test 해본다.

저장 후 확인.

'개발 > git' 카테고리의 다른 글

git merge, rebase  (0) 2021.12.11
github token으로 연동해서 command-line으로 push하기  (0) 2021.10.25

이전엔 ssh 방식으로 1. ssh key 생성하고 2. github 로그인후 3. public key를 등록해서 사용했었습니다.

최근에 github을 뒤적이다 token이란 메뉴를 찾았습니다.

* 참고 링크 : https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token

 

Creating a personal access token - GitHub Docs

You should create a personal access token to use in place of a password with the command line or with the API.

docs.github.com

1. github 로그인후 2. token 생성해서 사용할 수 있는 것으로 보입니다.

git push https://<GITHUB_ACCESS_TOKEN>@github.com/<GITHUB_USERNAME>/<REPOSITORY_NAME>.git

push 방법은 위와 같습니다.

* 참고 링크 : https://techglimpse.com/git-push-github-token-based-passwordless/

 

git push using GitHub token [Deprecating password authentication] - Techglimpse

This tutorial explains to git push using GitHub token on the command line instead of the deprecated password based authentication.

techglimpse.com

그런데 token을 생성하고 보면 값이 길어서 매번 push때마다 쓰긴 좀 힘들어 보입니다.

일반적으로 repository이름과 clone 디렉토리 이름이 같음으로 아래와 같이 alias를 등록했습니다.

alias upstream='dirs=($(echo `pwd` | tr "/" "\n"));target=${dirs[-1]};git push https://<GITHUB_ACCESS_TOKEN>@github.com/<GITHUB_USERNAME>/${target}.git'

잘 동작합니다.

'개발 > git' 카테고리의 다른 글

git merge, rebase  (0) 2021.12.11
github gist test  (0) 2021.11.25

+ Recent posts