앞 포스트에 이어서..개발 하다보면 가끔 한번씩 꼭 하게 되는 일들인데 커맨드가 가물가물한것들 정리.
1. Git push/pull 할때 매번 username, password 치지 않도록 설정하기
원격 서버에서 git pull 할 때 매번 아이디와 암호를 물어봐서 귀찮을 때가 있다. 특히 혼자 개발하는 서버라면 다른 사용자도 없으니 그냥 아이디와 암호를 저장해주면 편한것 같다.
$ git config credential.helper store
위의 명령을 수행하면 저장된 credential 정보를 이용해서 인증이 자동으로 처리된다. store 명령을 이용하면 다시 설정을 바꿀 때까지는 계속 정보가 저장된 상태가 유지된다.
만약 일정 시간만 로그인 절차를 생략하고 싶다면 store 대신 cache로 하면 된다.
$ git config credential.helper cache
이렇게 해주면 default 시간 값 (15분이라고 함) 동안은 아이디와 암호를 물어보지 않는다. 특정한 시간을 지정해주려면 --timeout 옵션을 사용해서 초 단위로 지정해 주면 된다.
$ git config credential.helper 'cache --timeout=3600'
해당 프로젝트 뿐 아니라 모든 git 환경에 전역으로 적용시키려면 --global 옵션을 추가해주면 된다.
$ git config --global credential.helper store
혹은
$ git config --global credential.helper cache
2. 이미 push 해서 원격 저장소에 저장된 파일 .gitignore에 포함시키기
프로젝트 저장소에 필요 없는 캐시나 데이터베이스 파일/폴더 등은 .gitignore 파일에 포함시켜 주면 push 할때 올라가지 않는다.
그렇지만 이미 한번 push 해서 원격 저장소에 저장된 파일을 프로젝트에서 제거해야 할 때가 있다. 이럴 때는 그냥 .gitignore 에 적어 주기만 해서는 해결이 되지 않는다. 일단 .gitignore 에 추가해 주면 해당 파일들은 변경사항이 있어도 새로 push가 되지는 않지만, 이미 push 해버린 버전이 원격 저장소에서 지워지지 않는 문제가 있다. 원격 서버에서 pull 할때 문제가 생기기 쉽다.
이럴때는 아래의 명령으로 원격 저장소에 저장된 파일을 다 지워 주고, 새로 모든 파일을 staging 해 준다음 push 를 해 줘야 깔끔하게 제거된다.
$ git rm -r --cached .
$ git add .
$ git commit -m "Apply changes in .gitignore"
$ git push
cached 다음에 한칸 띄고 마침표, git add 다음에도 한칸 띄고 마침표 를 꼭 적어줘야 한다.
3. 로컬 디렉토리를 원격 repository 의 내용으로 덮어쓰기
개발하다 보면 너무 오래 커밋하지 않고 이것저것 파일들을 건드리다가 뒤죽박죽이 돼서 손을 쓸수 없는 지경이 되는 경우가 있다. 일단 꼭 한가지 일을 해결하고 나면 커밋을 해서 개발 단계를 명확히 구분을 해 주는 습관을 들이는게 중요하겠다.
하지만 어쨌든 손쓰기 힘든 지경이 돼서 잘 작동하던 원격 저장소의 버전으로 그냥 모든걸 덮어 씌우고 싶게 될 때가 분명히 생긴다.
그때는 아래 명령어를 이용한다.
$ git fetch --all
$ git reset --hard origin/master
브랜치 이름이 master가 아니라면 해당하는 branch 이름을 적어줘야 한다.
이렇게 하면 로컬에서의 변화는 전부 무시되고 원격 저장소에 올라가 있는 버전이 덮어 씌워진다.
또 가끔 쓰게 되는 명령어가 있으면 업데이트해 보겠음.