2017-12-07 23 views
0

전 git에서 몇 가지 실험을하고 있습니다. 내 지점에 나는 역사를 다시 작성됩니다롤백 다시 기록 내역에 대한 힘내 명령

git filter-branch --tree-filter "find . -name '*.java' -exec sed -i -e \ 's/stringToReplace/replacement/g' {} \;" 777b7d777c7777777dc16a8a939a8cdbabc28086..HEAD 

했다. 나는 변화를 추진하지 않았다. 이제 어떻게 그걸 다시 설정할 수 있을지 궁금해합니다. 그 재 작성을 롤백하고 싶습니다. 가장 쉬운 방법은 무엇입니까? 많은 감사드립니다.

+0

git은 히스토리를 "다시 쓰지"않습니다. 그것은 단지 새로운 역사를 추가합니다. 'sed -i -e'는 무엇을합니까? – evolutionxbox

+0

@evolutionxbox git는 히스토리를 절대적으로 다시 쓸 수 있으며이 경우에는 수행합니다. – jhpratt

+0

@jhpratt 예를 들려 줄 수 있습니까? 심지어 rebase는 이미있는 것을 다시 작성하지 않습니다. – evolutionxbox

답변

2

git rebase을 실행하면 분기의 원래 커밋 ID가 .git/refs/original/refs/heads/<branchname>에 저장됩니다. 당신이 당신의 REBASE를 취소하려면, 당신은 단지 실행할 수 있습니다

git reset --hard original/refs/heads/master 

이것은 당신이 당신의 master 지점에있는 것으로 가정합니다; 그렇지 않은 경우 heads/ 뒤에 분기 이름을 적절하게 변경하십시오. 방금 상류 저장소의 상태로 로컬 저장소를 재설정하려는 경우

또는, 당신은 할 수 있습니다

git reset --hard origin/master 

이 원격 origin 이름에 master 지점에 현지 지사를 재설정합니다.

+0

또한 사람들에게 당신이 옳은 일을하고 있는지 확실히 모르겠다면 저장소 ('cp -a myrepo mytestrepo')의 사본을 만들어 사본에서이 명령들을 시험해 볼 수 있다는 것을 상기시킵니다. 그들이 원하는대로 행동하게하십시오. – larsks

+0

감사합니다. 이것들은 제가 찾고 있던 것입니다. – saferJo