원격 저장소에서 특정 풀 수정


56

우리는 최신 푸시 버전의 repo를 얻기 위해 일반적으로 git pushdev 서버 에서 사용 하고 나서 git pull라이브 서버 에서 배포하는 원격 git repo를 가지고 있습니다 .

그러나 우리가 ( git pull라이브 서버를 사용 하지 않고) 몇 가지 개정을 커밋하고 추진했다면 어떻게 git pull원하는 이전 커밋을 참조 할 수 있습니까?

즉, 같은 git pull -r 3ef0dedda699f56dc1062b5dcc2c59f7ad93ede4

답변:


64

저장소를 가져 오면 다음을 수행 할 수 있습니다.

git checkout 3ef0d...

1
좋아, 이것은 완벽하게 작동했습니다. 또한 향후 풀을 위해 다시 동기화를 원할 경우 다음 풀을 수행 할 때 원격 서버를 지정해야합니다 (예 : git pull server:repo일반 대 git pull)
dlrust

1
어쩌면 OP가 잘못된 질문을했지만 어쩌면 올바른 질문이며 이것이 답이 아닙니다. 서버에서 로컬로 누락 된 특정 커밋이 있습니다. 커밋은 브랜치 또는 태그의 일부가 아니며 풀 / 페치로 트래 스닝되지 않습니다. 특정 커밋을 가져 오는 방법은 무엇입니까?
BlackEye

8

uploadpack.allowReachableSHA1InWant

Git 2.5.0 부터 서버에서이 구성 변수를 사용할 수 있습니다. 여기에서 GitHub 기능 요청이 기능을 사용 하는 GitHub 커밋이 가능합니다 .

Bitbucket Server는 버전 5.5 이상부터 활성화했습니다 .

용법:

# Make remote with 4 commits, and local with just one.
mkdir server
cd server
git init
touch 1
git add 1
git commit -m 1
git clone ./ ../local
for i in {2..4}; do
    touch "$i"
    git add "$i"
    git commit -m "$i"
done

# Before last commit.
SHA3="$(git log --format='%H' --skip=1 -n1)"
# Last commit.
SHA4="$(git log --format='%H' -n1)"

# Failing control without feature.
cd ../local
# Does not give an error, but does not fetch either.
git fetch origin "$SHA3"
# Error.
git checkout "$SHA3"

# Enable the feature.
cd ../server
git config uploadpack.allowReachableSHA1InWant true

# Now it works.
cd ../local
git fetch origin "$SHA3"
git checkout "$SHA3"
# Error.
git checkout "$SHA4"

2

라이브 서버의 일부 프로세스가 방금 풀링 된 컨텐츠에 즉시 액세스하는 경우 (즉 git checkout 3ef0d, 풀 후 작업 할 수없는 경우 ) 프로덕션에서 배포 할 버전에 태그를 지정하고 프로덕션에서 해당 태그를 체크 아웃하여 풀이 즉시 발생하지 않도록해야합니다. 작업 디렉토리를 변경하십시오. 그렇지 않으면 당기기 직전에 누군가가 밀릴 위험이 있습니다.


1

A가 있습니다 git pull git checkout my-old-commit 지금은 분리 된 HEAD 상태에서 당신을 잎 - 효율적으로 새 커밋 경로 아래로이 저장소에 미래의 커밋을 보내는. 배포 리포지토리의 경우 커밋 만 풀기 전에 커밋 만 커밋해야하므로 큰 문제는 아닙니다.

그러나 커밋 마커 (헤드, 태그, 원격)가 마스터 리포지토리와 동일한 지 확인하는 것이 유용한 경우가 있습니다. 체크 아웃 후이 문제를 해결하려면 : git reset -헤드를 다시 연결합니다 git fetch .-리모콘의 마커를 동기화합니다 (git 버전에 따라 다를 수 있음-환경은 여전히 ​​1.7에 있습니다. 따라서 더 이상 YMMV가 필요하지 않을 수 있습니다)

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