2013-10-17 3 views
0

여기 내 상황 : 우리는 C 프로젝트에서 2 명이 일하고 있으며 bitbucket과 git을 DVCS로 사용합니다. 우리는이 시스템에 정말 익숙하며 잘 사용하는 법을 모릅니다.Git은 당길 때 충돌 파일을 병합합니다.

사용자 A가 변경 사항을 적용하고 사용자 B가 수정 사항을 가져 오려면 여기를 클릭하십시오 (사용자 B는 이미 다른 파일을 사용 중입니다).

$ 자식 끌어 오기 원산지 마스터

오류 :/

  • 빈 App.exe가
  • 빈/App.pdb
  • 을 다음 파일에 대한 지역 변경 병합 덮어 쓰기 될 것이다
  • App.csproj

나는 우리가 컴파일 할 때 그들은 항상 다른만큼 두 첫번째 파일을 덮어 쓸 상관 없어, 나는 그것을 대체 상관 없어,하지만 우리는 경우 세 번째 큰 수 그것을 합칠 수 있습니다.

우리는 인터넷에서 검색 한 결과 사용자 B가 repo ..를 재설정해야한다는 것을 알았습니다. 그는 잃어버린 파일을 수정하여 매우 어리 석습니다.

그럼이 모든 파일을 병합하는 솔루션은 무엇입니까?

감사합니다.

+0

왜 당신도 추적하고 구축 결과 (예 : .exe 파일)? 나머지 부분만을 재건에 충분 메이크처럼 소스 코드와 다른 것들을 추적 - 나는 추적에서 사람들을 제거하는 것이 좋습니다 생각합니다. – twalberg

답변

1

$ git stash과 같은 작업을 수행하여 변경 사항을 숨긴 다음 원격 저장소에서 변경 사항을 가져온 다음 $ git stash pop해야하는 변경 사항을 겹쳐 써야합니다. 이렇게하면 B가 이미 커밋 한 모든 변경 사항을 갖게되고 변경 사항을 팝업 위에 올리면 사본을 얻게되며 변경 사항을 커밋하고 원격으로 푸시하는 것이 안전합니다.

  1. $ git stash
  2. $ git pull origin master
  3. $ git stash pop

  4. , 변경

  5. 단계들을 만들 커밋 밀어 그들을

변경 사항을 가져 오지 않으려면 항상 fetch을 먼저 수행 한 다음 merge을 수행하십시오.

난 여기가 도움이되기를 바랍니다 및 이 가져 병합 풀에 비슷한 질문에 대답했다 : https://stackoverflow.com/a/19296457/981616

0

에 내 솔루션은 다음과 같습니다 두 명령 위

git checkout bin/App.exe 
git checkout bin/App.pdb 

그 변화를 재설정합니다 파일이 있으면 다음과 같이 입력합니다.

git stash 

ommand 그때 내가 할 수있는, 일시적으로 내 변화를 숨겨 놓은 것입니다 : 사용자 B에서 이전 커밋이 충돌을하지 않을 경우

git pull origin master 

풀은 어떤 병합 충돌하지 않고 갈 생각입니다, 당신은 다시와 함께 올 수 있습니다 명령 별 숨겨진 변경 사항 :

git stash pop 

병합 충돌이 발생하면 해결해야합니다.

0

다른 용액, 하나 빠르게하지만, 리모콘으로부터의 변화를 당길 수 있도록 자기 지역의 변화를 저지하는 사용자 B에 대한 보관 한 것보다 고급.

git add -A 
git commit -m "Commit before pull" 

해당 사용자 B가 문제

0

나는이 이미 답 것을 볼 수 있지만, 나는 몇 가지 팁 귀하의 경우에 유용 할 수 있습니다 생각없이 뽑을 수 후.

  1. git repo에 * .exe를 포함하지 마십시오. 그 (것)들을 추적하는 아무 점도 없다, 당신의 사람 중 하나가 다른 컴파일러 버전이있는 경우에 변화 할지도 모르다.
  2. .gitignore에 * .exe 파일을 추가합니다. 당신의 자식의 repo 루트 폴더에서 이미 존재하지 않는 경우 파일 .gitignore을 만들고, 거기에 *.exe 표현을 추가 할 수 있습니다.
  3. 는 이미 추가 *.exe 파일을 제거 당신은 유사하게 어떤 C 컴파일 된 출력 파일에 대한 표현 *.o를 추가해야 git rm -r --cached '*.exe'
  4. 사용하고 *.pdb에 대한 또 하나. 우다이의 대답 @, 그것을 거의 요약을 로컬 변경 사항을 무시에 관해서는

- 당신은 다음 git pull origin master를 수행 git stash 할 필요가있다. 그 다음에 git stash pop입니다.

마지막 git stash pop 문에 첨부 된 caveat이 있지만 병합 충돌이 발생하면 숨긴 항목을 명시 적으로 삭제해야합니다.

관련 문제