2012-05-30 5 views
0

내 로컬 컴퓨터에 취미 프로젝트 (GitHub에서 호스트 됨) 및 업무 관련 (다른 곳에 호스팅 됨) 인 일부 git 저장소가 있습니다. 내가 잘못하고 있기 때문에 (물어 보지 마라, 그것은 무관하다) 나는 정기적으로 rm -rf에 있어야하고, .git/config 파일을 지우는 repo를 다시 복제해야한다.원격 저장소의 URL을 기반으로 git : username을 자동으로 설정하는 방법

내 취미 프로젝트보다 내 작업 프로젝트에 대해 user.email을 다르게 설정하는 내용을 내 ~/.gitconfig에 넣고 싶습니다. (.git/config은 주기적으로 지워지기 때문에 사용할 수 없음을 기억하십시오.) 프로젝트 이름을 기반으로하거나 복제하려는 원격 저장소의 URL을 기반으로 할 수 있습니다.

별도하지만 관련 문제로, 차라리 내가 REPO를 복제 할 때마다 .git/hooks/pre-commit 수정 기억하는 것보다, 모든 내 저장소를 적용하는 글로벌 사전 커밋 후크를 지정할 수 싶어요. (git clone --template을 알고 있습니다.

git clone을 수행 할 때마다이 모든 설정을 수행하는 git에 별칭이 지정된 Bash 스크립트를 작성할 수 있습니다. 그게 유일한 대답인가요? 당신이 디렉토리를 변경할 때 프롬프트를 변경 배쉬 확장 중 하나를 사용하는 경우

답변

0

, 당신은 GIT_AUTHOR_NAME, GIT_COMMITTER_NAME을 설정하는 사람들에 후크 할 수 있습니다, 그리고 따라 관련 이메일 환경 변수는에 당신이있어 리포지토리.

__git_ps1() { 
    BRANCH=`git branch 2>/dev/null` 
    if [ "$?" == "0" ]; then 
     # Do something with your prompt 
     if [[ `git remote -v` =~ $WORK_URL_REGEX ]]; then 
     export GIT_AUTHOR_EMAIL="[email protected]" 
     else 
     export GIT_AUTHOR_EMAIL="[email protected]" 
     fi 
    endif 
} 

이것은 분명히 매우 거친 (나도, 그것을 테스트하지 않은 경우)하지만 당신에게 좋은 출발점을 제공한다 : .bashrc에에서

, 당신이 뭔가를 할 수 있습니다.

0

당신이/재 클론 /를 가지고 왜 아무 생각이 ..

git reset --hard && git clean -xdf 

은 충분하고 당신에게 깨끗한 작업 디렉토리를 제공 할 것입니다. 이렇게하면 설정 변경 사항이 보존됩니다. 당신이 당신의 참조가 엉망이있는 경우

, 당신은 내가/오전/당신이 "잘못을하고"왜 물어 즉

git remote prune 

와 원격 지점을 정리할 수 있습니다 :

+0

방금 ​​시도했습니다. 'git reset --hard && git clean -xdf'를 사용하여 로컬 repo에서 d를 수행하지 않았습니다. 'git checkout -'과는 다릅니다. 특히, 그것은 내가 이미 나의 지역 repo에 만들었던 커밋을 없애지 않았고, 지금 제거하고 싶었다. ... 오, 기다려라.'git reset -hard origin/master'. 네, 그게 효과가 있다고 생각합니다. (하지만 지점별로 한 번씩해야하는데,'git --reset hard origin '은 내가 기대했던대로하지 않는다! 그리고 repo는'rm -rf *'와 반대되는 것이지, 큰 단점이 아니다.) – Quuxplusone

+0

당신이 생각하고있는 두 가지가 있습니다. 작업 디렉토리 청소 및 브랜치 설정. 'git reset -hard origin'은 애매합니다. 당신은 어떤 지점을 말할 필요가 있습니다. 이 스크립트를 스크립팅하고 각 브랜치를 체크 아웃하지 않고 반복 할 수 있습니다. 'git push. origin/master : master -f'는 체크 아웃되지 않은 경우에도 분기를 재설정합니다. –

0

그것이 나라면, 아마 일부 임시 위치에 저장하고, 모든 것을 삭제하고, repo를 복제하고, 내용을 다시 복사하는 내용을 복사하는 스크립트로 rm -rf이라는 원시 코드를 래핑 할 것입니다.