使用git管理仅限本地的更改

Pet*_*der 9 git version-control merge git-merge

在我的本地分支上,我对Makefile进行了一些个人(仅限本地)更改(只是更改了编译器的路径).显然我不想提交这些更改,因为它们只与我有关.但是,如果我不提交它们,那么当我尝试与远程分支同步时出现错误:

% git fetch upstream
% git merge upstream/master
error: Your local changes to 'Makefile' would be overwritten by merge.  Aborting.
Please, commit your changes or stash them before you can merge.
Run Code Online (Sandbox Code Playgroud)

每次发生这种情况时,存储然后取消存储文件似乎很乏味.例如,在Perforce上,您只需将这些文件移动到单独的更改列表中,并在必要时解决合并冲突.

我想要发生的是让git自动将我的本地Makefile与远程的Makefile合并(如果可能),但不必提交它.我怎么会这样做?

Jac*_*ter 8

有几种方法可以解决这个问题,这是我的想法.

创建一个新makefix分支并在那里提交makefile.每当您需要创建项目时,请切换到该分支.你可以工作,master只是继续合并,或者重新定位makefix分支master.

一般的想法是,你正在创建一个包含你的分支Makefile,从不推动.

就个人而言,我会makefix反对,master所以我的Makefile变化始终领先于实际的可推送代码.它让我感觉更清洁.

代码示例

git branch makefix
git checkout makefix
Run Code Online (Sandbox Code Playgroud)

进行更改 Makefile

git add Makefile
git commit -m "Add Local Makefile Changes to Compiler Path"
Run Code Online (Sandbox Code Playgroud)

对于每天的工作

git checkout master
git fetch upstream
git merge upstream/master

git checkout makefix
git rebase master
Run Code Online (Sandbox Code Playgroud)

这很长很难看,所以我希望别人有更好的方式=]