Git 페치 또는 풀로 자동 정리 git fetch –prune결국

작업이 끝나서 잘 모르기 때문에 누군가가 원격 지점을 삭제하면 작업을 수행하지 않으며 git fetch --prune결국 삭제 된 지점을 다시 밀어 넣습니다.

매번 그것을 지정하지 않고 페치 / 풀을 할 때 Git이 프룬 모드를 사용하도록 강제 할 수있는 솔루션이 있습니까?



답변

자식 1.8.5 이후 (Q4 2013) :

git fetch“(따라서 ” git pull“도)는 ” fetch.prune“및 ” remote.*.prune“구성 변수를 확인하고 ” --prune“명령 행 옵션이 제공된 것처럼 작동하는 방법을 배웠습니다 .

즉, remote.origin.prune을 true로 설정하면

git config remote.origin.prune true

모든 git fetch또는 git pull자동 치기 것입니다.

참고 : Git 2.12 (2017 년 1 분기)는이 구성과 관련된 버그를 수정하여 git remote rename오작동 을 일으킬 수 있습니다.
git remote의 이름을 바꾸려면 어떻게합니까? “를 참조하십시오 .


commit 737c5a9 에서 더 많은 것을보십시오 :

git fetch --prune“가 없으면 다른 쪽에서 이미 제거한 분기에 대한 원격 추적 분기가 영구적으로 유지됩니다.
어떤 사람들은 항상 ” git fetch --prune“을 (를) 실행하려고합니다 .

항상 정리하거나 특정 리모콘에서 가져올 때 사용자를 수용하려면 두 가지 새로운 구성 변수 ” fetch.prune“및 ” remote.<name>.prune“를 추가하십시오.

  • fetch.prune“를 사용하면 모든 페치 조작에 대해 제거를 사용할 수 있습니다.
  • remote.<name>.prune“를 사용하면 리모컨마다 동작을 변경할 수 있습니다.

후자는 자연스럽게 전자를 재정의 --[no-]prune하고 명령 줄 의 옵션은 구성된 기본값을 재정의합니다.

--prune잠재적으로 파괴적인 작업 이므로 (Git은 삭제 된 참조에 대한 리플 로그를 보관하지 않습니다) 사용자 동의없이 제거하지 않기 때문에이 구성은 기본적으로 설정되어 있지 않습니다.


답변

git config --global fetch.prune true

항상에 --prune대한 git fetchgit pull모든 Git 저장소에서 :

git config --global fetch.prune true

위의 명령은 전역 Git 구성 (일반적으로 ~/.gitconfig)에 다음 줄을 추가합니다. git config -e --global글로벌 구성을 보는 데 사용하십시오 .

[fetch]
    prune = true

git config remote.origin.prune true

항상 --prune하나의 단일 저장소에서 :

git config remote.origin.prune true
                 #^^^^^^
                 #replace with your repo name

이 위의 명령은 로컬 Git 구성 (일반적으로 .git/config아래)을 마지막 줄 아래에 추가합니다 . git config -e로컬 구성을 보는 데 사용하십시오 .

[remote "origin"]
    url = xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    fetch = +refs/heads/*:refs/remotes/origin/*
    prune = true

--global두 번째 명령 --local내에서 사용하거나 첫 번째 명령 내에서 대신 사용할 수도 있습니다 .


git config --global gui.pruneDuringFetch true

당신이 사용하는 경우에 git gui관심이있을 수 있습니다 :

git config --global gui.pruneDuringFetch true

그 내용은 다음과 같습니다.

[gui]
    pruneDuringFetch = true

참고 문헌

해당 문서 git help config:

--global

  쓰기 옵션 : ~/.gitconfig저장소 대신 글로벌 파일 .git/config에 쓰기, $XDG_CONFIG_HOME/git/config이 파일이 존재하고 ~/.gitconfig파일이없는 경우 파일에 쓰십시오 .

 

--local

  쓰기 옵션 : 저장소 .git/config파일에 씁니다 . 이것이 기본 동작입니다.

 

fetch.prune

  true 인 경우 fetch는 --prune옵션이 명령 줄에 제공된 것처럼 자동으로 작동합니다 . 도 참조하십시오 remote.<name>.prune.

 

gui.pruneDuringFetch

가져 오기를 수행 할 때 git-gui 가 원격 추적 분기를 제거해야하는   경우 “true” 입니다. 기본값은 “false”입니다.

 

remote.<name>.prune

  true로 설정하면 기본적으로이 원격에서 가져 오면 원격에 더 이상 존재하지 않는 원격 추적 참조도 제거됩니다 ( --prune옵션이 명령 행에 제공된 것처럼 ). fetch.prune설정이있는 경우 재정의 합니다.


답변

당신은 항상 원하는 경우 prune때를 fetch, 내가 사용하는 제안 할 수 별칭 .

입력 git config -e하여 편집기를 열고 특정 프로젝트의 구성을 변경하고 다음과 같은 섹션을 추가하십시오.

[alias]
pfetch = fetch --prune

git pfetch정리 하면 가져 오는 시간이 자동으로 수행됩니다.