2011-12-16 4 views
18

이 문제의 정확한 용어는 무엇인지 확실하지 않습니다. 기본적으로, 나는 로컬 자식의 repo에게원격 저장소의 파일을 삭제하는 방법은 무엇입니까?

  1. 자신을 일하고 있었다 GitHub의에서 & 원격 REPO가 내 원격 저장소

    에 일부 파일을 & 디렉토리를 제거해야합니다.

  2. 친구가 풀 요청을했습니다.
  3. 나는 (github 인터페이스를 통해) 그의 요청을 병합했다.
  4. 나는 변화를 가져왔다.
  5. 나는 코드를 테스트하고 (첫 번째 장소에서 합병 안)
  6. 내가 다시 이전으로 되돌아
  7. 만들어진 일부 변경 서버에
  8. 밀어 커밋 자신의 변경을하지 않기로 결정했다.

이 내 로컬 저장소 순간처럼 보이는 방법입니다

* 7e143b1 (HEAD) 
|\ 
| * 18cea0f (origin/master, origin/HEAD, master) 
| |\ 
| | * fc19ccf 
* | | 6f3c58a 
|// 
* | 8d82486 
|/ 
| * d3ce65f (pre-install-activeadmin) 
|/ 
* 7d0566c 
* d1c77ab 
* 75ba704 
* 30dc67c (heroku/master) 
* f89b1f6 
* ea5e2db 
* 08931d6 
* 9773a6f 
* b636aba 
* cb6f8d4 

내가 7d0566c 내 지역의 repo를 변경할 수 있습니다. 내 원격 저장소의 헤드가 어디로 향하고 있는지 확실하지 않습니다.

원격 저장소에 있지만 로컬 저장소에없는 파일은 어떻게 제거합니까?

필자는 HEAD를 이전 커밋으로 재설정했기 때문에 분명히 내 로컬 저장소에서 그의 파일을 볼 수 없습니다. 그러나 원격 저장소에는 여전히 파일이 표시됩니다. 내가 커밋 할 때, 그것은 잘 저지른다.

내 작업 흐름이 잘못 되었습니까? 나는 처음부터 패치를 테스트 했어야했다. 어떠한 제안? 나는 버전 관리가 처음이다. 고마워요

+0

원격 같은 GitHub의에 파일을 추가/제거하지 마십시오. 'git rev-parse HEAD'와'git rev-parse origin/master' (리모트의 이름이'origin' 인 경우)를 실행하여 github과 로컬 repo에 대한 refspecs가 같은지보십시오. – fge

+0

'git log --pretty = "format : % h % d"--graph --all'의 결과를 보여주고 거기에서 설명하면 도움이 될 것이라고 생각합니다. – htanata

+0

오른쪽. 파일을 추가하거나 제거하지 마십시오. 헴. 그들은 다르다. 이 문제를 어떻게 해결해야합니까?감사합니다 – dvliman

답변

37

변경 내용을 서버에서 가져온 다음 로컬 repo에서 git rm을 실행하고 변경 내용을 커밋 한 다음 서버로 푸시하십시오. 파일이 삭제됩니다.

+0

내 로컬 저장소에서 이러한 파일을 쉽게 제거 할 수 있습니까? 수백 개의 파일이 있다고하니? 감사합니다 – dvliman

+0

@limaoit : 나는 힘내 전문가가 아니므로 더 좋은 방법이있을 것입니다. 그러나 간단한 방법은 서버를 다른 곳으로 복사하여 서버에서 가져와 최신 상태로 유지 한 다음 '.git'을 제외한 repo, 백업에서 repo, commit, push로 모든 것을 옮긴다. – Ryan

+0

쉘을 사용하여 파일을 제거 할 수 있습니다. 즉, 쉘 스크립트를 사용하거나, globbing 파일을 찾거나, 원하는 모든 대량 제거 기술을 사용할 수 있습니다. 완료되면 "git add -A"를 실행하십시오. 최상위 디렉토리에서. -A 플래그는 git에게 제거한 파일을 알리도록 알려줍니다. – wadesworld

1

나는 풀 요청 요청이 병합 된 곳인 18cea0f이라고 가정합니다. 그 병합을 되돌리려면, 당신은 할 수 있습니다 :

git revert -m 1 18cea0f 

당신은 여기에서 자세한 내용을보실 수 있습니다 : 그것은 베어 저장소이기 때문에 http://progit.org/2010/03/02/undoing-merges.html

+1

나는 그것을했다. 내 로컬 저장소가 성공적으로 되돌려졌습니다. 거기에 아무런 문제가 없습니다. 원격 Repo가 문제의 원인입니다. 그것은 fc19ccf .etc 파일을 가지고 있습니다 ... – dvliman

+0

@limanoit 원격 저장소에 대한 변경 사항을 푸시하면됩니다 :'git push origin master'. – htanata

+0

@htnata 예, 제가 그랬습니다. 그래서 나는이 질문을했다. 내 로컬 저장소에는 파일 A, B, C가 포함되어 있지 않지만 원격 저장소에는 이전 병합의 효과 인 파일 A, B, C가 있습니다. 사실 Repo를 recloning하여이 문제를 해결했습니다. 파일을 수동으로 삭제하십시오. 그리고 커밋을 밀어. 이것은 꽤 해커입니다. 이 문제에 대한 더 나은 해결책이 있는지 궁금합니다. – dvliman

관련 문제