programing

특정 커밋까지 당김

magicmemo 2023. 7. 10. 22:14
반응형

특정 커밋까지 당김

나는 하고 싶습니다.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 checkout origin/master
git log

병합할 커밋의 커밋 해시(또는 처음 ~ 5자까지만)를 가져와 해당 커밋을 마스터로 병합합니다.

git checkout master
git merge <commit hash>

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

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

원하는 분기로 대체합니다.

git 로그를 사용하여 되돌릴 커밋을 확인합니다.

git log

개인적으로, 이것은 저에게 더 효과적이었습니다.

기본적으로 이 작업은 최신 커밋을 풀어서 수동으로 커밋을 하나씩 되돌리는 것입니다.git log를 사용하여 커밋 기록을 확인합니다.

좋은 점:광고대로 작동합니다.커밋 해시를 사용하거나 불필요한 분기를 풀할 필요가 없습니다.

나쁜 점:커밋을 하나씩 되돌려야 합니다.

경고: 로컬 변경 내용을 모두 커밋/저장합니다. 변경 내용이 손실될 수 있습니다.자신의 책임을 지고 사용하세요!

이것은 나에게 도움이 됩니다.

git pull origin <sha>

예.

[dbn src]$ git fetch
[dbn src]$ git status
On branch current_feature
Your branch and 'origin/master' have diverged,
and have 2 and 7 different commits each, respectively.
...
[dbn src]$ git log -3 --pretty=oneline origin/master
f4d10ad2a5eda447bea53fed0b421106dbecea66 CASE-ID1: some descriptive msg
28eb00a42e682e32bdc92e5753a4a9c315f62b42 CASE-ID2: I'm so good at writing commit titles
ff39e46b18a66b21bc1eed81a0974e5c7de6a3e5 CASE-ID2: woooooo
[dbn src]$ git pull origin 28eb00a42e682e32bdc92e5753a4a9c315f62b42
[dbn src]$ git status
On branch current_feature
Your branch and 'origin/master' have diverged,
and have 2 and 1 different commits each, respectively.
...

이것은 28 eb00, ff39e4, 그리고 이전의 모든 것을 당겼지만, f4d10ad는 당기지 않습니다.pull --rebase를 사용할 수 있으며 gitconfig에서 pull 설정을 준수합니다.이것은 기본적으로 28eb00을 분기로 취급하기 때문에 작동합니다.

내가 사용하고 있는 Git 버전의 경우, 이 메서드에는 전체 커밋 해시가 필요합니다. 약어나 별칭은 허용되지 않습니다.다음과 같은 작업을 수행할 수 있습니다.

[dbn src]$ git pull origin `git rev-parse origin/master^`

저는 이 동영상에서 업데이트된 답변을 찾았습니다, 수락된 답변은 저에게 효과가 없었습니다.

먼저 다음을 사용하여 git의 최신 보고서를 복제합니다(아직 복제하지 않은 경우).git clone <HTTPs link of the project>SSH ) 그 (SSH 사용) "욕망"을 사용하여 desire 합니다.git checkout <branch name>.

명령어 사용

git log

최신 커밋을 확인합니다.특정 커밋의 샬을 복사합니다.그런 다음 명령을 사용합니다.

git fetch origin <Copy paste the shal here>

Enter 키를 누른 후에 키를 누릅니다.이제 명령을 사용합니다.

git checkout FETCH_HEAD

이제 특정 커밋을 로컬에서 사용할 수 있습니다.모든 항목을 변경하고 다음을 사용하여 코드를 푸시합니다.git push origin <branch name>이상입니다.참고용으로 비디오를 확인할 수 있습니다.

특정 커밋 코드를 새 분기로 풀링하려면 다음 명령을 사용할 수 있습니다.

git checkout -b <new_branch_name> <commit_hash>

분기에 커밋을 병합하는 경우 모든 기록을 수집해야 합니다.

관찰:

git in.//Users/dfarrell/git/demo/.git/의 빈 Git 저장소를 초기화했습니다.echo 'a' > 글자git 추가 편지git commit -m '초기 문자'[master(root-commit) 6e59e76] 이니셜 레터파일 1개 변경, 삽입 1개 (+)모드 100644 문자 만들기에코 'b' >> 레터git 문자 추가 & & git 커밋 -m '문자 추가'[master 7126e6d] 문자 추가파일 1개 변경, 삽입 1개 (+)echo 'c' >> 편지; git 추가 편지 &&git 커밋 -m '편지 추가'[master f2458be] 문자 추가파일 1개 변경, 삽입 1개 (+)echo 'd' >> 편지; git 추가 편지 &&git 커밋 -m '편지 추가'[master 7f77979] 문자 추가파일 1개 변경, 삽입 1개 (+)에코 'e' >> 레터; git 추가 레터 &&git 커밋 -m '레터 추가'[master 790ead] 글자 추가하기파일 1개 변경, 삽입 1개 (+)깃 로그commit 790eade 367b0d8ab8146596cd7c25fd895302a저자: 댄 파렐날짜: 7월 16일 목요일 14:21:26 2015-0500
문자 추가
커밋 7f77979efd17f277b4be695c559c1383d2fc2fc27저자: 댄 파렐날짜: 7월 16일 목요일 14:21:24 2015-0500
문자 추가
commit f2458bea7780bf09fe643095dbae95cf97357cc저자: 댄 파렐날짜: 7월 16일 목요일 14:21:19 2015-0500
문자 추가
commit 7126e6dcb9c28ac60cb86ae40fb358350d0c5px저자: 댄 파렐날짜: 7월 16일 목요일 14:20:52 2015-0500
문자 추가
commit 6e59e7650314112fb80097d7d3803c964b3656f0저자: 댄 파렐날짜: 7월 16일 목요일 14:20:33 2015-0500
이니셜 레터git checkout 6e59e76503114112fb80097d7d3803c964b3656fgit checkout 7126e6dcb9c28ac60cb86ae40fb358350d0c5px참고: '7126e6dcb9c28ac60cb86ae40fb358350d0c5fad'를 확인하십시오.

'헤드 분리' 상태입니다.주변을 둘러보고 실험적으로변경하고 커밋하면 이 작업에서 수행한 커밋을 취소할 수 있습니다.다른 체크아웃을 수행하여 분기에 영향을 미치지 않고 상태를 표시합니다.

생성한 커밋을 유지하기 위해 새 분기를 생성하려는 경우체크아웃 명령과 함께 -b를 다시 사용하여 (지금 또는 나중에) 그렇게 합니다.예:

git checkout -b new_build_name
HEAD는 7126e6d에 있습니다...문자 추가git checkout - b B 7126e6dcb9c28ac60cb86ae40fb358350d0c5fad새 지점 'B'로 전환됨깃풀 790 에이드 367b0d8ab8146596cd7c25fd895302afatal: '790eade367b0d8ab8146596cd7c25fd895302a'가 깃 저장소가 아닌 것 같습니다.치명적: 원격 리포지토리에서 읽을 수 없습니다.

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

git log지역 지점과 다른 지점 간의 차이를 확인합니다.

  git log
  git merge cuY2324X

그리고나서git merge특정 커밋에 코드를 적용하고 최소 6자리 이상의 커밋을 사용할 다른 지점에 체크아웃하여 특정 커밋 또는 특정 커밋

단순하고 간단함

git pull origin <Commit-hash>

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

반응형