git과 bash의 조합으로 할 수 있습니다. 어떻게 수행 할 수 있는지 보여주기 위해 샘플 스크립트를 작성했습니다. 당신은 항상 그것을 수정할 수 있고 더 나아질 수 있습니다. 나는 또한 약간의 설명을 제공했다. 이 파일의 이름은 adder.sh
입니다.
#!/bin/bash
# $1 -> Files from the branch you want (core)
# $2 -> Branch you want to merge into (master)
git checkout $2
git diff --name-status $1..$2 | grep '^\(D\|M\)\s*' | cut -f2 > ~/.dummy
git checkout $1 -- $(cat ~/.dummy)
git add .
호출하려면 $ sh adder.sh core master
을 사용하십시오. 그 후에 core
지점의 모든 새로 추가되거나 수정 된 파일이 master
repo에 추가됩니다. git status를 사용하면 새로운 것이 무엇인지 알 수 있고 그에 따라 커밋하고 푸시 할 수 있습니다.
$ git commit -m "Skipping Conflicts"
$ git push
어떻게 작동하는지에 대한 일부 설명 :
$ git diff --name-status master..core
는 다음과 같은 출력을 생성합니다 :
M public/stylesheets/main.css # Modified
D public/templates/createUser.html # Present in core branch and not master (new file)
A public/templates/dashboard.html # Present in master and not in the core branch (don't touch)
그래서만을 수정하고 새로운 파일을 선택하는 간단한 정규식 쓰기를하고 적절한 형식으로 수정 한 다음 임시 파일에 저장하십시오.
$ cat ~/.dummy
public/templates/createUser.html
public/stylesheets/main.css
그런 다음 파일을 현재 분기에 추가해야하므로 git checkout을 사용해야합니다. git checkout
을 사용하는 방법은 this answer을 참조하십시오.
다른 방법이 있습니다. 공식적인 방법은 git rerere
입니다. the man page에서 : 토픽 브랜치가 (중 수행 한 "해제"지점에 합병, 또는 전송 될 때까지
워크 플로우가 상대적으로 긴 살았 주제 가지를 사용에서, 개발자는 때로는 또 다시 같은 충돌을 해결하기 위해 필요 아웃룩으로 받아 들여짐).
이 명령은 충돌이있는 자동 결과와 해당 수동 해결 결과를 초기 수동 병합에 기록하고 이전에 기록한 손 해상도를 해당 자동 완성 결과에 적용하여이 프로세스에서 개발자를 지원합니다.
참고 :이 명령을 사용하려면 구성 변수 rerere.enabled를 설정해야합니다.
This article은 명령과 그 사용 사례에 대한 적절한 개요를 제공합니다.
[submodule] (https://git-scm.com/docs/git-submodule)을 사용할 수 없습니까? –
'git checkout branch - files ...'를 원합니까? – o11c
힘내가 프로젝트 수준에서 일하고있다. 하위 모듈을 사용하지 않는 한 특정 파일에 대해 대체 리모컨을 "선택"할 수 없습니다. –