使用远程仓库:

  • 查看当前远程库://克隆后,至少有一个名为 origin 的远程库,Git 默认使用这个名字来标识你所克隆的原始仓库

    • git remote -v: 并显示所有远程库的地址;
  • 添加远程仓库: 
    • git remote add [local_origin] [url]:
    • git push -u [local_origin] master //第一次推送master分支时,加上了-u参数,把本地的master分支和远程的master分支关联起来
    • git push [local_origin] master ;
  • 查看远程分支:
    • git branch -a
  • 从远程仓库抓取数据: 
    • git fetch [remote-name]  ;//如果是克隆了一个仓库,使用git fetch origin (git fetch origin remote_branch);fetch 只是将数据拉到本地仓库,并不自动合并;
    • 如果设置了某个分支用于跟踪某个远端仓库的分支,可以使用 git pull 命令自动抓取数据下来;
  • 推送数据到远程仓库: git push [remote-name] [branch-name]:

    • 例子:把本地的 master 分支推送到origin 服务器上 git push origin master
  • 创建远程分支:

    • git push origin [name];
    • 利用本地分支[name],创建远程同名的分支;
    • 注意未创建之前本地分支[name]推送到本地切出来分支对应的远程分支;
  • 删除远程分支:
    • git push origin --delete <remote_name>
  • 获取远程分支映射
    • git checkout -b local_name  orgin/remote_name;
    • 如果出现问题,先运行 git fetch,再运行上面的命令

分支管理:

  • 当前分支:一个指向你正在工作中的本地分支的指针HEAD
  • 新建分支: git branch <branchname>
  • 切换分支:   git checkout <branchname>  //此时HEAD指向新的工作分支
    • 简化:git checkout -b <branchname>
  • 删除分支:git branch -d <branchname>
    • 不能这样删除还未合并进来的分支,使用 git branch -D <branchname>强制删除;
  • 重命名分支: git branch -m <branch_name> <new_name>
  • 显示所有分支: git branch
    • 显示所有分支同时包括各个分支最后的提交:  git branch -v
    • 查看哪些分支已被并入当前分支(直接上游):  git branch --merged / --no-merged
  • 一般分支类型:
    • master分支是主分支,因此要时刻与远程同步;

    • dev分支是开发分支,所以也需要与远程同步;

    • bug分支只用于在本地修复bug,就没必要推到远程;

    • feature分支是否推到远程,取决于实际开发情况。

合并:将目标分支合并到当前分支 git merge <targetbranch>

  • Fast-forward: 顺着单线分支合并,只是将指针右移,如下

c4合并到c2;

    • 分叉分支合并:

这次合并操作的底层实现,Git 会用两个分支的末端(C4 和 C5)以及它们的共同祖先(C2)进行一次简单的三方合并计算 ;

对三方合并后的结果重新做一个新的快照,并自动创建一个指向它的提交对象,它有两个祖先;值得一提的是 Git 可以自己裁决哪个共同祖先才是最佳合并基础;

    • 遇到冲突时的分支合并:     //这时必须手动选择内容解决冲突

      • 运行git merge <targetbranch>之后,git作了合并,但没有提交,它会停下来等你解决冲突;
      • 使用git status查看发生冲突的文件;
      • 进入文件:会显示格式:

<<<<<<< HEAD
head分支冲突部分的内容
=======
目标分支冲突部分的内容
>>>>>>> <targetbrach>

1-press "i"
2-write your merge method
3-press "esc"
4-write ":wq" then press enter

  

    • 在手动修改完毕并删除多余符号之后可以将其添加到暂存区后提交了;添加暂存时会询问是否确定修改完毕;
    • 用git log --graph命令可以看到分支合并图。
  • 非Fast-forward合并:
    • git merge --no-ff -m "merge with no-ff" dev
    • 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

衍合: //与分支合并(merge)不同,分支衍合(rebase)是把一个分支里提交的改变移到另一个分支里重放一遍;

  • $ git checkout experiment
    $ git rebase master

它的原理是回到两个分支最近的共同祖先,根据当前分支(也就是要进行衍合的分支 experiment)后续的历次提交对象(这里只有一个 C3),生成一系列文件补丁,然后以基底分支(也就是主干分支master)最后一个提交对象(C4)为新的出发点,逐个应用之前准备好的补丁文件,最后会生成一个新的合并提交对象(C3'),从而改写 experiment 的提交历史,使它成为 master 分支的直接下游,如图 所示:

现在回到 master 分支,进行一次快进合并:

其结果是和merge相同的,但会有个更简介的提交历史;

本地分支rebase之后可能不能进行push,这时候使用git push -f;

多人协同工作:

  • 查看添加的远程地址: git remote -v
  • 添加远程地址: git remote add [name] [url]
  • git fetch [name]
  • 操作: git push/pull [name] [origin_branch]

切出commit分支  

  • git branch -b [new_name] [hash]

git学习 远程仓库02的更多相关文章

  1. git学习——远程仓库操作

    查看当前的远程库——git remote 列出了仅仅是远程库的简单名字 可以加上-v 现实对应的克隆地址 添加远程仓库——git remote add [shortname] [url] git re ...

  2. Git学习 -- 远程仓库

    第1步:创建SSH Key 在用户目录下的.ssh目录中,查看是否有id_rsa和id_rsa.pub两个文件,若没有则通过以下命令生成秘钥对: $ ssh-keygen -t rsa 第2步:登陆G ...

  3. 139.00.004 Git学习-远程仓库之Github

    参考Github官方HelloWorld入门教程 "有了远程仓库,妈妈再也不用担心我的硬盘了."--Git点读机 本章开始介绍Git的杀手级功能之一(注意是之一,也就是后面还有之二 ...

  4. 为git创建远程仓库

    首先生成ssh公钥: 将公钥添加到git: 测试秘钥是否通过: 然后就可以到web界面看到标注的地方被绿了: 但是我的没有绿,不知道为啥,难道没有女朋友的原因吗? rm -rf .ssh 重来好几遍都 ...

  5. Git 克隆远程仓库到本地

    Git 克隆远程仓库到本地 参考 $ git clone --help https://git-scm.com/book/zh/v2/Git-%E5%9F%BA%E7%A1%80-%E8%8E%B7% ...

  6. git 切换远程仓库,以及碰到的一个问题。

    git 切换远程仓库出现如下问题: $ git checkout -b localdev origin/dev fatal: Cannot update paths and switch to bra ...

  7. Git从远程仓库里拉取一条本地不存在的分支方法

    Git从远程仓库里拉取一条本地不存在的分支方法 从远程仓库里拉取一条本地不存在的分支时,进入到对应目录先执行git fetch然后再执行git checkout -b 本地分支名 origin/远程分 ...

  8. git从远程仓库中更新代码到本地仓库

    git从远程仓库中更新代码到本地仓库 有时候在使用git pull的时候,会莫名才报错.查了很多资料,尝试过git的很多命令.包括git fetch命令,都会报同样的错.最后终于发现了一条捷径,由网友 ...

  9. [转]git修改远程仓库地址

    原文链接:http://www.cnblogs.com/lazb/articles/5597878.html 问:Coding远程仓库地址变了,本地git仓库地址如何更新为最新地址 git修改远程仓库 ...

随机推荐

  1. [原]Android官方图片加载利器BitmapFun解析

    通过BitmapFun在项目中使用,结合代码了解一下BitmapFun加载图片的原理,以及最佳使用实践.本文说明不包括BitmapFun的缓存部分. Android开发在使用ListView和Grid ...

  2. 漫长Appium之路(一)——从黑苹果到虚拟机

    作为一名普普通通的实习生,我也开始习惯折腾一般的生活了.部门应该最近是要搞个iOS自动化测试工具,我从最开始说起吧. 应该是上上上周五.主管找到我,说要装一个黑苹果,要我尽快把黑苹果能支持的硬件配置给 ...

  3. [Effective JavaScript 笔记]第52条:数组字面量优于数组构造函数

    js的优雅很大程序要归功于程序中常见的构造块(Object,Function及Array)的简明的字面量语法.字面量是一种表示数组的优雅方法. var a=[1,2,3,5,7,8]; 也可以使用构造 ...

  4. UITableView 学习笔记

    http://www.cnblogs.com/smileEvday/archive/2012/06/28/tableView.html UITableView学习笔记 作者:一片枫叶 看TableVi ...

  5. [BZOJ1477]青蛙的约会

    [BZOJ1477]青蛙的约会 试题描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘 ...

  6. Coursera台大机器学习课程笔记9 -- Logistic Regression

    如果只想得到某种概率,而不是简单的分类,那么该如何做呢?在误差衡量问题上,如何选取误差函数这段很有意思. 接下来是如何最小化Ein,由于Ein是可凸优化的,所以采用的是梯度下降法:只要达到谷底,就找到 ...

  7. java笔试一

    JAVA相关基础知识2.String是最基本的数据类型吗?基本数据类型包括byte.int.char.long.float.double.boolean和short.java.lang.String类 ...

  8. [转]Ubuntu 系统 Update-rc.d 命令

    本文转自:http://wangyan.org/blog/ubuntu-update-rc-d.html 以防止原博客挂掉,特此做了备份. Ubuntu或者Debian系统中update-rc.d命令 ...

  9. Moebius集群:SQL Server一站式数据平台

    一.Moebius集群的架构及原理 1.无共享磁盘架构 Moebius集群采用无共享磁盘架构设计,各个机器可以不连接一个共享的设备,数据可以存储在每个机器自己的存储介质中.这样每个机器就不需要硬件上的 ...

  10. Mac 下 Chrome 浏览器 快捷键

    ⌘-Option-I 打开“开发人员工具”. ⌘-Option-J 打开“JavaScript 控制台”. ⌘-Option-U 打开当前网页的源代码. 转自: http://www.harbin-s ...