git是分布式的版本控制工具,可离线,svn是集中式的,要联网操作.集中式的所有数据都放在服务器端,如果服务器宕机,则历史记录也可能就丢失了,这叫做单点故障.分布式的数据可直接保存在客户端.

为何要版本控制呢?比如服务端有一段代码,小明和小红都准备对它进行修改,小明先改好并上传更新,过一会儿小红也改好了,也上传更新了,所以最终服务器端保留的仅有小红的代码,小明的被覆盖了,这是我们不愿看到的.

 git功能很强大:

  1.   允许多人并行协同修改服务端的文件;
  2.   数据可以备份,能保存提交过的历史状态,历史记录;
  3.   版本管理,采用文件系统快照的方式,不保存重复数据,节约存储空间,提高运行效率;
  4.   对团队中参与开发的人员进行权限控制,对团队外开发者贡献的代码进行审核;
  5.   分支管理,多线并行开发,提高效率.

至于git的命令,跟linux一样的风格,常用的有:

  1.   git init 初始化

  2.   git add file 添加到暂存区

    至于 warning: LF will be replaced by CRLF in good.txt.  用回车换行替换换行符

    git config core.autocrlf       我在windows上使用,True即可.

  3.    git rm --cached file 从暂存区移除

  4. git status  查看状态

  5. git commit file  提交到本地库

    提交会提示你添加注释,会调用编辑器,我的调用了sublime,不太习惯,还是喜欢vim,通过命令git config --global core.editor vim 实现更改.

  6.    cat file 查看文件内容,显示在主控台

  7.    git commit -m "注释" file   直接添加注释提交到本地库,就不用调用vim编辑器了

  8.  git log  查看版本

     若多屏显示,则 空格向下翻页,b向上翻,q退出

  9.    git reflog 简洁些, 有HEAD值 ,HEAD相当于指针,指向版本,操作它可实现版本切换

  10.   git reset --hard 部分哈希值如(9a4ehb3)    切换到对应的版本

  11.   git reset --hard HEAD^  回退一个版本,加几个^就回退几个版本

  12.   git reset --hard HEAD~3 回退三个版本

      通过命令git help reset 可以看出,这里的hard参数,表示将工作区,暂存区,本地库三者都回退到某个版本,对应的还有soft,mixed参数,soft只回退本地库,mixed回退本地库和暂存区

  13.   rm file 删除文件

      执行删除文件命令后,要提交到暂存区,再提交到版本库,才会在本地显示删除,若要找回,则回退到上个版本即可, git里的版本历史记录永久存在.若只提交到暂存区,则撤销删除: git reset --hard HEAD  . 这些删除找回操作都要求 文件已经存在于本地库.

  14.   git diff file 将工作区的文件与本地库进行比较

      git diff HEAD^ file 与上个版本比较,git对文件以"行"为对象,修改某一行,则显示删除某一行后新增某一行.

  15.   git branch -v 产看分支

  16.   git branch name  新建分支

  17.   git checkout name  切换分支

  18.   git merge branch_name  将别的分支合并到当前分支

      多分支修改同文件合并时会产生冲突,编辑冲突文件,删除特殊行,然后git add file,git commit -m "注释"  即可.

  19.   git remote add origin 远程库ip地址   给地址起个别名

  20.   git push origin master -u  推送到远程库master分支

  21.   git clone 远程库地址   克隆远程库到本地,自动初始化

      协作开发要先得到邀请,然后才能将克隆下来的文件修改后push到远程库

  22.   git pull origin master:branchtest  将远程主机origin的master分支拉取过来,与本地的branchtest分支合并。

      如果将冒号和后面的branchtest去掉,则表示将远程origin仓库的master分支拉取下来与本地当前分支合并。等价于:

        git fetch origin master   获取并下载远程库最新状态

        git merge origin/master    与本地的当前分支合并

对于项目的跨团队协作开发:

  A团队创建了项目的远程库aa,要求B团队也参与进来,B用自己的GitHub账号登陆后点击A的远程库,Fork一下,相当于把库aa复制到自己的账号里,再clone到本地,修改,添加,提交,推送,完成后像A发送pull request, 附上说明信息,A收到请求后, 查看修改,审核代码,再Merge pull request, 合并.

关于Git和GitHub的一些知识的更多相关文章

  1. 知识扩展——Git和GitHub的区别

    一直以为Git和GitHub是一个东西,直到我看到这个解释.... 转载自:git与github区别与简介 一开始接触git或是github的程序员可能搞不太清楚这些名词到底指代的是什么,所以在这里稍 ...

  2. Ubuntu下使用Git和GitHub

    刚刚学习git和github,网上的知识太杂太乱.照着折腾了很长的时间,都没有搞出个结果,心里十分痒痒,最后终于在github上看到成果.本文适合刚刚接触github但是急于想看到效果的同学,当然gi ...

  3. Git 一些关于 Git、Github 的学习资源

    一些关于 Git.Github 的学习资源 昨天浏览 Github 的是时候发现了 Githug 这个游戏,这个游戏用来帮助菜鸟们学习使用 Git 的. Githug is designed to g ...

  4. get最简单直接粗爆git与github教程

    Git是分布式版本控制系统(可以理解为文件管理拓展工具) github一个在线文件托管系统(可以理解为一个在线云盘) 准备工作,在git官网下载git软件件,安装git软件,以windows.为例,下 ...

  5. git和github的第一次接触

    我的github的helloworld链接: https://github.com/xuziqian111/hello-world/blob/master/helloworld.java 我的gith ...

  6. 使用git和github管理自己的项目---基础操作学习[转]

    原文: https://segmentfault.com/a/1190000003728094 我是通过看廖雪峰的git教程学习的,真的是极好的,以下是我学习过程中的总结,记录下来,方便自己参考以熟悉 ...

  7. 使用git和github进行协同开发流程

    (本文假设各位已经对基本git的基本概念.操作有一定的理解,如无相关git知识,可以参考Pro Git这本书进行相关的学习和练习) 很多项目开发都会采用git这一优秀的分布式版本管理工具进行项目版本管 ...

  8. Git和GitHub相关

    组员从GitHub上下载项目并上传项目的步骤如下 .组员接收到组长发的项目地址,组员需要从GitHub上把项目克隆下来,首先组员 需要在本地的一个文件夹里打开git,然后运行如下代码:git clon ...

  9. 适合小白的大白话讲解--->Git与Github的区别

    本文由 伯乐在线 - 听风 翻译,艾凌风 校稿.未经许可,禁止转载!英文出处:Red Radger.欢迎加入翻译组. 本文旨在使用通俗易懂的文字,讲解版本控制背后的理论,以便你能对程序员们如何工作有个 ...

随机推荐

  1. 怎么样才算是精通 Python?

    前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:weixin_45587093 你们所说的什么要怎样数据分析.爬虫.We ...

  2. mongodb验证

    mongodb默认是不需要用户名和密码就可以增删查改的.要设置成需要用户名和密码访问,步骤如下: 通过下面的命令启动mongodb服务器 mongod 启动之后再登录,执行下面命令: use test ...

  3. 5G 调制与解调

    调制,就是将原始信号转换为适合在信道中传输的形式的一种过程,在无线通信中,调制一般均指载波调制,而解调则是调制的逆过程,即将原始信号从已调信号中恢复出来. 进行载波调制,主要为实现以下目标: 1)在无 ...

  4. python学习-pandas

    import pandas as pd # DataForm 二维数据# print(pd.read_excel("datas.xlsx")) # 多行数据 - 加载表单s = p ...

  5. 跟着文档学习gulp1.1安装入门

    Step1:检查是否已经安装了node,npm 和 npX是否正确安装 Step2:安装gulp命令行工具(全局安装gulp) npm install --global gulp-cli Step3: ...

  6. android 7.0+、8.0+应用中点击拍照崩溃的解决办法

    在开发中,项目里面明明已经添加过拍照或者读取相册的权限,但是在点击拍照或者打开相册的时候应用会崩溃,报一下错误: Caused by: android.os.FileUriExposedExcepti ...

  7. 2019年全国高校计算机能力挑战赛初赛java语言解答

    1:题目1 16.某星球存在两种生物,A种生物有1个头6条腿,B种生物有3个头4条腿.来自地球的太空船刚刚在该星球降落,突然发现一大群这两种生物组成的队伍,由于时间紧,只数了头的数量和腿的数量,请帮助 ...

  8. WPF引用WinForm控件

    前言:在WPF开发当中由于DataGrid控件实现业务未达到非常理想的效果,我决定使用WinForm中的DataGridView来实现业务. 在XAML中加入以下命名空间: xmlns:wf=&quo ...

  9. C#程序编写高质量代码改善的157个建议【10-12】[创建对象时需要考虑是否实现比较器、区别对待==和Equals]

    前言 建议10.创建对象时需要考虑是否实现比较器 建议11.区别对待==和Equals 建议12.重写Equals时也要重写GetHashCode 建议10.创建对象时需要考虑是否实现比较器 有对象的 ...

  10. c++-内联函数和函数重载和默认参数和函数指针

    内联函数 C++ 内联函数是通常与类一起使用.如果一个函数是内联的,那么在编译时,编译器会把该函数的代码副本放置在每个调用该函数的地方. 对内联函数进行任何修改,都需要重新编译函数的所有客户端,因为编 ...