一、基本概念

  1. 文件的三种状态:(任何一个文件在git中都有以下三种状态)

    1) 已提交(committed):表示该文件已经被安全地保存在本地数据库中了。

    2) 已修改(modified):表示修改了某个文件,但还没有提交保存。

    3) 已暂存(staged):表示把已修改的文件放在下次提交时要保存的清单中。
  2. 基本的 Git 工作流程如下:

    1) 在工作目录中修改某些文件。

    2) 对修改后的文件进行快照,然后保存到暂存区域。

    3) 提交更新,将保存在暂存区域的文件快照永久转储到 Git目录(项目中.git目录)中。

二、常用命令

1. Git相关配置:

1)用户信息配置

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com
  • 每次Git提交都会引用以上两条信息,说明谁提交了更新。

    2)文本编辑器
$ git config --global core.editor emacs
  • 一般默认是vi/vim,可以通过以上命令自己指定。

    3)差异分析工具
$ git config --global merge.tool vimdiff
  • Git 可以理解 kdiff3tkdiffmeldxxdiffemergevimdiffgvimdiffecmerge,和 opendiff 等合并工具的输出信息。

    4)查看配置信息
$ git config --list

通过该命令查看所有配置信息。

5)查看某个配置变量

$ git config user.name

2. 帮助相关

$ git help <verb>
$ git <verb> --help

3. Git仓库初始化

1) 新建git本地仓库: 将已有项目添加给git管理。

$ git init
$ git commit -m 'initial project version'

2) 拷贝远程git仓库: 将远程仓库的全部内容(各个文件的各个版本)拷贝到本地。

$ git clone url [new dir name]

4. 记录每次更新到仓库

1)检查当前文件状态(tracked or not tracked

#####所有文件都为tracked状态#####
$ git status
On branch master
nothing to commit, working directory clean

2)跟踪新文件(将untracked变为tracked)或暂存已修改文件

$ git add filename

3)忽略某些文件:有些文件不想由git管理,如一些日志文件,可以通过设置.gitignore文件指定哪些文件被忽略。

$ cat .gitignore
*.[oa] //忽略.o 或.a 结尾的文件
*~ //忽略以~ 结尾的文件

4)查看未暂存的文件更新了哪些部分

$ git diff

5)查看已暂存文件和上次提交时快照之间的差异,查看已经暂存起来的变化

$ git diff --cached
$ git diff --staged //较高版本

6)提交更新

$ git commit
$ git commit -v //将修改差异的每一行都包含在更新说明中
$ git commit -m "comments" //将提交说明加在命令后面
$ git commit -a //将所有已经跟踪过的文件暂存起来提交

7)从已跟踪文件清单中移除

$ git rm filename

8)文件改名

$ git mv file_from file_to

实际上是完成了下面三个命令

$ mv README.txt README
$ git rm README.txt
$ git add README

9)查看提交历史

$ git log

有一些参数可以设置。

5. 远程仓库相关

1)添加远程仓库

$ git remote add [short name] [url]

以后可使用short name 来指代url作为简称。

2)从远程仓库抓取数据到本地

$ git fetch [remote name]
#不会自动合并(Merge)远端分支和本地仓库,从远程获取最新版本到本地 $ git pull [remote name]
#从远端分支拉取数据至本地仓库并与本地分支合并。 $ git clone [remote name]
#自动创建本地master分支用于跟踪远程仓库的master分支

3)推送数据到远程仓库

$ git push [remote-name] [branch-name]
#只有在远程仓库有写权限,并且同一时刻没有其他人在推数据,该操作才能成功。

4)查看远程仓库信息

$ git remote show [remote name]

5)远程仓库的删除和重命名

$ git remote rename [原名] [新名]
#重命名远程仓库 $ git remote rm [name]
#删除远程仓库。远程仓库服务器迁移,原来的克隆镜像不再使用,或者某个参与者不再贡献代码,就需要移除相应的远程仓库

6)查看提交历史

git log --pretty=oneline

6. 分支相关

理解分支就要理解几个基本概念:Commit对象,暂存内容快照和暂存区域。

Git中的分支本质上仅是指向commit对象的可变指针。Git会使用matser作为分支的默认名字。



注:master是分支默认名;中间层是Commit对象,里面存储指向暂存内容快照的指针以及一些commit相关的元信息,同时指向上次的Commit对象;Snapshot是暂存内容快照。

1)创建新的分支

$ git branch testing
#创建了另一个分支名为testing,指向当前分支Commit对象f30ab。

2)进入某个分支工作

$ git checkout testing
#由当前matser分支切换到testing分支。由特别指针HEAD从matser指向testing指明我们切换到了testing分支。 $ git checkout -b iss53
#创建了分支并切换到iss53分支下工作。
相当于:
$ git branch iss53
$ git checkout iss53

下图展示了向不同分支方向开发。



3)分支的合并

$ git checkout master#进入某个分支
$ git merge iss53 #将master分支和iss53分支进行合并

4)关闭分支

$ git branch -d iss53 #合并之后也就不用iss53这个分支了,即可关闭这个分支。

5)查看分支情况

$ git log --oneline --decorate --graph --all

7. 标签相关

1)查看标签

$ git tag

2)打本地标签

$ git tag -a "v0.0.1.1"

3) 将标签推送到远程仓库

$ git push origin "v0.0.1.1"
$ git push origin --tags #把所有不在远程仓库服务器上的标签全部传送到那里

4)删除本地标签

$ git tag -d "v0.0.1.1"

5)删除标签同步到远程仓库

$ git  push origin :refs/tags/v0.0.1.1

6)后补标签

$ git tag -a v1.1 部分校验和(gitlog中码的前7位)

7)查看具体tag信息

$ git show v1.1

8)检出标签

git checkout -b [branchname] [tagname] 

参考链接:https://git-scm.com/book/zh/v2

Git 基本概念及常用命令的更多相关文章

  1. Git的概念及常用命令

    一.概念 Git是一个分布式的版本控制工具,区别于集中式管理的SVN. 二.优势 每个开发者都拥有自己的本地版本库,可以在本地任意修改代码.创建分支,不会影响到其他开发者的使用: 所有版本信息均保存在 ...

  2. composer 基本概念与常用命令总结

    目录 composer 基本概念与常用命令总结 基本概念 软件安装 linux/mac安装 windows 配置镜像 如何使用 常用命令 全局参数 初始化 init 初始化参数 依赖安装 instal ...

  3. Linux的几个概念,常用命令学习

    Linux的几个概念,常用命令学习---------------------------------设备名装载点// 通过装载点访问设备-------------------------------- ...

  4. 图解git中的最常用命令

    图解git中的最常用命令 Git命令参考手册(文本版) git init                                                  # 初始化本地git仓库(创 ...

  5. git日常使用的常用命令总结

    git日常使用的常用命令总结 git 是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常 ...

  6. Git快速入门和常用命令

    一.快速入门 本地初始化一个项目 首先,你需要执行下面两条命令,作为 git 的基础配置,作用是告诉 git 你是谁,你输入的信息将出现在你创建的提交中. git config --global us ...

  7. git安装用法和常用命令

    目录 git 下载 安装 git 工作中常用命令 Git常用命令汇总以及其它相关操作 或者 常出错误: 常用修改: 题外话(相关概念) git 下载 安装 1.下载Git,官网地址:https://g ...

  8. git 快速入门及常用命令

    身为技术人员,都知道Git是干嘛的.从服务端角度它是代码仓库,可以多人协作.版本控制.高效处理大型或小型项目所有内容:从客户端讲,它能够方便管理本地分支.且与服务端代码的同步,从拉取.合并.提交等等管 ...

  9. 版本控制-Git服务器搭建和常用命令使用

    Git是目前世界上最先进的分布式版本控制系统(没有之一).使用Svn的请参考<版本控制-svn服务器搭建和常用命令(centos 6.3)>,下面介绍Git的常用命令 常用命令 简单版 升 ...

随机推荐

  1. 关于Spring的核心组件以及概念

    1.什么是企业级应用 大型企业级应用的结构是非常复杂的,涉及外部资源非常多,事务密集,数据规模大,用户数量多,有较强的安全性考虑和较高的性能要求.   2.Spring概念理解 Spring是一个轻量 ...

  2. JS判断字符串长度(中文长度为2,英文长度为1)

    目的:计算字符串长度(英文占1个字符,中文汉字占2个字符) 方法一: String.prototype.gblen = function() { var len = 0; for (var i=0; ...

  3. jdk安装问题--javac不是外部命令

    set java_home=C:\Program Files\Java\jdk1.6.0_26   安装JDK的根目录 set classpath=%JAVA_HOME%\lib\tools.jar; ...

  4. Facebook的Web开发三板斧:React.js、Relay和GraphQL

    2015-02-26 孙镜涛  InfoQ Eric Florenzano最近在自己的博客上发表了一篇题为<Facebook教我们如何构建网站>的文章,他认为软件开发有些时候需要比较大的跨 ...

  5. python界面

    import easygui as g import sys while 1: g.msgbox("我一定要学会编程!","加油!") #choices = [ ...

  6. 33个超级有用必须要收藏的PHP代码样例

    作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的,即使你没用开发过大型软件项目,也一定多少了解它的语法. 在PHP的流行 ...

  7. Node.js配合node-http-proxy解决本地开发ajax跨域问题

    情景: 前后端分离,本地前端开发调用接口会有跨域问题,一般有以下3种解决方法: 1. 后端接口打包到本地运行(缺点:每次后端更新都要去测试服下一个更新包,还要在本地搭建java运行环境,麻烦) 2. ...

  8. C++11智能指针读书笔记;

    智能指针是一个类对象,而非一个指针对象. 原始指针:通过new建立的*指针 智能指针:通过智能指针关键字(unique_ptr, shared_ptr ,weak_ptr)建立的指针 它的一种通用实现 ...

  9. Linux下安装MongoDB

    MongoDB是一个C++编写的基于分布式文件存储的数据库,是一个介于关系和非关系之间的数据库,当然也属于NoSQL的行列,存储方式和Redis类似,是json格式的kav-value存储方式,只是R ...

  10. Python: 处理mongodb文档,怎么让UTC时间转换为本地时间?

    存储数据到MongoDB数据库时,一般我们会加一个更新数据的时间update_time.这时在python代码中 会用到datetime模块以便获取当前系统时间,但是存入到MongoDB数据库时,存储 ...