오리진의 마스터 브랜치 버전 파일로 되 돌리는 방법


425

원격 서버에서 복제 된 마스터 지점의 로컬 컴퓨터 마스터 지점에 있습니다.

파일을 업데이트하고 원격 마스터 브랜치에서 원래 버전으로 되돌리려 고합니다.

어떻게해야합니까?

답변:


874

파일을 커밋하지 않았거나 인덱스에 추가했다고 가정하면 다음을 수행하십시오.

git checkout -- filename

인덱스에 추가했지만 커밋하지 않았다고 가정하면 다음을 수행하십시오.

git reset HEAD filename
git checkout -- filename

커밋했다고 가정하면 다음과 같습니다.

git checkout origin/master filename

브랜치에서 모든 커밋을 취소한다고 가정하면 (VERY DESTRUCTIVE) :

git reset --hard origin/master

43
세 번째 옵션은 하나의 파일뿐만 아니라 모든 파일을 처리한다는 점에서 처음 두 옵션과는 매우 다릅니다. 더 명확하게 지적 할 수 있습니다. 또한 왜 추천하지 git checkout HEAD filenamegit checkout origin/master filename옵션 하나, 둘, 그것은 더 일관성있는 것입니까?
CB Bailey

5
@CharlesBailey : git checkout origin/master filenamegahooa의 답변에 옵션을 추가했습니다 .
Frank

2
@cilphex는 현재 브랜치에 커밋을 모두 압도
WattsInABox

1
실수로 branchB에서 branchA를 리베이스하고 로컬 분기를 마스터하도록 재설정해야했습니다. git reset --hard master원점에 도달하기를 원하지 않았기 때문에 혼자서만 해결책이었습니다. 감사.
taco

3
@gahooa 아마도 git checkout-filename이어야한다. 만약 파일이 "master"라면, 의도하지 않은 동작을 얻게 될 것이다.
user2602152

50

나는 같은 문제에 직면 하여이 스레드를 발견했지만 내 문제는와 관련이 있습니다 upstream. 아래 git 명령이 나를 위해 일했습니다.

통사론

자식 체크 아웃 {remote-name} / {branch}-{file / path.js}

git checkout upstream / develop-public / js / index.js


0

아직 마스터 브랜치에 커밋하지 않은 경우 쉽습니다.

  • 마스터 지점에서 하차 (예 git checkout -b oops/fluke/dang:)
  • 변경 사항을 커밋하십시오 (예 git add -u; git commit;:)
  • 마스터 브랜치로 돌아 가기 (예 git checkout master:)

변경 사항은 지점 oops / fluke / dang에 저장됩니다. 마스터는 그대로입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.