목록Git (7)
Soy's Devlog

작업한 것을 원격에 업로드 하기 위해 pull을 받고 진행하려 했는데 경고 메세지가 보여졌다. pull 은 완료되었다 하여 일단 commit 후 push 를 하였더니 역시나 아래와 같이 거부되었다. push 하려니 pull 을 먼저 수행하라 하고 pull 하려니 에러가 나는 상황...😅 다시 commit reset해 보고 pull시도를 하니 이전에 push한 원격의 파일을 덮어쓴다는 경고가 떴다. 파일을 옮기거나 삭제한 후 다시 병합하면 되겠지만 너무 비효율적이고 여러사람이 함께 사용하는 레파지토리라면 위험한 액션이다. 시도한 것들 You have divergent branches and need to specify how to reconcile them. You can do so by running o..

git 사용 중 특정 명령을 수행 후 다시 취소 시켜야 하거나, 특정 시점으로 이동해야 할 때가 있다. 충돌이 발생할 때에도 유용하게 사용할 수 있는 방법이라 정리해 보았다. git reset //특정파일 하나의 add를 취소 git reset HEAD 파일명 //파일명을 명시하지 않으면 전체 add내역을 취소한다. git reset HEAD 이렇게 add한 작업에 대해 취소하는 방법과 옵션은 간단하다. 커밋을 이미 한 경우에도 취소가 가능하다. //직전커밋 취소 git reset HEAD^ //마지막 n개의 커밋 취소 git reset HEAD~n //원격저장소의 마지막 커밋 상태로 되돌림 git reset --hard HEAD //커밋취소, unstaged상태, working directory에서 삭..

로컬에서 원격에 push를 하려고 하는 중 해당 에러를 만났다. 생각 해보니, 깃에서 레포를 신규로 먼저 생성한 후 로컬저장소를 생성 했는데 로컬에서 작업한 것을 원격에 push하려고 하니 pull을 먼저 수행한 후 진행 하라고 알려주는 것이었다. 원격에 readme.md 파일까지 생성해 놓고 pull을 하지 않은 채 push를 하니 당연히 reject될 수 밖에 😏 git은 로컬저장소와 원격저장소간에 merge를 진행하지 않고 push할 경우 reject 처리를 한다. 1. 서로 관련 기록이 없을 때 git 공식 문서에 따르면 merge 시 공통 조상을 공유하지 않는 기록의 병합을 기본적으로 거부한다고 한다. 각각 독립적인 프로젝트나 저장소를 병합하려 할 때의 기본적인 모습인데 이것을 무시하고 병합을..

최근 원격의 레파지토리를 커밋이력까지 복사해 올 일이 있었는데, 그 과정에서 궁금한 것이 생겨 clone 옵션을 알아봤다. Clone 이란 git에서 clone 은 원격의 레파지토리의 전체나 일부를 로컬로 가져오는 것이다. pull 또한 로컬로 받아오는 것은 맞지만 둘의 차이점은 clone 은 로컬에 기존의 내용이 없을 때 신규로 받아오는 것이고, pull 은 로컬에 존재하는 내용에 추가로 원격의 것을 받아올 때 사용한다. 1. normal (non-bare) git clone 레파지토리URL clone한다고 하면 가장 흔하게 non-bare로 받아오는데 이 경우 가져올 수 있는 것은 아래와 같다. 복사된 모든 태그 원격 브랜치를 추적하는 로컬 브랜치 마스터 (HEAD) 모든 원격브랜치 working t..

실제로 2021.08.13일 부터 토큰 인증방식이 변경되기도 했고 git push, git pull 등 원격에 접근하려 할 때 git 보안정책 상 토큰을 변경해야 하거나 재발급을 할 경우 mac에서의 적용방법을 정리해 보았다. 미리 보안정책을 확인하면 좋지만, git 사용 중 해당 이슈로 인해 터미널 에러를 만나면 바로 적용해 주면 된다..! Git에서 token 발급하기 git 우측상단의 프로필 링크에서 Settings 로 이동한다. 왼쪽 메뉴모음 중 Developer settings 를 클릭한다. Personal access tokens 로 이동해준다. Generate new token 을 클릭하여 신규 토큰 생성 페이지로 이동한다 토큰의 이름을 입력하고, 유효기간을 설정해 주면 되고 scope는 ..

git 버전이 오래되어 iterm에서 업데이트 하고자 brew install git 을 실행하자 아래와 같은 에러가 보였다. Error : homebrew-core is a shallow clone 알고보니 Homebrew가 2020.10월 부터 설치 시 더이상 shallow clone을 생성하지 않는다고 한다. shallow clone이란 git 레파지토리의 이력이 많아지거나 용량이 클수록 clone을 받아오는데 시간이 오래걸리고 스토리지 용량도 많이 필요하니, 레파지토리의 일부 이력만 받아오는 것. 이제 shallow clone 사용할 수 없으니 brew에 해당 내용을 반영해 줘야 한다. 친절하게도 어떤 명령어를 실행해야 하는지 세세하게 에러내용에서 알려주고 있어서 큰 어려움 없이 진행할 수 있었다...

깃 레파지토리 목록을 관리하던 중 위치를 바꾸고 싶은 레파지토리가 있었다. 단순 복사를 해버려서 그동안의 히스토리를 잃고 싶지는 않았기 때문에 mirror 옵션을 사용해 이사를 해보았다! 사전에 필요한 것은 옮겨질 레파지토리를 그대로 받을 새로운 레파지토리 이다. 1. New Repository 신규 레파지토리를 생성해 준다 2. 로컬에 Clone 으로 내려받기 옮기고자 하는 레파지토리를 로컬에 clone 해 준다. 구글링을 해 보면 대부분 바로 mirror 옵션을 사용 하라는 경우가 대부분인데, mirror 옵션을 통해 clone할 경우 레파지토리의 소스는 가져오지 못한다. mirror 는 working tree에 있는 소스코드는 포함하지 않는 옵션이기 때문이다! 따라서 소스도 받기 위해서 레파지토리 ..