2013-03-06 5 views

답변

1

왜 현재 분기를 시작해야합니까? 말썽 같이 들린다.

어떻게 최신 마스터를 구한 다음 차이점을 비교해보십시오. 그런 식으로 당신은 당신이 들어오는 것을 모른 채 병합하지 않습니다.이 경우

이 :이 기능 지점에
# in your master branch do 
git pull origin master 

스위치 작업중인

:

git checkout your_branch_name 

을 지금 당신은 당신의 새로운 지점에있어 당신이 차이를 볼 수 있습니다 (녹색 존재 당신이 추가 한 것은 색상을 가정하면 도이하지 않고 마스터에서 DIFF을 볼 수 있습니다 물론

git diff master 

)도에 체크 아웃하십시오. 따라서이 경우 원본 마스터를 가져 와서 diff를 수행합니다.

# in master 
git pull origin master 

# now do a diff while still in master 
git diff your_new_feature_branch 
+0

마스터를 체크 아웃하려고하면 "오류 : 현재 색인을 먼저 해결해야합니다."라는 메시지가 나타납니다.이 의미는 무엇을 의미합니까? – FluxEngine

+0

로 변경되었을 수 있습니다. 'git status'를 체크합니다. 변경이 있다면'git add .'와'git commit -m "some comment'을 추가 할 수 있습니다. 그리고 나서 여러분은'checkout' – AdamT

+0

을 바꿀 수 있습니다. 변경을 원하지 않는다면'git checkout some_file_you_dont_want .rb' – AdamT

2

먼저

git pull origin 

이 작업을 수행 한 후 원격

에서 모든 가지를 당겨, 모든 가지 (마스터 포함)을 뽑아 한 것입니다.

이제 당신은 그래서 당신이 당신의 현재 지점에 주인을 병합 할 :

git merge master 

자동으로 다음 충돌을 해결하는 경우가 를 완료됩니다.

이 아니라면 자동으로 변경 사항을 병합하지 않으므로 충돌을 해결해야합니다.

당신이

같은 창이 나타납니다 이제 그냥 sudo aptitude install meld

을 우분투에 (예를 들어 MELD은 diff 도구를 설치 충돌 편집 귀하의 ~/.gitconfig를 해결

[merge] 
    tool = meld 

을 추가하려면 에

Meld screenshot

로컬 버전을해야합니다 왼쪽은. 오른쪽에는 원격 버전?을해야합니다 엔.

중간에 병합 후 원하는 상태입니다. 양쪽에서 모든 비트를 선택하여 선택하고 가운데에 넣으면 (Ctrl + S) 저장하고 meld를 종료하십시오. 힘내라는 이제 병합해야 할 다음 파일에 대해 알려줄 것이고 병합을 마칠 때까지 똑같이 할 것이다.

끝 부분에서 git diff을 수행하여 수행 한 병합이 올바른지 확인할 수 있습니다.

코드를 실행하여 원하는대로 작동하는지 확인하십시오.

그런 다음 git commit -am "commit_message"을 커밋하고 변경 사항을 지점으로 푸시합니다.

0

병합 및 리베이스 모두 장점과 단점이 있습니다.

rebase의 장점 : 은 'master'의 현재 헤드가 현재 분기의 조상이된다는 점에서 커밋 기록을 "보다 깨끗하게"유지합니다. 때때로 사람들은 역사상 너무 깊숙이 묻힌 공통 조상을 좋아하지 않습니다. 커밋하기 전에 항상 기능 브랜치를 마스터에 리베이스하는 정책이 있습니다.

리베이스의 단점 : 브랜치의 히스토리를 완전히 다시 작성합니다 (모든 sha1은 다름). 귀하 또는 다른 누군가가 귀하의 지사 지점을 만든 다음 그 지점을 다시 합치려고하면 문제가 발생할 수 있습니다.

가능한 가장 좋은 방법은 널리 퍼블리싱되지 않아서 다른 가지의 기초가 아닙니다.

관련 문제