2012-12-04 4 views
0

여기에 초보자가 있습니다.힘내 당김 원점에서 문제가 발생했습니다

내 로컬 repo에 2 개의 지점 a와 b가 있습니다. 내가 실수로

git branch 
*a 
b 

다음 할 그렇다면 내가 "자식 풀 기원"을했고,이 파일들을 뽑아 브랜치 내 작업 환경을 엉망.

되돌리려 고했습니다. 나는 "git pull origin"을 원상태로 돌리고 싶었다. 어떻게 할 수 있니? 당신이 병합되지 않은 파일을 가지고 있기 때문에

풀 수없는 :

나는 그러나 그것은 나에게 병합 할 파일의 수백을 제공하고 파일의 큰 목록 뒤에 다음과 같은 메시지를 준다 "는이 자식 풀 기원"을 시도했다. 작업 트리에서 문제를 수정 한 후 해상도를 표시하려면 'git add/rm' 을 적절하게 사용하거나 'git commit -a'를 사용하십시오.

"git reset -hard"를 시도했지만 작업하고 싶은 파일이 없습니다. 이 문제를 해결하려면 어떻게해야합니까 ??

도움이 될만한 정보 : "git pull origin"을하기 전에 "git log"에 대한 응답은 내 팀의 커밋 (해당 브랜치에서만 작동) 이었지만 지금은 "git pull origin "git log"의 결과는 회사의 모든 사람의 상태입니다.

도와주세요. 감사합니다

답변

-1

는 절대로 안돼요 다시 재설정 시도하고 풀 브랜치

git reset --hard HEAD^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

(추가 더^당신은 다시 더 많은 커밋을 이동해야하는 경우)

을 다음

git pull origin a 
+0

은 당신이 그렇게 muchhhhhhhhh !!!! 당신이 내 dayyyyyy을 만들어 주셔서 감사합니다. ( – Rose

+0

이것은 끌어 오기 전에 로컬 상태로 되돌아 가지 않고 로컬 상태를 원격 상태로 만듭니다. – qqx

+2

참조 할 수있는 더 좋은 방법은 커밋 수를 커밋하는 것입니다. ,'HEAD ~ 2 '를 사용하면'HEAD ^^'와 같을 것이고, 숫자를 늘리면 되돌아가는 커밋 수를 늘릴 수 있습니다 . – qqx

3

않는 한 당기 당신은 리모트에서 변경 사항을 바탕으로 로컬 변경 사항을 리베이스 (rebase)하도록 설정했다. pull을 사용하면 변경 사항이 리모트에서 커밋과 병합된다. 더 이상 커밋을하지 않으면, 풀 동작으로 생성 된 병합 커밋을 가리키는 HEAD 참조를 남겨 둡니다. 이 커밋에는 병합 전에 네 상태 인 커밋과 병합 전에 원격 지점의 상태 인 커밋이라는 두 개의 부모가 있습니다. 그것들은 각각 HEAD^HEAD^2이라는 이름으로 참조 될 수 있습니다.

사용하여 풀 전에 다시 로컬 상태로 돌아갈 수 있습니다

git reset --hard HEAD^ 

당신이 사용할 수 유지하려는 그런 거기에 아무것도 경우에, 당신은 추적 파일이 커밋되지 않은 변경을 날려 git stash을 저장하십시오.

재설정을 수행하기 전에 재설정을 수행하면 문제가 악화되는 경우를 대비하여 현재 상태를 저장하는 것이 좋습니다.

2

the reflog의 완벽한 사용 사례입니다. reflog는 당신의 머리와 당신의 지점의 머리가 과거 어디에 있었는지의 역사를 저장합니다. 실행 git reflog 그리고 당신이 나타납니다. 귀하의 경우 적절한 명령은 아마도 git reflog a입니다.그러면 a 지점의 과거 상태가 표시됩니다. 올바른 줄을 찾은 다음 git reset을 수행하십시오.

방금 ​​당겨서 아무것도하지 않은 경우 명령은 입니다. 이는 "현재 변경된 분기를 a 변경 전 상태로 되돌립니다"라는 의미입니다. 당신이 더 많은 변경을 한 경우에 당신은 아마도 (더 가야합니다 예. git reset --hard [email protected]{4}을.

HEAD^^^^^…가는보다 훨씬 더 편리하고 제어 할 수 있습니다.

+0

달콤한! 나는 이것을 좋아했다. 이 것은 ^^^^ 시간 뒤로가는 것보다 읽기 쉽습니다. 배우기 좋은 것. 그래서 +1. – Rose