특정 커밋까지 힘내 풀
나는 git pull
특정 커밋까지만 하고 싶습니다 .
A->B->C->D->E->F (Remote master HEAD)
그래서 내 local master
HEAD가를 가리키고 있다고 가정 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
'UFO ET IT' 카테고리의 다른 글
Java에서 ClassCastException을 던질 수있는 다른 것은 무엇입니까? (0) | 2020.12.08 |
---|---|
DataFrame Index에 기능 적용 (0) | 2020.12.08 |
Docker 이미지를 Amazon ECS 리포지토리로 푸시 (0) | 2020.12.08 |
두 개의 XML 문서를 어떻게 비교 하시겠습니까? (0) | 2020.12.08 |
Django 모델 필드의 max_length를 프로그래밍 방식으로 어떻게 얻을 수 있습니까? (0) | 2020.12.08 |