我有两个分支,历史很少,但彼此相关。
我希望在一个 git commit中对这两者进行更改。
文件已在这些补丁之间删除并创建,我希望补丁能够反映出
即:以下内容不起作用:
git diff branch_a branch_b -- > patchfile
git checkout branch_b
git apply patchfile # deletes and adds are ignored
git commit # we miss the deletes
答案 0 :(得分:79)
一种简单的方法是:
git branch tmp branch_a && git checkout tmp
)git reset --soft branch_b
git commit
该提交必须具有所有diff
答案 1 :(得分:9)
如果您有两个分支机构:
has-changes
needs-changes
您想将更改从has-changes
移到needs-changes
,然后执行以下操作:
git checkout -b deleteme has-changes # Create temporary branch to build commit on
git reset --soft needs-changes # Move diff into index
git commit # Create the diff patch commit
git checkout needs-changes
git cherry-pick deleteme # Apply the diff to the needs-changes
git branch -D deleteme # Delete the temporary branch
如果您不关心has-changes
被修改(或者您更喜欢以其他方式保存它),可以将其稍微简化为:
git checkout has-changes
git reset --soft needs-changes
git commit
git checkout needs-changes
git cherry-pick has-changes
答案 2 :(得分:0)
这一切都归结为基于branch_a的临时分支顶部的“ git reset --soft branch_b”,并将结果提交回branch_b。
这是逐步进行的过程:
mex -largeArrayDims -v -g rx_samples_to_file.cpp ...
'-IC:\Users\VINAYAK KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\uhd' ...
'-IC:\Users\VINAYAK KARANDIKAR\Documents\MATLAB\MATLAB\Thesis\MATLAB_USRP_INTERFACE\UHD_sample_programs_from_GitHub\boost_1_55_0\boost' ...
'-LC:\Program Files\MATLAB\R2013b\extern\lib\win64\microsoft' ...
uhd.lib libmx.lib libmex.lib libmat.lib
答案 3 :(得分:-3)
请参阅git apply --index
。这就是它什么都不做的原因。
另外,请确保您位于根目录中,因此.git
必须在那里。