UFO ET IT

특정 커밋까지 힘내 풀

ufoet 2020. 12. 8. 20:28
반응형

특정 커밋까지 힘내 풀


나는 git pull특정 커밋까지만 하고 싶습니다 .

 A->B->C->D->E->F (Remote master HEAD)

그래서 내 local masterHEAD가를 가리키고 있다고 가정 B하고 E. 어떻게해야합니까?

이것은 특정 커밋을 당기는 것이 아니라 특정 커밋을 당기는 것입니다.


git pull아무것도하지만없는 git fetch다음 git merge. 그래서 당신이 할 수있는 것은

git fetch remote example_branch

git merge <commit_hash>


먼저 원격 저장소에서 최신 커밋을 가져옵니다. 이것은 로컬 지점에 영향을 미치지 않습니다.

git fetch origin

그런 다음 원격 추적 분기를 확인하고 git 로그를 수행하여 커밋을 확인하십시오.

git checkout origin/master
git log

병합하려는 커밋의 커밋 해시 (또는 첫 번째 ~ 5 자)를 잡고 해당 커밋을 마스터로 병합합니다.

git checkout master
git merge <commit hash>

커밋을 브랜치에 병합하면 그 사이의 모든 기록을 가져와야합니다.

관찰 :

$ git init ./
/Users/dfarrell/git/demo/.git/에서 빈 Git 저장소를 초기화했습니다.
$ echo 'a'> 편지
$ git add letter
$ git commit -m '초기 편지'
[마스터 (루트-커밋) 6e59e76] 초기 문자
 1 개 파일 변경, 1 개 삽입 (+)
 모드 100644 문자 만들기
$ echo 'b'>> 문자
$ git add letter && git commit -m 'Adding letter'
[마스터 7126e6d] 문자 추가
 1 개 파일 변경, 1 개 삽입 (+)
$ echo 'c'>> 문자; git add letter && git commit -m 'Adding letter'
[마스터 f2458be] 문자 추가
 1 개 파일 변경, 1 개 삽입 (+)
$ echo 'd'>> 문자; git add letter && git commit -m 'Adding letter'
[마스터 7f77979] 문자 추가
 1 개 파일 변경, 1 개 삽입 (+)
$ echo 'e'>> 문자; git add letter && git commit -m 'Adding letter'
[마스터 790eade] 편지 추가
 1 개 파일 변경, 1 개 삽입 (+)
$ 자식 로그
커밋 790eade367b0d8ab8146596cd717c25fd895302a
저자 : Dan Farrell 
날짜 : 2015 년 7 월 16 일 목요일 14:21:26 -0500

    편지 추가

커밋 7f77979efd17f277b4be695c559c1383d2fc2f27
저자 : Dan Farrell 
날짜 : 2015 년 7 월 16 일 목요일 14:21:24 2015-0500

    편지 추가

커밋 f2458bea7780bf09fe643095dbae95cf97357ccc
저자 : Dan Farrell 
날짜 : 2015 년 7 월 16 일 목요일 14:21:19 -0500

    편지 추가

커밋 7126e6dcb9c28ac60cb86ae40fb358350d0c5fad
저자 : Dan Farrell 
날짜 : 7 월 16 일 목요일 14:20:52 2015-0500

    편지 추가

커밋 6e59e7650314112fb80097d7d3803c964b3656f0
저자 : Dan Farrell 
날짜 : 7 월 16 일 목요일 14:20:33 2015 -0500

    초기 편지
$ git checkout 6e59e7650314112fb80097d7d3803c964b3656f
$ git checkout 7126e6dcb9c28ac60cb86ae40fb358350d0c5fad
참고 : '7126e6dcb9c28ac60cb86ae40fb358350d0c5fad'를 확인하십시오.

'분리 된 HEAD'상태입니다. 주변을 둘러보고 실험 할 수 있습니다.
변경하고 커밋하고 여기에서 만든 커밋을 삭제할 수 있습니다.
다른 체크 아웃을 수행하여 분기에 영향을주지 않고 상태를 유지합니다.

생성 한 커밋을 유지하기 위해 새 브랜치를 생성하려면
체크 아웃 명령과 함께 -b를 다시 사용하여이를 수행하십시오 (지금 또는 나중에). 예:

  git checkout -b new_branch_name

HEAD는 이제 7126e6d에 있습니다 ... 문자 추가 중
$ git checkout -b B 7126e6dcb9c28ac60cb86ae40fb358350d0c5fad
새로운 지점 'B'로 전환
$ git pull 790eade367b0d8ab8146596cd717c25fd895302a
치명적 : '790eade367b0d8ab8146596cd717c25fd895302a'가 git 저장소로 보이지 않습니다.
치명적 : 원격 저장소에서 읽을 수 없습니다.

올바른 액세스 권한이 있는지 확인하십시오
저장소가 존재합니다.
$ git merge 7f77979efd17f277b4be695c559c1383d2fc2f27
7126e6d..7f77979 업데이트
빨리 감기
 편지 | 2 ++
 1 개 파일 변경, 2 개 삽입 (+)
$ 고양이 편지

또한 최신 커밋을 가져와 원하는 커밋까지 실행 취소 할 수 있습니다.

git pull origin master
git reset --hard HEAD~1

Replace master with your desired branch.

Use git log to see to which commit you would like to revert:

git log

Personally, this has worked for me better.

Basically, what this does is pulls the latest commit, and you manually revert commits one by one. Use git log in order to see commit history.

Good points: Works as advertised. You don't have to use commit hash or pull unneeded branches.

Bad points: You need to revert commits on by one.

WARNING: Commit/stash all your local changes, because with --hard you are going to lose them. Use at your own risk!

참고URL : https://stackoverflow.com/questions/31462683/git-pull-till-a-particular-commit

반응형