日常开发中,可能会遇到需要将develop分支最后一次提交(最后一次提交会包含多个文件)某一个文件(或者多个文件,)代码合并到master分支,进行发布。如果直接用marge 就会将最后一次提交的所有文件全部合到master不符合要求。
例如:将test分支上UserEntity.java 文件合并到 develop分支上
解决方案一:
1. 先在test进行一次提交,然后切换到 develop分支 // -- 用于分割文件,这里使用文件的绝对路径 ,如果文件在项目的根路径下,直接写文件名即可 2. git checkout --patch test -- D:/project/test/src/com/ratel/entity/UserEntity.java ratel@DESKTOP-HRDC9NJ MINGW64 /d/project/test (develop) $ git checkout --patch test -- D:/project/test/src/com/ratel/entity/UserEntity.java diff --git b/src/com/ratel/entity/UserEntity.java a/src/com/ratel/entity/UserEntity.java index 847fcda..f2591f0 100644 --- b/src/com/ratel/entity/UserEntity.java +++ a/src/com/ratel/entity/UserEntity.java @@ -15,4 +15,5 @@ public class UserEntity { private String hobby; private String phone; // 测试git + //测试git01 } Apply this hunk to index and worktree [y,n,q,a,d,e,?]? y //如果确定没问题 一直输入y即可,如果有问题输入n 即可中止操作。 ratel@DESKTOP-HRDC9NJ MINGW64 /d/project/test (develop)
可能会出现文件如果项目中存在一个 test 文件目录(和分支同名的文件目录)就需要使用 文件前加 – 进行区分,否则会报如下错误:
$ git checkout --patch test src\com\ratel\entity\UserEntity.java fatal: ambiguous argument 'test': both revision and filename Use '--' to separate paths from revisions, like this: 'git <command> [<revision>...] -- [<file>...]'
解决方案二:
1. 先在test进行一次提交,然后切换到 develop分支 2. 如果只是简单的将test分支的文件UserEntity.java copy到develop分支上,直接执行下面命令,(这样操作会覆盖掉develop分支同名文件,develop分支UserEntity.java 做的更改将会被覆盖) git checkout test -- D:/project/test/src/com/ratel/entity/UserEntity.java