作者回复: 根据你的问题,我先查了merge命令,且动手测试了,发现该命令不提供这个功能,但是有其他方法。 以后大家有问题,可以google或必应上用英文搜索git的问题。https://stackoverflow.com/questions/5717026/how-to-git-cherry-pick-only-changes-to-certain-files 这里面我看 git show SHA -- file1.txt file2.txt | git apply --cached - 这个方法应该可以满足你的要求。 假设 f1 和 f2 两个分支,f2改了 readme ,a.java,b.java这三个文件,f1 想直接把f2最新修改的 readme 和 b.java 同步过来。那么: 1)先切换到 f1 分支。 2)执行 git show f2 -- readme b.java | git apply - 3) f1 测试没问题后,再执行 add 和 commit 命令 4)f1 的readme和b.java内容就喝 f2 相同了。
作者回复: 🐂
作者回复: 你们看起来配置了专门的集成人员,你就充当了类似的角色。我补充说一下,如果你是懂业务并懂开发的,那么你来做这个涉及集成的一系列的工作,倒也挺好。 否则就让开发自己来做集成。 为了早点发现集成是否有冲突,或者集成是否能通过一些列的测试,你们团队可以考虑用工具帮你们尽快发现集成的问题。找一些持续集成的资料看看吧,可以借助 Jenkins 或 其他CI工具试试吧。
作者回复: "另外就是,试过在在命令行里用git checkout 直接切换到远端branch,貌似会到一个分离头指针的状态,不知道为什么,望老师指点。" 远端分支只能看,不能用于呈现远端的变更。用 checkout 的目的是切换到某个分支,继续变更。因此,为了保证远端就是远端,不用于本地变更,所以变成分离头了,省得误导大家(以为切换到远端分支,生成commit,难不成远端分支就发生变化。这种理解是不对的。)
作者回复: 某文件先纳入到git管理,后面在.gitignore里添加了该文件,只会让git以后不会添加此文件。 如果仅仅想从现在开始不要有该文件,那么git本地用git rm 删除掉该文件,然后push到远端即可。 如果在远端删除了该文件,那么git pull --rebase 后,本地分支也会随着远端一样删除掉该文件。 假如有些敏感信息提交了,想彻底地从该仓库删除不该上传的文件,不妨看一下github提供的方法: https://help.github.com/articles/removing-sensitive-data-from-a-repository/