2011-02-16 7 views
34

repo status은 많은 원치 않는 변경 사항을 보여줍니다.repo를 사용하여 변경 사항을 취소하는 방법

모든 프로젝트를 입력하고 git reset --hard을 사용하면 복제됩니다.

repo를 사용하여 모든 변경 사항을 재설정하는 방법이 있습니까? 예 : repo reset --hard?

답변

-7

당신은 모든 변경 사항을 되돌리려면 다음과 같이 repo 명령을 사용할 수 있습니다

repo sync -d 

이 다시 원래의 개정에 대한 모든 변경 사항을 되돌아갑니다.

또는 Version Control with Repo and Git

편집에 명시된대로 다른 사람이 git를 사용할 수 있습니다

명령은 위의 그 당시 버전 만 노력하고 있습니다.

실무 명령은 다음과 같습니다

repo forall -vc "git reset --hard" 
+3

'의 repo 동기화를 읽어 보시기 바랍니다. 'repo status'는 여전히 나의 모든 원치 않는 변화를 보여주었습니다. –

+1

사실이 답변을 작성해야합니다. 사람들에게 이런 식으로 혼란을 줄 것입니다. – davidbaumann

1

documentation에 따르면 repo 스크립트는 지원

  • 초기화
  • 동기
  • 시작
  • 상태
  • 업로드

원치 않는 변경이 이미 업로드하는 경우 ~까지 e 저장소에 저장하고 저장소 자체를 이전 버전으로 되돌리려면 git reset을 사용할 수 있습니다.

아직 Repo에 업로드되지 않은 클라이언트 측 변경 사항을 실행 취소하려면 git revert을 수행하십시오.

3
#!/bin/bash 
for gitdir in $(find . -name .git); do 
    pushd $(dirname $gitdir) 
    git reset --hard 
    popd 
done 
+0

repo forall in asrans comment – sherpya

+0

때로는 제 작업 복사본에서'repo forall'이 모든 git 트리를 덮지는 않습니다. 이 접근법은 크게 작용합니다. – alijandro

+0

감사! 나는 단지'repo forall'이 모든 자식 repo를 수정하지 않는 것처럼이 명령을 사용해야했습니다. –

8

나는 아래의 구문을 사용하여 명령 FORALL REPO를 사용하고 나를 추적 파일을 다시 설정하는 데 도움이됩니다. foo가 합법적 인 지점 이름으로 대체해야

repo forall -p -c 'git checkout -f foo' 

.

75

repo forall -vc "git reset --hard" 

매우 유용 나는 사물의 종류에 사용하는 명령은 무엇 모든 것을 여기에 의미입니까?

repo forall은 모든 repos에 대해 실행됩니다.

더 - 깨끗한 상태로 작업 폴더를 되돌릴 필요가있는 경우는

-c "COMMAND TO EXECUTE" 당신이

+0

정답입니다. 추가하기 만하면 출력을 억제하려면 -v 인수를 생략해도 나에게는 효과가 없지만 여전히 출력을 인쇄합니다. 나는 출력을 억제하기 위해'&>/dev/null'을 추가해야했습니다. – Anton

+0

'-v'는 v1.12.37부터 더 이상 필요하지 않은 것으로 보입니다. –

13

를 원하는 실제 명령 인 명령의 출력을 인쇄 할 수 있도록 v는, 장황 로컬 수정없이 비 추적 파일이없는 경우 (REPO 상태 아무것도 보여주지 곳 즉), 나는이 두 가지 방법 repo sync and deleted/modified files

repo forall -c 'git reset --hard ; git clean -fdx' 
에 유용하다고

하거나 새로운 로컬 REPO 초기화 및 동기화와 일치하지 않는 것을

rm -rf * ; repo sync -l 
// note that .repo is preserved after that 

주 (예를 들어 당신은 무슨 일이 일어나고 있는지 확실하지 않은 경우 숨겨 놓은이

) 보존, 전체 스레드에게 -d` 나를 위해 작동하지 않았다 repo sync and deleted/modified files

+0

멋지다, 나는이 방법을 좋아한다 : ".git"이 존재하면 "rm -rf *; git checkout -f"와 같이 빠르고 깨끗하다. –

관련 문제