git中的分支相关 fetch merge 之类的

好久没写了 不知道写什么东西好 就没写了 也太懒了自己

之前git相关的简单的命令 pull push clone add commit 之类都用的很熟练了 之前合作开发的时候也都是用的同一个远程git地址 但是最近都是用fork的形式来合作开发的 所以 就涉及到多远程源了

一个项目 git@A:a.git 有两个人 A与B 或者更多 a是由A负责管理的 B是参与开发者 是不能直接提交到a的 无论是master还是其他分支 以前我都会是让master给A管理 合并啊 push啊 都是A 然后单独开个其他的分支必然dev给B B只能在dev上操作 虽然没什么问题 但是不好

现在我们用fork的方法 , 会让B fork一份a到自己的仓库 git@B:b.git 这时候b和a内容是一样的 B吧b clone一份到自己的本地 然后 把a添加到远程仓库 git remote add gita git@A:a.git 然后查看所有分支就可以看到一个叫gita的仓库了git fetch gita master:test 这句的意思是 把gita上面的master fetch到本地的test 这样的话test就能和gita保持一致了 然后再将本地master与test合并 git merge test 可以看到 这些操作里面都没有涉及到分支的切换 就完成了merge 或者直接一步 git pull gita master:master 或者是直接省略 git pull gita master 由此我才明白 pull 和push 完整的参数的列表 原来还有一个参数表示远程地址的啊 merge了后 把master push到b 然后向a发起merge request A接受就可以了 或者也可以手动合并 把b添加到自己的远程 获取最新数据 然后合并

由上也可以看出来fetch和pull的区别 fetch 只获取数据并建立新分支 然后需要我们手动合并分支 pull获取数据后直接与指定分支合并

关于那个远程仓库的名称 默认的仓库名字叫做origin 可以添加多个仓库 如果有多个仓库 多个分支的话 pull push后面参数就要写明确了 pull 远程仓库名 远程仓库分支:本地分支 还有 push远程仓库名 本地仓库分支:远程分支 如果不写仓库名的话就会默认origin 如果本地分支和远程分支一样名字的话可以只写一个分支名 如果分支名不写的话 默认远程为仓库中名字和当前本地分支一样的那支

不知道好不好有点乱 记录一下