2013-03-04 3 views
1

로컬 저장소를 원격 저장소로 변경하기 전에 git은 항상 로컬 브랜치와 원격 브랜치를 동기화하도록 요청합니다. 그 일이 일어나기 위해서는 먼저 git pull을하고 나서, 끌어온 변경 사항을 커밋하고 마지막으로 push한다.깨끗한 git 히스토리를 얻는 방법

문제점 :이 방법은 끌어온 파일을 기존 변경 사항과 병합하고 나중에 특정 커밋에서 수행 한 작업을 파악할 때 내가 수행 한 작업과 실행중인 작업 사이에 명확한 구분이 없습니다. 무슨 끌어 오기 병합.

깨끗한 히스토리를 갖고 싶습니다. 즉, 내 커밋에는 항상 추가해야하는 변경 사항 만 표시해야합니다.하지만 끌어 오지 않아 병합되었습니다.

주어진 원격 지점에 대해 두 개의 로컬 브랜치가 있다고 생각할 수있는이 문제에 대한 한 가지 해결책이 있습니다. (1)을 (2) 리모컨과 동기화하고 푸시해야 할 때 (2)를 리모컨과 동기화 한 다음 병합 (1)을 (2)로 누른 다음에서 푸시 (2)

깨끗한 기록을 유지하는 방법에 대한 다른 제안 사항이 있습니까?

답변

3

원격 저장소 (로컬 커밋)를 누르기 전에, 당신은 어떻게해야

git fetch origin 

저장소의 모든 변경 사항을 (원산지 그냥 예를 들어 이름) 가져 오기합니다. 그 후 원점/원격 지점 하나 상단에 해당 지역의 지점을 리베이스하기 위해

git rebase origin/remote-branch 

을한다.

파일이 로컬 및 리포지토리에서 모두 변경된 경우 여기에서 병합 문제를 해결해야합니다. rebase이 원활으로 완료되면, 당신은 밀어 준비 :

git push origin local-branch 

깨끗한 직선 자식 분기를 유지합니다.

+1

'git pull'은 정상적으로'git fetch' +'git merge'이지만 구성 변경으로'git fetch' +'git pull'으로 구성 될 수 있습니다 - 자세한 내용은 http://randyfay.com을 참조하십시오./content/simpler-rebasing-avoiding-intentionally-merge-commit –