branch생성시점의 master가 너무 오래돼서, 최신 master의 branch로 업데이트 하고 싶을때

방법1. merge

방법2. rebase

 

타인이 올린 PR의 Files changed를 터미널에서 확인하기

현재 master의 최신이 아닌 PR을 올린사람이 작업을 시작할때의 master가 기준이 됨에 유의

git fetch origin
git diff $(git merge-base origin/master origin/pr-branch-name)..origin/pr-branch-name

 

 

 

타인이 올린 PR을 내 로컬로 가져와서 검토하기

 

예를들어 위와 같은 PR이 올라왔다고 하자.

git fetch origin pull/51/head:bump-twisted 라고 치면 로컬에 "bump-twisted"라고 하는 브랜치가 생성된다(이것은 임의로 지정한 이름이며 생략하면 "pull/51/head"가 된다)

git branch를 해보면 아래처럼 bump-twisted라는 브랜치가 로컬 저장소에 추가된 것을 볼 수 있다.

$ git branch
* master
  bump-twisted

아직은 master를 바라보고 있어 PR의 내용이 로컬저장소에 반영되지 않았다.

git checkout bump-twisted 라고 치면 반영된다.

만약 PR을 올린사람이 merge전에 PR의 내용을 변경했다면

git pull origin pull/51/head:bump-twisted 다시 이렇게 치면 된다. 

 

위 방법대신

git branch -r을 해보면 다음처럼 이미 해당 PR들의 branch 들이 생성되어 있는 것을 볼 수 있는데,

(coin) sevity@raspberrypi:~/workspace/temp/coin_strategy $ git branch -r
  origin/HEAD -> origin/master
  origin/dependabot/pip/tornado-6.3.3
  origin/dependabot/pip/twisted-23.8.0
  origin/dependabot/pip/urllib3-1.26.18
  origin/master

여기서 해당 PR을 확인하고 git pull origin dependabot/pip/twisted-23.8.0:bump-twisted 이렇게 하는 방법도 있다.

 

 

반응형

'Programming > Git' 카테고리의 다른 글

git 초기설정  (0) 2023.06.06
git log  (0) 2019.12.09
git 자주 쓰는 명령어 모음  (0) 2019.09.27
git branch 관련  (0) 2019.04.17
github  (0) 2018.11.07

git commit을 위한 사용자정보 등록. 커밋할때 누가 했는지에 대한 정보를 git이 알게 해줌.

git config --global user.name "Your Name"
git config --global user.email "you@example.com"

 

편집기를 vim으로 설정(초기 값은 nano로 되어 있음)

git config --global core.editor "vim"

 

git push를 위한 인증정보 설정(GitHub는 2021년 8월 13일부터 패스워드를 사용한 인증 방식을 지원하지 않음)

먼저 https방식을 ssh방식으로 변경해주고

git remote set-url origin git@github.com:sevity/repo_name.git

ssh키를 생성해서 github사이트에 등록해준다.

아래처럼 ssh-keygen실행후 ~/.ssh/id_rsa의 내용을 cat해서 복사한다음

 $ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sevity/.ssh/id_rsa):
/home/sevity/.ssh/id_rsa already exists.
Overwrite (y/n)?

github사이트의 세팅에 들어가서 ssh키를 등록해주면 된다.

 

 

반응형

'Programming > Git' 카테고리의 다른 글

git PR(pull request) 관련  (1) 2023.10.27
git log  (0) 2019.12.09
git 자주 쓰는 명령어 모음  (0) 2019.09.27
git branch 관련  (0) 2019.04.17
github  (0) 2018.11.07

git log -p 하면 기본적인 최근 diff화면을 보여준다.


git log -p -2 처럼 -2를 추가하면 최근 2개만 보여줌


git log --graph 하면 왼쪽에 트리그래프 나오면서 merge 상황등을 체크할 수 있음


git log --graph --oneline 하면 commit 하나당 한줄로 표시되어 그래프 merge상황 체크가 좀 더 쉬워짐

반응형

'Programming > Git' 카테고리의 다른 글

git PR(pull request) 관련  (1) 2023.10.27
git 초기설정  (0) 2023.06.06
git 자주 쓰는 명령어 모음  (0) 2019.09.27
git branch 관련  (0) 2019.04.17
github  (0) 2018.11.07

git remote -v 하면 repository url 확인 가능


git remote set-url origin 신규url 하면 repository변경 가능(ip가 바꼈다던가 할 때)



tag관련

git tag 하면 현재 달린 tag들 확인가능


git show v1.4 하면 태그 세부 정보 확인가능


git tag -a v1.4 -m "my version 1.4"  하면 버전 달고 메시지 쓸 수 있음


git tag -a v1.4 9fceb02 -m "my version 1.4" 하면 예전 commit에 대해서도 tag달 수 있음


git push origin --tags 이렇게 명시적으로 tag를 따로 push해줘야만 서버에 반영됨에 주의


git checkout v1.4 하면 해당 tag로 체크아웃 가능(근데 detached HEAD 상태가 된다)


git reflog 하면 detached 된 상태를 로그 히스토리 형태로 볼 수 있다.


git log --graph --decorate $(git rev-list -g --all) 하면 현재 HEAD가 어딘지 graph로도 볼 수 있다.


git checkout - 하면 detached 상태에서 원래 HEAD상태로 돌아간다. (tag 체크아웃은 풀린다)


git checkout -b version14 v1.4 하면 브랜치 만들면서 체크아웃 가능 


반응형

'Programming > Git' 카테고리의 다른 글

git 초기설정  (0) 2023.06.06
git log  (0) 2019.12.09
git branch 관련  (0) 2019.04.17
github  (0) 2018.11.07
--no-ff 옵션  (0) 2017.11.13

여기 참조했습니다.

 

기본개념

 

git branch를 아무런 옵션 없이 실행하면 (local) branch 목록을 보여준다.

1
2
3
4
$ git branch
  iss53
* master
  testing
cs

git branch -r 하면 원격 branch 목록을 보여준다.

 

git branch -d my_branch 하면 로컬에서 해당 branch를 삭제한다.

git push origin :my_branch 하면 원격에서도 삭제한다.

근데 이렇게 해도 git branch -r에서 계속 보인다면 git fetch --all --prune 하면 갱신된다.

 

아래 그림 좋아서 가져옴

단, 아래 그림에서는 Index(=stage)에서 workspace로 돌리는 명령어가 checkout으로 되어 있는데,

git 2.23부터는 "git restore --staged <file>" 이런식으로 restore를 써야함

위 그림에서 index = stage

git pull과 git fetch차이

fetch는 원격 저장소의 변경 사항을 가져오지만 로컬 저장소와의 병합은 수동으로 수행해야 하며,
pull은 변경 사항을 가져오고 자동으로 병합한다.
git pull = git fetch + git merge

 

읽기쓰기 저장소가 다른 경우가 있을수 있다.

git branch -v 해보면 fetch와 push저장소가 나오는데, 보안등의 이유로 각각 다른 설정을 사용할수도 있다.(실제 그런 경우를 본적은 없다)

$ git remote -v
origin  git@github.com:sevity/online_judge.git (fetch)
origin  git@github.com:sevity/online_judge.git (push)

 

git branch 전략

 

반응형

'Programming > Git' 카테고리의 다른 글

git 초기설정  (0) 2023.06.06
git log  (0) 2019.12.09
git 자주 쓰는 명령어 모음  (0) 2019.09.27
github  (0) 2018.11.07
--no-ff 옵션  (0) 2017.11.13

내 github주소는 다음과 같다.

https://github.com/sevity


접속해보면 coin_strategy, ml등 여러가지 repository가 있고.. 예를 들어 이중 ml 이라는 repository를 리눅스 콘솔로 가져오고 싶으면 다음처럼 clone을 한다.


# git clone https://github.com/sevity/ml.git



반응형

'Programming > Git' 카테고리의 다른 글

git 초기설정  (0) 2023.06.06
git log  (0) 2019.12.09
git 자주 쓰는 명령어 모음  (0) 2019.09.27
git branch 관련  (0) 2019.04.17
--no-ff 옵션  (0) 2017.11.13

기본적인 fast forward merge와 3-way merge에 대해서는 http://devyongsik.tistory.com/624 여기를 보면 이해가 쉬웠다.


정리하자면, 둘 간의 차이점은 전자는 merge로 인한 추가 commit node가 발생하지 않는데, 후자는 발생한다는 점이고


이를 좀 더 쉬운말로 표현하면 fast forward merge가 발생할때에는 history를 볼때 branch 딴 것에 대해서 시각적으로 쉽게 확인이 안된다는 점이다.


https://i.stack.imgur.com/FMD5h.png


no-ff 옵션 자체에 대해서는 https://stackoverflow.com/a/21717431/208397 이 링크가 가장 이해하기 쉬웠다.




반응형

'Programming > Git' 카테고리의 다른 글

git 초기설정  (0) 2023.06.06
git log  (0) 2019.12.09
git 자주 쓰는 명령어 모음  (0) 2019.09.27
git branch 관련  (0) 2019.04.17
github  (0) 2018.11.07

+ Recent posts