2012-07-21 2 views
3

원격 저장소 (한 대의 컴퓨터)에서 복제 한 로컬 저장소가 있습니다. 필자는 원격 저장소가 로컬 저장소에서 변경 사항을 선택하여 git push origin을 수행했는지 확인하려고했습니다.git이 원격 저장소를 강제로 동기화해야하는 이유는 무엇입니까?

작업 디렉토리를 원격 저장소로 변경했습니다. 변경 사항이 로그 파일로 전파되었지만 (즉, git log이 변경 사항을 보여 줬음) 실제 작업 디렉토리가 변경 사항을 표시하지 않았습니다. 나는 git checkout HEAD을했지만 CWD는 여전히 변하지 않았습니다. git checkout --force HEAD CWD가 동기화 될 때까지는 아니 었습니다.

원격 저장소가 맨 처지 저장소가 아니기 때문에 이러한 현상이 발생했다고 생각됩니다. 그래서 두 가지 질문 :

  1. 내가 git push에 자동으로 동기화 (즉, 폐기 로컬 변경) 원격 저장소를 만들 수있는 방법이 있나요?
  2. 동기화를 위해 --force을 사용해야하는 이유는 무엇입니까? 으로 동기화해야합니까? REPO (비 베어에) 당신의 밀어 넣기가 성공하면 때문에

답변

2

, 그것은이다

  • 중 하나는 원격의 repo에 체크 아웃되지 않은 분기를 밀어 (비 베어 원격 REPO)
  • 또는 receive.denyCurrentBranch이 후자의 경우 git config

false 또는 ignore로 설정하고, 임의의 현재 로컬 변형이 누름에 의해 소거되지 않는다.
git checkout --force만이 작업 디렉토리를 HEAD이 참조하는 실제 색인 내용으로 재설정합니다.

두 개의 비 베어 저장소 사이의 동기화를 보장하는 일반적인 방법은 실제 원격 Repo (비 맨처 드 보보)로 이동하는 후 수신 후크를 사용하여 중간 베어 레포 (누를 때까지)를 추가하는 것입니다. 업데이트 된 베어 repo에서을 가져옵니다.
일반적인 예 : Using Git to manage a web site, 나는에 사용

, GIT_DIR 설정을 해제해야합니다 : "Calling 'git pull' from a git post-update hook"

관련 문제