Git-源代码管理工具

Git入门指南十一:Git branch 分支与合并分支

Git命令大全

目录

一. 掌握 - git 概述
二. 掌握 - Git命令行 - 个人开发
三.Git命令行 - 开发
四.了解 - github的使用
五.了解 - OSChina的使用




一. 掌握 - git 概述

1. git 简介?

1.什么是git?
  • git是一款开源的分布式版本控制工具
  • 在世界上所有的分布式版本控制工具中,git是最快、最简单、最流行的
2.git的起源?
  • 作者是Linux之父:Linus Benedict Torvalds
  • 当初开发git仅仅是为了辅助Linux内核的开发(管理源代码)
3. git的现状?
  • 在国外已经非常普及,国内并未普及(在慢慢普及)
  • 越来越多的开源项目已经转移到git

2. 常见的源代码管理工具有哪些?

  • CVS
  • 开启版本控制之门
  • 1990年诞生,“远古时代”的主流源代码管理工具
  • SVN
  • 全称是Subversion,集中式版本控制之王者
  • 是CVS的接班人,速度比CVS快,功能比CVS多且强大
  • 在国内软件企业中使用最为普遍(70%-90%)
  • ClearCase
  • 收费的集中式版本控制工具,安装比Windows还大,运行比蜗牛还慢
  • 能用ClearCase的一般是世界500强,他们有个共同的特点是财大气粗或者人傻钱多
  • VSS
  • 微软的集中式版本控制工具,集成在Visual Studio中

3. 集中式版本控制

** 特点:所有的代码都集中在一块, 统一进行管理**


Git-源代码管理工具_第1张图片
集中式版本控制.png

4. 分布式版本控制

** 特点:在每个客户端都有一份完整的代码仓库, 可以在每个客户端自行管理**


Git-源代码管理工具_第2张图片
分布式版本控制.png

5. git 和 svn的简单对比

从速度,结构,和其他方面进行比较

  • 速度:在很多情况下,git的速度远远比SVN快
  • 结构:SVN是集中式管理,git是分布式管理
  • 其他
    • SVN使用分支比较笨拙,git可以轻松拥有无限个分支
    • SVN必须联网才能正常工作,git支持本地版本控制工作
    • 旧版本的SVN会在每一个目录置放一个.svn,git只会在根目录拥有一个.git

6. SVN工作流程和GIT工作流程对比

    • 命令: svn checkout -- git clone
    • svn 只下载代码, git 会连同代码仓库一起下载下来
    • 命令:svn commit -- git commit
    • svn 是提交到服务器,git 中是提交到本地仓库,需要使用push才能提交到服务器
    • 命令: svn update -- git pull
    • 都是从服务器下载最新被修改的代码

分布式和集中式最大的区别在于:在分布式下,本地有个代码仓库,开发者可以在本地提交; 而集中式版本控制, 只有在服务器才有一个代码仓库, 只能在服务器进行统一管理

7. git工作原理

  1. 概念理解
  • 工作区:与.git文件夹同级的其他文件夹或者子文件夹
  • 版本控制库
    • 暂缓区:本地代码仓库
    • 分支:(Git不像SVN那样有主干和分支的概念. 仅仅存在分支,其中master分支为默认被创建的分支,类似于SVN中的主干)
  • 切换分支: 通过控制HEAD指针指向不同的分支,就可以切换*

** 操作原则: 所有新添加/删除/修改的文件 必须先添加到暂缓区,然后才能提交到HEAD指向的当前分支中**

8. git使用环境

  • 1.单人开发只需要一个本地库
    • 原因:不需要与他人共享代码,只负责管理自己代码即可;例如提交代码,删除代码,版本控制等等
  • 2.多人开发时需要一个共享版本库
    • 共享版本库的形式:
      • 本地共享库:文件夹/U盘/硬盘
      • 远程共享库:自己搭建git服务器/ 托管到第三方平台(例如github, oschina)
  • 3.客户端使用环境
    ** 无论是单人开发还是多人开发,客户端都可以使用命令行或者图形界面使用git**
  • SourceTree :
    • 下载地址:http://www.sourcetreeapp.com/download/
  • GitHub
    • 下载地址:https://mac.github.com
    • 不过它是专门为GitHub网站而设计的
  • Xcode
    • 虽然集成较好,但是只能做一些常用的简单操作,复杂操作还要使用命令行

9. 学习网站

  • http://backlogtool.com/git-guide/cn/intro/intro1_1.html



二. 掌握 - Git命令行 - 个人开发

0. 如何学习git指令

  • git help [子命令]
  • 和学习SVN指令是一样的,只不过git是通过使用指南的形式展示给用户看(不能编辑的vim编辑器),使用q退出vim编辑器,按空格进入下一页,ctrl + B 回到上一页; /关键字 进行搜索

1. 初始化一个本地仓库

  • 原因: 管理本地代码,修改上传,版本回退
  • 命令: git init

2. 配置仓库

  • 告诉git你是谁?
    • 原因: 追踪修改记录
    • 命令: git config user.name “ming”
  • 告诉git怎样联系你?
    • 原因: 多人合作开发时, 沟通交流
    • 命令: git config user.email "[email protected]"
  • 查看配置信息(.git -> config打开)
    • 命令: git config -l
    • 配置全局信息
      命令:git config --global user.name “ming”
      git config --global user.email "[email protected]"

3. 个人开发演练

  • 创建文件并提交
    • 命令:
touch main.c
    git add . 
    git commit -m “注释”
  • 修改文件并提交
    • 命令:
git add .
    git commit -m “注释”
  • 删除文件并提交
    • 命令:
git rm person.h
    git commit -m “注释”
  • 日志查看
    • 命令:
git log 
    git reflog
  • Git鼓励大量使用分支:

查看本地分支:git branch
查看所有的分支:git branch -a
查看远程所有分支:git branch -r
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
建立一个新的本地分支dev:git checkout -b dev
合并某分支到当前分支:git merge
将分支dev与当前分支进行合并:git merge origin/dev
从主分支master创建branch_0.1分支:git branch branch_0.1 master
删除分支:git branch -d
查看尚未暂存的更新: git diff
提交并且加注释 :git commit -am "init"

  • 版本回退
    • 命令:
git reset —-hard HEAD 重置到当前版本
    git reset —-hard HEAD^^ 重置到上上个版本
    git reset ——hard HEAD~2 重置到往上2个版本
    git reset —-hard 七位版本号 重置到指定版本::

4. 备注补充

  • 1.文件状态(git status)

    • 颜色含义
      红色: 代表被添加或者修改的文件没有被添加到暂缓区
      绿色: 代表文件在暂缓区,等待提交
  • 2.版本号的含义

    • 版本号是一个由SHA1生成的40位哈希值
    • 这样做的目的是保证版本号的唯一
  • 3.日志查看配置

    • 命令如下: git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)\<%an\>%Creset' --abbrev-commit"
    • 使用方式:git lg
  • 4.配置别名

    • git config alias.st “status”
    • git config alias.ci “commit -m”
  • 5.--global的作用

    • 可以进行全局配置,所有的版本库共享此配置
    • 查看全局配置(桌面前往->个人->.gitconfig
    • ** 个人电脑上建议使用全局配置**
  • 6.vim编辑器的使用


    Git-源代码管理工具_第3张图片
    vim编辑器的使用.png
  • 7.如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,那么可以这么做。

$ git push origin test:master // 提交本地test分支作为远程的master分支
$ git push origin test:test   // 提交本地test分支作为远程的test分支```
如果想删除远程的分支呢?类似于上面,如果:左边的分支为空,那么将删除:右边的远程的分支。

$ git push origin :test // 刚提交到远程的test将被删除,但是本地还会保存的,不用担心```




三.Git命令行 - 开发

添加忽略忽略文件
  • 命令:

    • touch .gitignore
    • open .gitignore 加入忽略文件名
    • git add .
    • git commit -m “注释”
  • .gitignore文件配置规则

    • http://www.cnblogs.com/haiq/archive/2012/12/26/2833746.html
  • 补充:在真实开发中,配置.gitignore文件 , 去github里面搜索gitignore 选择OC/Swift版本的,拷贝到本地仓库即可,记得添加到本地版本库

团队开发

** 团队开发必须有一个共享库,这样成员之间才可以进行协作开发**

0.共享库分类
  • 本地共享库(只能在本地面对面操作)
    • 电脑文件夹/U盘/移动硬盘
  • 远程共享库(可通过网络远程操作)
  • 自己搭建Git服务器(不建议)
  • 在Github上托管项目(** 建议**)
  • 在OSChina上托管项目(** 推荐**)
1.搭建本地共享库
  • 命令: git init --bare
2.经理初始化项目到本地共享库
  • 命令: git clone 本地代码仓库地址
3.常见问题
  • fetch first 代表当前文件过期,需要从远程共享库更新
  • 解决方法:git pull
  • 问题2:
  • ! [rejected] master -> master (non-fast-forward)error: failed to push some refs to '[email protected]:xwdreamer/FirstRepo_xuwei.git'hint: Updates were rejected because the tip of your current branch is behindhint: its remote counterpart. Merge the remote changes (e.g. 'git pull')hint: before pushing again.hint: See the 'Note about fast-forwards' in 'git push --help' for details.
  • 解决2:
  • 1,强推,即利用强覆盖方式用你本地的代码替代git仓库内的内容
    git push -f
  • 2,先把git的东西fetch到你本地然后merge后再push
    $ git fetch
    $ git merge
    这2句命令等价于$ git pull



四.了解 - github的使用

1. 托管项目到github-HTTPS验证

  1. 打开github网站:[https://www.github.com]
  2. 注册账号(OneShunzi)
  3. 点击创建新仓库[https://github.com/new]
  4. 填入项目名称,描述等信息
  5. 创建完成
  6. 可根据生成的版本库地址进行克隆下来进行操作

2. 托管项目到github-SSH验证

  1. 点击”个人” -> setting -> SSH keys -> Add SSH key
  2. 将生成的公钥添加进来即可.(以下是生成公钥私钥方法)
  • [https://help.github.com/articles/generating-ssh-keys/]

** 注意: 拷贝公钥到github上时, 一个字符都不能拷贝错误(特别最后一个"换行")**

3. 怎样将其他著名框架添加到我们的代码仓库?

1.搜索到对应的框架
2.点击fork
3.当项目被移到自己代码仓库中,就可以根据地址克隆下来进行操作

  • 注意:

你可以针对此框架进行任意修改,但是仅仅作用在你的本地仓库中的副本,对原作者项目没有任何影响.
如果想向原作者提建议,可以直接使用,pull request操作.
提交完成后,原作者可以在pull request中看到你的提交.至于是否采纳,就是原作者的意愿




五.了解 - OSChina的使用

1. 托管项目到OSChina

  1. 打开oschina网站:[https://git.oschina.net]
  2. 注册账号(OneShunzi)
  3. 点击创建新仓库[https://git.oschina.net/projects/new]
  4. 填入项目名称,描述等信息
  5. 创建完成
  6. 可根据生成的版本库地址进行克隆下来进行操作

2. 怎样加入合作伙伴?

  1. 点击”管理”->项目成员管理->选择成员权限进行创建
  2. 或者直接只用SSH(以下是生成公钥私钥方法)

3. 怎样将其他著名框架添加到我们的代码仓库?

1.搜索到对应的框架
2.点击fork
3.当项目被移到自己代码仓库中,就可以根据地址克隆下来进行操作

  • 注意:

你可以针对此框架进行任意修改,但是仅仅作用在你的本地仓库中的副本,对原作者项目没有任何影响.
如果想向原作者提建议,可以直接使用,pull request操作.
提交完成后,原作者可以在pull request中看到你的提交.至于是否采纳,就是原作者的意愿

你可能感兴趣的:(Git-源代码管理工具)