Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的:比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

一、git常用术语:

1)、仓库(Repository)
受版本控制的所有文件修订历史的共享数据库

2)、工作空间(Workspace) 
本地硬盘或Unix 用户帐户上编辑的文件副本

3)、工作树/区(Working tree)
工作区中包含了仓库的工作文件。您可以修改的内容和提交更改作为新的提交到仓库。

4)、暂存区(Staging area)
暂存区是工作区用来提交更改(commit)前可以暂存工作区的变化。

5)、索引(Index)
索引是暂存区的另一种术语。

6)、签入(Checkin)
将新版本复制回仓库

7)、签出(Checkout)
从仓库中将文件的最新修订版本复制到工作空间

8)、提交(Commit)
对各自文件的工作副本做了更改,并将这些更改提交到仓库

9)、冲突(Conflict)
多人对同一文件的工作副本进行更改,并将这些更改提交到仓库

10)、合并(Merge)
将某分支上的更改联接到此主干或同为主干的另一个分支

11)、分支(Branch)
从主线上分离开的副本,默认分支叫master

12)、锁(Lock)
获得修改文件的专有权限。

13)、头(HEAD)
头是一个象征性的参考,最常用以指向当前选择的分支。

14)、修订(Revision)
表示代码的一个版本状态。Git通过用SHA1 hash算法表示的ID来标识不同的版本。

15)、标记(Tags)
标记指的是某个分支某个特定时间点的状态。通过标记,可以很方便的切换到标记时的状态。

二、git的工作流程一般:

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件放入暂存区域;

3、将暂存区域的文件提交到git仓库。

三、工作区

Git本地有三个工作区域:

1、工作目录(Working Directory)

2、暂存区(Stage/Index)

3、资源库(Repository或Git Directory)

远程有一个工作区域:

1、git仓库(Remote Directory)

在push到远程git仓库之前,所有的操作都是在本地进行的。

四、git文件状态及互相转化:

1、Untracked:未跟踪

2、Unmodify:未修改

3、Modified:已修改

4、Staged:已暂存

Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改

Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

五、git --help:

  1.   These are common Git commands used in various situations:      这些都是各种情况下常见的Git命令:
  2.  
  3.   start a working area (see also: git help tutorial)             创建一个工作区(参见:Git帮助教程)  
  4.     clone Clone a repository into a new directory                clone 克隆一个仓库到一个新目录
  5.     init Create an empty Git repository or reinitialize an existing one    init 创建一个空的Git仓库或重新初始化现有仓库
  6.  
  7.   work on the current change (see also: git help everyday)          操作当前工作空间(参见:Git日常帮助)
  8.     add Add file contents to the index                       add 向索引(暂存区)中添加文件内容
  9.     mv Move or rename a file, a directory, or a symlink mv 移动或重命名文件、目录,或者符号关联
  10.     reset Reset current HEAD to the specified state reset 复位HEAD(常用以指向当前选择的分支)到指定状态
  11.     rm Remove files from the working tree and from the index rm 从工作树(包含了仓库的工作文件)和索引(暂存区)删除文件
  12.  
  13.   examine the history and state (see also: git help revisions) 查看历史和状态(参见:Git修订帮助)
  14.     bisect Use binary search to find the commit that introduced a bug bisect 使用二进制搜索找到出错的提交
  15.     grep Print lines matching a pattern grep 打印出匹配的行
  16.     log Show commit logs log 显示提交日志
  17.     show Show various types of objects                       show 显示各种类型的对象
  18.     status Show the working tree status status 显示工作树的状态
  19.  
  20.   grow, mark and tweak your common history 生成、标记和调整历史
  21.     branch List, create, or delete branches branch 查看、创建或删除分支
  22.     checkout Switch branches or restore working tree files checkout 切换分支或恢复工作树文件
  23.     commit Record changes to the repository commit 记录更改到数据库
  24.     diff Show changes between commits, commit and working tree, etc diff 显示两次提交之间的变化,提交和工作树之间的变化,等等
  25.     merge Join two or more development histories together merge 合并两个或更多个开发历史
  26.     rebase Reapply commits on top of another base tip rebase 申请覆盖上一次提交
  27.     tag Create, list, delete or verify a tag object signed with GPG tag GPG创建,查看,删除或验证一个有符号的对象
  28.  
  29.   collaborate (see also: git help workflows) 协作(参见:Git帮助工作流)
  30.     fetch Download objects and refs from another repository fetch 从另一个库下载项目或文档
  31.     pull Fetch from and integrate with another repository or a local branch pull 将其他的库或本地分支整合
  32.     push Update remote refs along with associated objects push 更新远程项目和文档

六、命令

1、配置

  1. #添加配置项
  2. git config [--local|--global|--system] section.key value
  3.  
  4. git config --system user.name wang #系统级,配置信息适用当前系统的所有用户和项目, 配置文件位置Win:C:\Program Files\Git\mingw64\etc\gitconfig
  5. git config --global user.name wang #当前用户级,配置信息适用当前用户的所有项目, 配置文件位置Win:C:\Users\Administrator\.gitconfig
    git config --local user.name wang #项目级,配置信息仅适用于当前项目, 配置文件位置Win:C:\gitProject
  1. 注意:对于同一配置项,三个配置文件的优先级:system<global<local
  1. #删除配置项
  2. git config [--local|--global|--system] --unset section.key
  3.  
  4. git config [--local|--global|--system] --unset user.name
  1. #更多配置项
  2. git config --global color.ui true #打开所有的默认终端着色
  3. git config --global alias.ci commit #别名 ci 是commit的别名
  4. [alias]
  5. co = checkout
  6. ci = commit
  7. st = status
  8. pl = pull
  9. ps = push
  10. dt = difftool
  11. l = log --stat
  12. cp = cherry-pick
  13. ca = commit -a
  14. b = branch
  15.  
  16. user.name #用户名
  17. user.email #邮箱
  18. core.editor #文本编辑器
  19. merge.tool #差异分析工具
  20. core.paper "less -N" #配置显示方式
  21. color.diff true #diff颜色配置
  22. alias.co checkout #设置别名
  23. git config user.name #获得用户名
  24. git config core.filemode false #忽略修改权限的文件
  1. #所有config命令参数
  2. 语法: git config [<options>]
  3.  
  4. 文件位置
  5. --global #use global config file 使用全局配置文件
  6. --system #use system config file 使用系统配置文件
  7. --local #use repository config file 使用存储库配置文件
  8. -f, --file <file> #use given config file 使用给定的配置文件
  9. --blob <blob-id> #read config from given blob object 从给定的对象中读取配置
  10.  
  11. 动作
  12. --get #get value: name [value-regex] 获得值:[值]名[正则表达式]
  13. --get-all #get all values: key [value-regex] 获得所有值:[值]名[正则表达式]
  14. --get-regexp #get values for regexp: name-regex [value-regex] 得到的值根据正则
  15. --get-urlmatch #get value specific for the URL: section[.var] URL 为URL获取特定的值
  16. --replace-all #replace all matching variables: name value [value_regex] 替换所有匹配的变量:名称值[ value_regex ]
  17. --add #add a new variable: name value 添加一个新变量:name值
  18. --unset #remove a variable: name [value-regex] 删除一个变量名[值]:正则表达式
  19. --unset-all #remove all matches: name [value-regex] 删除所有匹配的正则表达式:名称[值]
  20. --rename-section #rename section: old-name new-name 重命名部分:旧名称 新名称
  21. --remove-section #remove a section: name 删除部分:名称
  22. -l, --list #list all 列出所有
  23. -e, --edit #open an editor 打开一个编辑器
  24. --get-color #find the color configured: slot [default] 找到配置的颜色:插槽[默认]
  25. --get-colorbool #find the color setting: slot [stdout-is-tty] 发现颜色设置:槽[ stdout是TTY ]
  26.  
  27. 类型
  28. --bool #value is "true" or "false" 值是“真”或“假”。
  29. --int #value is decimal number 值是十进制数。
  30. --bool-or-int #value is --bool or --int 值--布尔或int
  31. --path #value is a path (file or directory name) 值是路径(文件或目录名)
  32.  
  33. 其它
  34. -z, --null #terminate values with NUL byte 终止值与null字节
  35. --name-only #show variable names only 只显示变量名
  36. --includes #respect include directives on lookup 尊重包括查找指令
  37. --show-origin #show origin of config (file, standard input, blob, command line) 显示配置(文件、标准输入、数据块、命令行)的来源

2、常用指令

  1. #创建工作目录
  2.  
  3. git init 在当前目录新建一个Git代码库
  4. git init [project-name] 新建一个目录,将其初始化为Git代码库
  5. git clone [url] 克隆一个项目和它的整个代码历史(版本信息)
  1. #操作文件
    git status [filename] 查看指定文件的状态
    git status 查看所有文件的状态
  2.  
  3. git add [file1] [file2] ... 添加指定文件到暂存区
  4. git add [dir] 添加指定目录到暂存区,包括子目录
  5. git add . 添加当前目录的所有文件到暂存区
  6.  
  7. git commit 提交,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。
  8.  
  9. git checkout .签出,用暂存区全部或指定的文件替换工作区的文件,汇总显示工作区、暂存区与HEAD的差异。这个操作很危险,会清除工作区中未添加到暂存区的改动。
  10. git checkout HEAD .会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改 动。
  11. git checkout -- filename 用暂存区中filename文件来覆盖工作区中的filename文件。相当于取消自上次执行git add filename以来(如果执行过)的本地修改。
  12.  
  13. git rm --cached <file> 直接从暂存区删除文件,工作区则不做出改变
  14. git reset HEAD <file>... 通过重写目录树移除add文件,如果已经用add 命令把文件加入stage了,就先需要从stage中撤销
  15. git clean [options] 移除所有未跟踪文件,一般会加上参数-df,-d表示包含目录,-f表示强制清除。
  16. git rm --cached readme.txt 只从stage中删除,保留物理文件
  17. git rm readme.txt 不但从stage中删除,同时删除物理文件
  18. git mv a.txt b.txt a.txt改名为b.txt
  19.  
  20. git diff [files] 查看文件修改后的差异
  21. git diff --cached 比较暂存区的文件与之前已经提交过的文件
  22. git diff HEAD~n 比较repo与工作空间中的文件差异
  23.  
  24. git log 显示当前分支的版本历史
    git log --stat 显示commit历史,以及每次commit发生变更的文件
    git commit -m "first commit" 提交到本地仓库并写日志
  25.  
  26. git remote add origin https://github.com/wangnl/test.git 添加远程主机,主机名为origin 地址为https://github.com/wangnl/test.git
  1. git push -u origin master 本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了,-u 参数指定一个默认主机

归纳如图:

七、分支(待)

git工作流程一览的更多相关文章

  1. git工作流程

    git工作流程 一般工作流程如下: 克隆 Git 资源作为工作目录. 在克隆的资源上添加或修改文件. 如果其他人修改了,你可以更新资源. 在提交前查看修改. 提交修改. 在修改完成后,如果发现错误,可 ...

  2. 漫谈Github与开源,Git介绍以及Git的思想和基本工作原理 Git工作流程

    漫谈Github与开源 文字亮点: 为什么这些优秀的工程师会开源自己的项目? 因为开源是一种精神. 无数的软件开发者苦心积虑保护自己的代码不被破解,而还是被聪明绝顶的脚本小子破解了,但破解无数软件的脚 ...

  3. Git-Runoob:Git 工作流程

    ylbtech-Git-Runoob:Git 工作流程 1.返回顶部 1. Git 工作流程 本章节我们将为大家介绍 Git 的工作流程. 一般工作流程如下: 克隆 Git 资源作为工作目录. 在克隆 ...

  4. git详情、git工作流程、常用命令、忽略文件、分支操作、gitee远程仓库使用

    今日内容概要 git详情 git工作流程 git常用命令 过滤文件 分支操作 git远程仓库使用 可参照:https://www.cnblogs.com/liuqingzheng/p/15328319 ...

  5. git的介绍、git的功能特性、git工作流程、git 过滤文件、git多分支管理、远程仓库、把路飞项目传到远程仓库(非空的)、ssh链接远程仓库,协同开发

    Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效.高速地处理从很小到非常大的项目版本管理. [1] 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码 ...

  6. Git 工作流程

    Git 作为一个源码管理系统,不可避免涉及到多人协作. 协作必须有一个规范的工作流程,让大家有效地合作,使得项目井井有条地发展下去.”工作流程”在英语里,叫做”workflow”或者”flow”,原意 ...

  7. [GIT] Git 工作流程(Git flow, Github flow flow, Git lab flow)

    reference : http://www.ruanyifeng.com/blog/2015/12/git-workflow.html Git 作为一个源码管理系统,不可避免涉及到多人协作. 协作必 ...

  8. GIT 工作流程常用用命令大全

    一.Git基本工作流程 1.Git工作区域   2.向仓库中添加文件流程 二.Git初始化及仓库创建和操作 1.Git安装之后需要进行一些基本信息设置 a.设置用户名:git  config -- g ...

  9. Git工作流程最佳实践总结

    Git作为一个目前非常流行的版本管理工具,深受开发者的喜爱.那么怎样才能将Git的作用发挥的更好呢?我根据实际的项目经验,归纳总结了以下Git工作流的最佳实践.这里所谓的最佳,是经过多次项目经验后,根 ...

随机推荐

  1. redis hash结构 遍历某一个key下所有的(field,values)的方法

    本文同时发表在https://github.com/zhangyachen/zhangyachen.github.io/issues/95 redis的hash结构中存储了如下的数据: $input ...

  2. Java 读者写者问题

    实验存档.V 允许好几个人同时读,但是不允许在有人读的时候写,以及同一时间只能有一个人在写. 读者.java: package operating.entity.readerwriter; impor ...

  3. 使用Vue2完成“小红书” app

    小红书项目说明 整体页面格调.功能和原版 app 无限接近.具体页面细节可以下载 “小红书” app查看. 图片素材:https://pan.baidu.com/s/1qYOcx7e 整体要求: · ...

  4. 程序员的自我救赎---11.4:FileSystem文件服务

    <前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八) ...

  5. Bmob 移动后端云服务器平台实现登录注册

    源码下载:http://download.csdn.net/download/jjhahage/10034519 PS:一般情况下,我们在写android程序的时候,想要实现登录注册功能,可以选择自己 ...

  6. 在html中使用js

    1.使用defer属性可以让脚本在文档完全呈现出来之后在执行,延迟脚本总是按照制定他们的顺序进行. 2.使用async属性可以表示当前脚本不必等待其他脚本,也不必阻塞文档呈现,不能保证异步顺序按照它们 ...

  7. 使用 Kafka 和 ELK 搭建测试日志系统(1)

    本文仅供自己学习,不合适转载. 这是两篇文章的第一部分. 1. 安装 ELK 1.1 安装 ElasticSearch 在海航云上创建一个 Ubutu 16.4 虚机,2核4GB内存. (1)执行以下 ...

  8. javascript01

    手敲代码01 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <ti ...

  9. Chrome headless 模式

    我们在通过Selenium运行自动化测试时,必须要启动浏览器,浏览器的启动与关闭必然会影响执行效率,而且还会干扰你做其它事情(本机运行的话). 那能不能把自动化测试的运行放在后台?当然可以! html ...

  10. 5 秒创建 k8s 集群 - 每天5分钟玩转 Docker 容器技术(115)

    据说 Google 的数据中心里运行着超过 20 亿个容器,而且 Google 十年前就开始使用容器技术. 最初,Google 开发了一个叫 Borg 的系统(现在命令为 Omega)来调度如此庞大数 ...