반응형
  • remote branch: 말 그대로 진짜 remote에 있는 거
    • git remote show origin했을 때 나오는 remote branch목록은 진짜 remote인듯, 실시간으로 보여주므로
  • remote tracking branch: remote를 local에 복사해놓은 복사본, 일종의 캐슁이라고 생각할수도 있음
    • git branch -a했을 때 remotes/origin/master로 나오는것들인듯, git fetch나 git remote update하기 전에는 remote에 새로생긴 branch를 보여주지 않는것으로 보아
  • tracking branch: remote tracking을 따라가면서 관리하는 local branch
  • tracking안하는 branch:그냥 local에 만들기만 하고 연결 안시켜놓은애

 

Merge branch 'dev2nd' of http://10.97.24.150:8099/csPortalGroup/csportalfront into dev2nd 
git pull 안받고 commit한 상태에서 pull하면 merge가 되는데 그때 위 커밋메세지로 된  merge commit이 자동생성됨

 

! [rejected]        master     -> origin/master  (non-fast-forward)
remote branch와 remote tracking branch는 항상 fast-forward관계를 유지해야 하는데 그게 깨진 상태에서 git fetch하면 위와 같은 에러 메세지가 나옴

 

git remote update = git fetch --all 과 동일한 효과라고 함

git fetch는 git pull/push와는 달리 tracking하는 전체 branch의 remote와 sync를 맞춤, 근데 여기서 tracking한다는 개념이 아직 헷갈림

 

git pull/push는 특정 branch하나랑만 이루어지는 작업이며 어떤 branch와 작업이 이루어지는지 생략이 된 상태, 어떻게 생략이 되었는지 알기 위해서는 git remote show origin 해봐서 pull/push작업에 대해 각각 어떻게 연결(configured for라고 표현됨)되었는지 알수 있음

참고) remote tracking branch로도 checkout 가능한지 확인해보려고 git checkout origin/master했더니 detached HEAD상태가 됨

 

https://devcamus.tistory.com/9

 

[git] 원격저장소 업데이트 명령어 3가지의 차이점 비교 -git remote update , git fetch , git pull 의 차이.

이전 포스트를 작성하면서 궁금한 점이 생겨서 곧바로 찾아보았다. [git] 새로 만든 원격 브랜치로 checkout이 안될 때. - error: pathspec did not match any file(s) known to git 해결 상황 : 기존 프로젝트를 리팩

devcamus.tistory.com

 

반응형
반응형
반응형
반응형

dev-version이라는 branch를 생성하면서 그 branch 하나만 받아짐, branch가 많다면 그냥 git clone보다 속도 더 빠른듯

그런데 git config -l로 확인해보면 remote.origin.fetch=+refs/heads/[branch]:refs/remotes/origin/[branch]로 되어 있음, 그러면 다른 branch 못 받으므로 remote.origin.fetch+=refs/heads/*:refs/remotes/origin/*로 고쳐줘야 함

그리고 나서 git remote update해야지 다른 branch도 확인가능함, git remote update하기전에는 git branch -a 해봐도 branch하나만 보임

반응형
반응형
fast-forward 사전적 의미로는, (테이프를 틀지 않고) 앞으로 감다, 빨리감다, 되감다, 과거로 돌아가다... 
"fast forward"는 이야기에서 중요하지 않은 부분은 빠르게 생략하고 화자가 말하고 싶은 부분부터 계속 진행할 때 사용하는 표현이에요. 이 표현은 원래 테이프나 VCR 재생기에서 노래나 영화를 생략하기 위한 "fast forward (빨리 감기)" 버튼에서 유래되었어요.

git pull을 할때, pull한 결과가 Fast-forward라는 메세지가 뜰 때가 있음

Fast-forward라는 것은 한쪽에서는 수정이 되었지만 한쪽은 전혀 수정이 없기 때문에 merge할 때 새로운 병합된 커밋이 생성되는 것이 아니라 그냥 포인터의 위치만 더 최신으로 옮겨지는 개념

양쪽에서 수정을 했다면 새로운 커밋번호가 생성이 될 것임, but Fast-forward시에는 그렇지 않고 head가 이동만 하는 것이므로 새로운 커밋번호 자체가 생성되지 않음

  • fast-forward merge: 충돌날일 없음
  • 3-way merge: fast-forward가 아니면 3-way, 충돌가능성 있음
반응형
반응형
반응형
반응형

내 remote와 실제 원격의 remote의 일치점이 아예 없으면 

git fetch, git pull, git remote update 어떤 걸 시도해도 다음과 같이 에러가 남

 ! [rejected]        master     -> origin/master  (non-fast-forward)

 

  • 여기서 중요한건 fetch도 에러가 난다는 것 fetch도 일종의 merge? origin/remotes와 내 로컬의 remote를 merge하는 것???? 근데 정상이라면 항상 fast forward merge만 이루어짐. 내가 remote를 수정할 일이 없기 때문
  • fetch는 remote의 최신을 FETCH_HEAD라는 이름으로 가져오는 것인데, 기존 remote와 상관없이 별도로 가져오는 것은 아님- 만약 그렇다면 이렇게 non-fast-forward라는 이름으로 에러가 날 일이 없음
  • 즉 fetch는 fast-forward merge만 하는 merge라는 것! 근데 fast-forward가 안되니까 non-fast-forward error발생

 

만약 누군가가 push --forced option을 사용해서 push를 했다면 그걸 pull받는 입장에서는 위 에러가 날수 밖에 없음

--force push를 했다는 것 자체가 이전에 순차적으로 쌓인 history를 무시하고 다른 걸 넣은 것이므로

 

https://velog.io/@rain98/%EA%B9%83%ED%97%88%EB%B8%8C-non-fast-forward-%EC%97%90%EB%9F%AC-%ED%95%B4%EA%B2%B0%ED%95%98%EA%B8%B0

 

깃허브 non-fast-forward 에러 해결하기

깃허브 non-fast-forward 에러 해결하기

velog.io

 

반응형
반응형

author/committer로 남는 이름 등의 설정은 git config 명령어 통해서 확인/변경 가능

git pull/push 등 권한은 git Repository와 인증 정보(user, password 등 인증 방식에 따라 필요한 인증정보는 달라질 수 있음)가 있어야 함

설정확인

  • git 설정 전체 확인하기: git config -l 혹은 git config --list
  • git 설정 이름만 확인: git config --global user.name
  • git 설정 이멜만 확인: git config --global user.email

git config manual

git config한 것 삭제하기: --global을 빼고해도 되지만 그러면 완전히 삭제안될수 있음

  • git config --unset --global user.name
  • git config --unset --global user.email

git config 설정

  • name 수정: git config (--global) user.name '이름'
  • mail 수정: git config (--global) user.name '이멜'
  • 전체 수정: git config (--global) -e = git config (--global) --edit 

윈도우 환경에서 git 자격증명 변경

  1. 제어판 - 사용자 계정 - 자격 증명 관리자
  2. Windows 자격 증명
  3. 일반 자격 증명
  4. git 관련 자격 증명 편집

참고: https://yunseul-light.blogspot.com/2017/08/github-windows-git.html

반응형
반응형

git branch -a로 remote branch 안보이면 

1) git ls-remote origin 보이는지 확인후 보이면

2) git config --edit 후에 [remote "origin"] fetch=+refs/heads/*:refs/remotes/origin/* 로 변경

3) 수정확인: git config remote.origin.fetch

 

확인했더니 원래 아래처럼 되어있었고 수정후 정상동작함

[remote "origin"]
url = http://10.97.24.150:8099/csPortalGroup/csportalapi.git
fetch = refs/heads/master:refs/remotes/origin/master -> +refs/heads/*:refs/remotes/origin/

 

https://youngwonhan-family.tistory.com/entry/Git-Remote-%EB%B8%8C%EB%9E%9C%EC%B9%98-%EC%95%88%EB%B3%B4%EC%9D%BC-%EB%95%8C-%ED%95%B4%EA%B2%B0%EB%B0%A9%EB%B2%95

 

Git - Remote 브랜치 안보일 때 해결방법

remote 신규 브랜치 안보일 때 git branch -a 명령으로 remote에 생성한 신규 브런치가 안보일 때, git ls-remote origin 명령으로 확인한다. 신규 브랜치가 보이는지 확인한다. Config 수정 Config 수정은 아래 두

youngwonhan-family.tistory.com

 

반응형
반응형
반응형
반응형

git push origin HEAD:master

현재 branch의 HEAD Commit까지의 변경사항origin이라는 이름을 갖는 원격 저장소master branch에 전송하라

반응형

+ Recent posts