- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在使用 git,但我很高兴听到与其他 SCM 相关的答案。
我有一些只与我相关的小更改(使用不同的构建方案,仅与我的配置相关),我真的需要它们。
当然,正确的做法是将它 merge 到主干中,但是直到我将它 merge 到主干中,我必须保留一个不会提交的更改列表。
假设我需要更改我的 makefile 使其具有 CC=mygcc
(因为我需要 gcc 符号链接(symbolic link)指向我正在编译的其他软件的错误版本),但我不不想提交(其他人不想,所以其他人不想拥有 mygcc
符号链接(symbolic link))。
我该怎么做才能轻松同步和更新主存储库?
最佳答案
这真的是对Elazar Leibovich's second option的评论这对于评论来说有点失控了:)在提交图术语中,我基本上会做与选项 2 相同的事情,但维护一个有我的更改的本地分支而不是留在 master 上。换句话说,通常的状态是这样的:
A --- B --- C (master,origin/master) --- D --- E (local)
...如果我想从 master 更新,我会这样做:
git checkout local
git fetch origin
git rebase origin/master
... 去:
A --- B --- C (master) --- F --- G (origin/master) --- D' --- E' (local)
如果我在 local
上添加了更多提交,我会将其设为 git rebase -i origin/master
以便我可以确保我的 D
和 E
仍然是历史上最新的。
与 Elazar Leibovich 的选项 2 相比,它的优势在于它降低了您使用 git push
或不小心将本地更改推送到 master
的风险git push master
,因为您的本地更改永远不会在 master
分支上,并且远程不应该有名为 local
的分支。 (如果有,选择不同的名字,显然:))
当你确实有一些东西想要推回到master
时,例如这里的提交H
和I
:
A -- B -- C (master) -- F -- G (origin/master) -- H -- I -- D'' -- E' (local)
...你会这样做:
git checkout master
git merge I
git push origin master
关于svn - 维护一组不提交给 SCM 的小改动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5513945/
我是一名优秀的程序员,十分优秀!