developer tip

git remote prune – 예상대로 많은 가지 가지가 보이지 않았습니다.

optionbox 2020. 7. 27. 07:52
반응형

git remote prune – 예상대로 많은 가지 가지가 보이지 않았습니다.


매뉴얼 페이지에서 :

Deletes all stale tracking branches under <name>.
These stale branches have already been removed from the remote repository
referenced by <name>, but are still locally available in "remotes/<name>".

그래서 나는 나뭇 가지를 제거하여

git push origin :staleStuff

그리고 달렸다

git remote prune origin

그러나 단 하나의 로컬 지점 만 제거되었습니다. 이 지점 중 일부는 저에 의해, 일부는 동료에 의해 만들어졌습니다. 이것은 처음에 해당 지점을 올바르게 추적하지 않았 음을 나타 냅니까?


을 사용 git push origin :staleStuff하면 자동으로 제거 되므로을 ( origin/staleStuff를) 실행 git remote prune origin하면 다른 사람이 제거한 일부 분기를 제거했습니다. 이제 git prune제거한 분기를 제거하기 위해 동료가 실행해야 할 가능성이 높습니다 .


정확히 무엇 git remote prune입니까? 주요 아이디어 : 지점을 추적하지 않는 로컬 지점은 git remote prune명령을 사용 하지 않으므로 수동으로 제거해야합니다.

이제 더 나은 이해를위한 실제 예 :

당신은 두 가지 원격 저장소를 가지고 masterfeature. 두 브랜치에서 작업하고 있다고 가정하면 결과적으로 로컬 저장소에 이러한 참조가 있습니다 (혼합을 피하기 위해 전체 참조 이름이 지정됨).

  • refs/heads/master(짧은 이름 master)
  • refs/heads/feature(짧은 이름 feature)
  • refs/remotes/origin/master(짧은 이름 origin/master)
  • refs/remotes/origin/feature(짧은 이름 origin/feature)

이제 일반적인 시나리오는 다음과 같습니다.

  1. 일부 다른 개발자는의 모든 작업을 완료하고 feature병합 하여 원격 저장소에서 분기를 master제거 feature합니다.
  2. 기본적으로 git fetch(또는 git pull) 작업을 수행하면 로컬 리포지토리에서 참조가 제거되지 않으므로 4 개의 참조가 모두 유지됩니다.
  3. 정리하고 실행하기로 결정했습니다 git remote prune origin.
  4. 자식은 감지하지 feature그래서 더 이상 존재 지점 refs/remotes/origin/featureA는 부실 제거해야 지점입니다.
  5. 지금 당신은을 포함, 3 개의 참조를 가지고 refs/heads/feature있기 때문에, git remote prune어떤 제거하지 않습니다 refs/heads/*참조.

branch.<branch_name>.merge구성 매개 변수 로 원격 추적 분기와 연관된 로컬 분기를 식별 할 수 있습니다 . 이 매개 변수는 실제로 작동하는 데 필요하지 않으므로 (아마도 제외 git pull) 누락 될 수 있습니다.

(댓글의 예 및 유용한 정보로 업데이트 됨)

참고 URL : https://stackoverflow.com/questions/4040717/git-remote-prune-didnt-show-as-many-pruned-branches-as-i-expected

반응형