본문 바로가기

개발도구7

git filter-branch 최근에 다른 기업의 지인 개발자들을 만나서 개발 이야기를 하다가 그 기업의 팀장님은 git 마법사라며 filter-branch 같이 들어보지도 못한 git 기능들을 많이 알고 계신다면서 이야기를 듣게 되었다. filter-branch가 과연 뭘까 귀 기울여듣게 되면서 따로 집에 와서 찾아보게 되었다. 참고할만한 블로그도 몇 없어서 유투브 영상을 통해서 공부해보았다. 이를 공유하고자 글을 작성한다. filter-branch가 필요한 상황 2가지 1. 민감한 파일이 실수로 원격 저장소에 push 되었을 때 - 원격 저장소에 실수로 올린 파일을 지우고 다시 push를 하여도, 이전에 파일이 올라왔던 기록을 통하여 파일 확인이 가능해지므로 무용지물이 되어버리는데 이런 상황을 간단히 해결하고 싶을 때 사용함. 2.. 2022. 10. 23.
git cherry-pick (원하는 commit 가져오기) cherry pick이란, 체리 한 바구니에서 제일 좋은 체리만 고르는 것에서 유래한 표현이라고 한다. 일반적으로는 제일 좋은 걸 선별한다는 뜻으로 쓰인다. git을 이용해 코드 관리를 하다보면 커밋을 다른 브랜치에 잘못 하거나, 요구사항이 바뀌어 필요 없는 커밋이 생기거나, 코드 의존성(dependency) 때문에 다른 사람의 커밋 중 일부를 가져와야 하는 경우가 종종 생긴다. git cherry-pick 명령어는 특정한 commit 하나만 콕 찝어서 현재 HEAD가 가리키는 branch에 추가할 수 있게 해준다. 쉽게 말해서 다른 branch에 있는 여러개의 commit들 중, 원하는 commit을 지금 내 branch에 가져와서 commit 할 수 있는 것이다. 참고로 commit을 branch에서.. 2022. 7. 31.
git remote branch 가져오기 Git을 사용하다보면 원격 저장소에 있는 branch를 로컬 저장소로 가져와야하는 경우가 있다. 협업하고 있는 다른 팀원의 branch를 가져와서 작업을 해야하는 경우 혹은 혼자서 2대의 PC를 사용하고 작업파일을 Git으로 관리하는데 branch를 따서 작업하는 경우 등이 여기에 해당한다. 실제 나도 회사에서 두 개의 원격 저장소에서 작업을 하다보니 다른 원격 저장소에서 작업한 branch를 로컬 저장소로 가져와야 하는 경우가 있었다. git checkout -t 명령을 이용하면 원격 저장소의 branch를 가져오는 것과 동일한 기능을 한다. git remote update 먼저 원격 저장소의 브랜치에 접근하기 위해서는 git remote를 갱신해줄 필요가 있다. $ git remote update 원.. 2022. 7. 31.
git remote add (원격저장소 추가) add remote는 로컬 git 저장소에 원격 저장소를 추가하는 명령어이다. 이미 특정 원격 저장소와 연결이 되어 있을때, 해당 저장소와의 연결을 끊고 다른 저장소와 새로 연결을 하거나 혹은 한번에 여러 개의 저장소에 push 하는 등 여러가지 용도로 사용할 수 있는 명령어이다. 원격 저장소 확인 로컬 저장소에 연결된 원격 저장소를 확인하는 명령어이다. 연결된 원격 저장소가 없다면, 아무것도 출력이 되지 않을 것이다. $ git remote 원격 저장소 추가 방법 아래 명령어로 로컬 저장소와 연결시키고자 하는 원격저장소를 추가할 수 있다. 별칭은 일반적으로 origin을 사용하며, 원격 저장소 URL은 원격 저장소에 복사 가능하다. $ git remote add 이미 origin(별칭) 이라는 이름의 .. 2022. 7. 31.
git branch -d (브랜치 삭제하기) git branch 목록에서 'issue1' 이라는 브랜치를 삭제하고자 한다. $ git branch * master issue1 브랜치를 삭제하려면 branch 명령에 -d 옵션을 지정하여 실행하면 된다. $ git branch -d 'issue1' 브랜치를 삭제하려면, 다음 명령어를 실행한다. $ git branch -d issue1 Deleted branch issue1 (was b2b23c4). 이제 'issue1' 브랜치는 삭제되었다. 정말로 브랜치가 잘 삭제 되었는지 branch 명령어를 이용해서 확인해보면 아래와 같이 'master' 브랜치만 목록에 남아 있게 된다. $ git branch * master Tip 브랜치 삭제는 삭제하려는 브랜치가 아닌 브랜치에서 git branch -d 를 .. 2022. 7. 3.
강제 (force) push 수행하기 git push force 란? 위와 같이 가끔씩 사용자의 로컬저장소의 변경사항들이 원격저장소의 변경사항들과 호환되지 않는 경우 사용자의 변경사항을 push 하는 유일한 방법은 git push force 를 이용하는 것이다. git push force를 수행한다면 위와 같이 로컬 저장소와 원격 저장소의 Commit 내역을 일치시킬 수 있다. 즉, 원격 저장소 기준이 아니라 로컬 저장소의 기준으로 원격 저장소에 commit내역을 push 하는 것이다. 한마디로 원격 저장소의 commit 내역을 로컬을 기준으로 덮어쓰기(overwrite) 하는 것이다. $ git push -f //또는 $ git pus --force ※ 주의 : 이 명령어의 사용으로 인해 원격 저장소에 커밋들이 유실되는 현상이 발생할 수 .. 2022. 7. 3.