上一篇文章介绍了Git远程仓库的一些使用,但是还是有些东西需要补充一下,所以有了这个续篇。

.gitignore

前一篇中,我们介绍了Git的patch功能,当我们生成patch之后,"git status"就会显示patch文件是"Untracked files"。当然,我们也没有必要去跟踪这个patch文件。

同样,项目中可能会经常生成一些Git系统不需要追踪(track)的文件,在编译生成过程中 产生的文件或是编程器生成的临时备份文件。我们可以在使用"git add"是避免添加这些文件到暂存区中,但是每次都这么做会比较麻烦。

所以,为了满足上面的需求,Git系统中有一个忽略特定文件的功能。我们可以在工作目录中添加一个叫".gitignore"的文件,来告诉Git系统要忽略哪些文件。

可以看到,当我们使用添加过".gitignore"文件后,文件中的过滤规则就生效了。

注意:

  1. 在windows环境中不支持文件名为".gitignore",所以可以把文件命名为".gitignore."
  2. ".gitignore"文件只会对当前目录以及所有当前目录的子目录生效;也就是说如果我们把".gitignore"文件移到"advance"文件夹中,那么过滤规则就是会对"advance"及其子目录生效了
  3. 建议把".gitignore"文件提交到仓库里,这样其他的开发人员也可以共享这套过滤规则

过滤语法

下面介绍一下常用的过滤语法:

  • 斜杠"/"开头表示目录
  • 星号"*"通配多个字符
  • 问号"?"通配单个字符
  • 方括号"[]"包含单个字符的匹配列表
  • 叹号"!"表示不忽略匹配到的文件或目录

下面举一些简单的例子:

  • foo/*:忽略目录 foo下的全部内容
  • *.[oa]:忽略所有.o和.a文件
  • !calc.o:不能忽略calc.o文件

exclude文件

在Git仓库中有一个".git/info/exclude"文件,当我们指向对特定的仓库使用特定的过滤规则时,我们可以把过滤语句写在exclude文件中。

细看远程仓库命令

前面一篇文章简单的介绍了push、pull命令的使用,这里将进一步展开介绍。

首先,我们看看"git branch"和"git remote"命令,它们可以给我们提供很多有用的信息。

  1. git branch

  2. git remote

git push

push命令用来将本地分支的更新推送的远程仓库,该命令的格式如下:

git push <远程主机名> <本地分支名>:<远程分支名>
  1. 通过"git push"更新、创建远程分支

  2. 通过"git push"删除远程分支

  3. 省略分支信息的"git push origin"

    通过这种方式push的时候,报出了一个警告,提示"push.default"没有设置。

    在Git中push有两种设置:

  • simple方式:只是推送当前分支的更新到对应的远程分支;在Git 2.0以后就默认使用这种方式
  • matching方式:会推送所有有对应的远程分支的本地分支

根据Git的提示,我们可以通过"git config --global push.default"来设置push方式。

git pull

pull命令的作用是取回远程某个分支的更新,然后合并到指定的本地分支,pull命令格式如下:

git pull <远程主机名> <远程分支名>:<本地分支名>
  1. git pull origin release-1.0:release1.0

    取回origin主机release-1.0分支的更新,与本地的release-1.0分支合并。

    一般来说,pull命令都是在关联的本地分支和远程分支之间进行;当然,你可以使用不关联的本地分支和远程分支进行pull操作,但是不建议这么做。

    如果真的需要别的远程分支上的更新,建议使用"cherry-pick"把这个更新拿到关联的远程分支上,然后在关联分支上进行pull操作。

  2. 省略本地分支名:git pull origin release-1.0

    表示取回origin/next远程分支的更新,然后合并到当前分支

  3. 如果当前分支存在上游(关联)分支,可以直接使用git pull origin

    表示本地的当前分支自动与关联的origin主机分支进行合并

"git pull"操作实际上等价于,先执行"git fetch"获得远程更新,然后"git merge"与本地分支进行合并。

当然,pull命令也支持使用rebase模式进行合并:

git pull --rebase <远程主机名> <远程分支名>:<本地分支名>

在这种情况下,"git pull"就等价于"git fetch"加上"git rebase"。

建议使用"git fetch"加上"git rebase"的方式来取代"git pull"获取远程更新,具体原因后面再介绍。

git fetch

fetch命令比较简单,作用就是将远程的更新取回到本地。

  1. git fetch origin

    该命令表示将远程origin主机的所有分支上的更新取回本地

  2. git fetch origin master

    该命令只取回远程origin主机上master分支上的更新

总结

通过这些介绍,相信大家一定会更加熟悉远程仓库操作命令,使得在Git环境中工作的更加顺利。

Git Step by Step – (7) Git远程仓库(续)的更多相关文章

  1. Git版本控制工具(三)----远程仓库GitHub的使用

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  2. 初次使用git上传代码到github远程仓库

    https://blog.csdn.net/loner_fang/article/details/80488385 2018年05月28日 21:02:31 蒲公英上的尘埃 阅读数:697 因为最近在 ...

  3. Git推送到多个远程仓库

    Git推送到多个远程仓库 Grey 原文地址 准备工作 在码云和Github上分别新建两个不包括任何文件的空仓库(若是两个已经有文件的仓库,请参见关联已经存在的项目) https://github.c ...

  4. 一、Git的一些命令操作----创建版本库、增加文件到Git库、时光机穿梭、远程仓库

    具体详细教程请链接:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 我这里只是记录 ...

  5. 使用git上传代码到github远程仓库

    一.新建代码库注册好github登录后,首先先在网页上新建代码库. 点击右上角"+"→New repository 进入如下页面:按照要求填写完成后,点击按钮创建代码库创建成功. ...

  6. Git 系列教程(8)- 远程仓库的使用

    查看远程仓库 如果想查看你已经配置的远程仓库服务器,可以运行 git remote 命令,它会列出你指定的每一个远程服务器的名称 如果是刚 clone 下来的自己的库,能看到 origin,这是 Gi ...

  7. iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )

    一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的   git的起源 作者是Linux之父:Linus Bened ...

  8. git——学习笔记(二)远程仓库

    GIT杀手锏之一——远程仓库 拥有远程仓库的两个办法 1:搭一个Git服务器  2:在GitHub上免费托管的Git仓库 本地仓库   远程仓库 一.在GitHub上免费托管的Git仓库 电脑: 1. ...

  9. Git ~ 大杀器之一 远程仓库 ~ Git

    一般情况ixashi找一台电脑作为服务器的角色 , 每天24小时开机 , 其他扥每个人都从这个 “服务器” 仓库里面克隆一份到自己的电脑上面 并且将各自的提交推送到服务器仓库中 , 也可以从服务器仓库 ...

  10. Git实现从本地加入项目到远程仓库

    Git是如今最流行的版本号控制系统之中的一个了,今天也试试了.成功了上传了远程仓库,接下来看看我是怎么做的. 1.首先,要有git的账号.点击查看怎么注冊? 2.注冊成功之后.登陆GitHub.然后, ...

随机推荐

  1. 【嵌入式】——arm裸机开发 step by step 之 串口通信

    一.在使用S5PV210的串口发送和接收的时候,首先要对S5PV210的串口进行配置,我们使用轮询方式时的配置有哪些? 1.配置GPIO,使对应管脚作为串口的发送和接收管脚 GPA0 0 1 管脚 2 ...

  2. 微信支付WxpayAPI_php_v3(三)支付成功回调

    接收回调通知后的业务处理都在NotifyProcess做,$data包含了微信返回给你的数据. Service: <?php /** * Created by PhpStorm. * User: ...

  3. Html5學習重點清單

    SVG webSQL 數據庫 SSE 服務推送 MathML 基於xml語法 Web 存储 webSockets通信 canvas 畫布操作 音頻和視頻 地理位置 Geolocation API We ...

  4. [spark 快速大数据分析读书笔记] 第一章 导论

    [序言] Spark 基于内存的基本类型 (primitive)为一些应用程序带来了 100 倍的性能提升.Spark 允许用户程序将数据加载到 集群内存中用于反复查询,非常适用于大数据和机器学习. ...

  5. python3 实现mysql数据库连接池

    首先声明一下,这篇博客进行了通过自己的代码方式,加上这篇博客,最后总结出这段代码.参考博客连接:http://blog.csdn.net/zbc1090549839/article/details/5 ...

  6. Unity如何内置Visual Studio

    一.问题的起源 软件环境:Unity 2017.3.0f3,Visual Studio 2013 问题描述:在Unity中创建C#脚本后,准备双击打开进行编辑时,出现了Fatal Error. 二.问 ...

  7. 嵌入式开发之hi3519---spi nor flash启动

    author:pkf qq:1327706646 1.官方hi3519默认是硬件3byte 地址模式,配置完ddr始终后,sdkv100.020是可以支持正常启动,用到低位16Mflash内存 2.如 ...

  8. 嵌入式开发之uart---rs232 和rs485 和rj45和usb简介

    (1) profilebus和can(control控制器局域网)和hub(集线器) (uart)通用异步传输 rs232: ibm 提出的,两根线,按位bit传输,是端到端的单信号电平模式,理论上有 ...

  9. Python——eventlet.hubs

    Hub构成了 Eventlet 的事件循环,它分发 I/O 事件.调度 greenthread.Hub的存在使得协程被提升为 greenthreads. Eventlet 有多种hub的实现,所以在使 ...

  10. HttpClient后台post 请求webapi

    1.请求方法 /// <summary> /// httpClient 请求接口 /// </summary> /// <param name="url&quo ...