commit 없이 로컬에 코드 반영하기

#들어가기

개인 설정 관련 파일에 경우 .gitignore에 등록하여 git에서 tracking하지 못하게 하는 경우가 많습니다. 하지만 한 예로 Vagrantfile(virtual box와 연동해서 쓰는 파일) 같은 경우는 Vagrantfile 자체가 지속적으로 버젼 관리가 되어야 합니다. 또 그 파일 안에서 ip 설정 등 개발 환경을 설정해야 합니다.
즉, 버젼 관리가 필요한 파일 내부에 local ip 세팅 등 개인적 환경 세팅을 하면 이 역시 git에서 tracking하게 됩니다. 개인적인 환경 변화로 인한 commit은 공동 project라면 해서는 안되죠. 하지만 개발을 하려면 ip 설정, port 등 꼭 자신의 환경에 맞게 수정해야 하는데 어떤식으로 가능할까요?

#본론

초기에는 Vagrantfile 내부에 저에게 할당된 개발 ip와 port 등을 세팅하고 commit 할때는 해당 파일을 제외하는 식으로 진행했습니다. 하지만 git update-index를 사용하면서 보다 편리한 개발을 진행할 수 있게 됐습니다.
git update-index는 git이 tracking하고 있는 파일들을 option을 사용해 수정을 하는 명령어 입니다.

1
git update-index --assume-unchanged [file name]

그 중 –assume-unchanged option은 git이 tracking 하는 파일이지만 working tree에서 더 이상 해당 파일을 tracking하지 않게 해주는 명령어 입니다.

1
git update-index --no-assume-unchanged [file name]

다시 –no-assume-unchanged을 사용해 tracking 할수도 있습니다.

git update-index을 사용하기 전까지 stash에도 넣어보고 .gitignore에도 넣어보는 등 많은 시도를 해보았습니다. stash에 넣으면 stash에 넣은 파일은 다시 수정되기 전 상태로 돌아가 사용할 수 없었습니다. 또 .gitignore을 추가하자니 .gitignore을 push 해야하는 문제도 있었습니다. .gitignore의 더 큰 문제점은 제가 수정했던 파일 자체가 앞서 설명드렸던거와 같이 지속적인 버젼 관리를 해야하기에 사용할 수 없었습니다.

#마치며

설명 도중 틀린 설명이 있다면 코멘트로 남겨주세요. 수정하겠습니다!!

#참조

Git Documentation

Share