
Git是目前世界上最先进的分布式版本控制系统。github是全世界最大、质量最高的代码托管平台。现如今在github上没有自己维护的项目,都不好意思和别人聊天。
装*只是学习git的一个原因,更重要的原因是我们要维护代码的版本,并且希望网络上有一份永久的存储,这样我们可以将代码回退到任意历史版本,可以和别人协作,在切换工作环境之后可以轻易获得自己曾经写过的代码。 Git 是目前世界上最先进的分布式版本控制系统,越来越多的公司使用 Git 来管理代码库,我们一起开启 Git 的学习之旅吧。
纸上得来终觉浅,绝知此事要躬行。
1.安装 windows:到git官网上下载,Download git,下载后会有一个Git Bash的命令行工具,以后就用这个工具来使用git。 
2.初次运行Git前的配置2.1 用户信息
当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。这样做很重要,因为每一个 Git 的提交都会使用这些信息,并且它会写入到你的每一次提交中,不可更改: 复制 git config --global user.name 'xiaoshuaisou'
git config --global user.email xiaoshuaosu@163.cn
如果使用了 --global 选项,那么该命令只需要运行一次,因为之后无论你在该系统上做任何事情, Git 都会使用那些信息。当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 --global 选项的命令来配置。 如果想要检查你的配置,可以使用 git config --list 命令来列出所有 Git 当时能找到的配置。 你可以通过输入 git config <key> :来检查 Git 的某一项配置,如: 复制 git config user.name
我们在安装好git之后,先在本地新建一个工作目录,目录的位置可以自己来定,也可以在桌面右键,点击Git Bash Here,使用cd命令进入自己想要创建工作目录的路径,然后使用mkdir [目录名]在当前路径创建工作目录。 在我们创建好工作目录之后,在Git Bash中使用命令git init 在当前目录生成本地git版本库,hooks:存放一些shell脚本,Info:exclude:存放仓库的一些信息,logs:保存所有更新的引用记录,objects:存放所有的git对象,config:git仓库的配置文件,description:仓库的描述信息,主要给gitweb等git托管系统使用,index:暂存区(stage)一个二进制文件,HEAD:映射到ref引用,能够找到下一次commit的前一次哈希值,ORIG_HEAD:HEAD指针的前一个状态..等等。 本地仓库分区三个区域:工作区、暂存区、仓库。 这三个区域分别对应不同的状态,这个状态我们可以在Git Bash中使用命令git status 来查看。 工作区:工作区是我们在编辑代码文档等的区域,在这个区域我们可以使用git status 查看到当前修改过或新增的文件都为红色字体,我们可以通过其显示的状态来确定当前文件有没有被修改“Untracked files”。 暂存区:暂存区是我们可以将编辑好的文档等暂时保存的区域,将工作区的文档等提交暂存区的命令git add /路径/文件名 ,这时候我们使用git status 可以看到绿色字体,里面是我们创建并提交到暂存区的文件。 仓库:本地仓库是我们保存本地所有经过上传的文件,这些文件会默认保存在master分支,master分支是git生成版本库git init 的时候默认自动创建的分支,我们将暂存区的文档等提交到本地仓库的命令是git commit -m '更新说明' ,提交到仓库之后我们在使用git status 就会提示我们nothing to commit, working tree clean ,表明我们将所有新文件都提交到了本地仓库,这时候的暂存区是干净的。 3.获取 Git 仓库有两种取得 Git 项目仓库的方法。第一种是在现有项目或目录下导入所有文件到 Git 中;第二种是从一个服务器克隆一个现有的 Git 仓库。 复制 # 在当前目录新建一个Git代码库
$ git init
# 新建一个目录,将其初始化为Git代码库
$ git init [project-name]
# 下载一个项目和它的整个代码历史
$ git clone [url]
3.2 clone示例库一般来说,我们会用远程仓库来对代码进行备份,同时便于多人协作。作为实验你可以到github,oschina或者码市上去注册一个账号并建立一个远程仓库。 项目一般有公开和私有之分,由于是试验,选择公开的就好。 创建好远程仓库之后,项目界面上有该仓库的地址,如https://git./lanqiao/gitdemo.git——这是本教程作为示例的仓库 接下来,可以回到计算机系统,用命令将其clone下来 复制 git clone https://git./lanqiao/gitdemo.git

我们会在当前目录下得到一个gitdemo目录,查看其内的文件,只有一个.git隐藏文件夹,别的什么也没有(读者在阅读时,情况有些变化,里面可能已经有很多内容了)。 这样你就得到了一个与远程仓库一模一样的文件仓库。 Git 有三种状态,你的文件可能处于其中之一:已修改(modified)、已暂存(staged)和已提交(committed)。 已修改表示修改了文件,但还没跟踪,如新增的文件和刚修改过的文件。 已暂存表示对一个已修改文件的当前版本做了标记(git add )。 已提交表示数据已经安全地保存在本地数据库中(git commit )。
由此引入 Git 项目的三个工作区域的概念:工作目录、暂存区域以及Git仓库。 
工作目录、暂存区域以及 Git 仓库. 工作目录是放在磁盘上供你使用或修改的文件及目录总和。 暂存区域是一个文件,缓存文件快照,有时候也被称作“索引”,不过一般说法还是叫暂存区域。 Git仓库是 Git 用来保存项目的元数据和文件快照的地方,记录了所有历史提交。
基本的 Git 工作流程如下: 在工作目录中修改文件。 暂存文件(git add ),将文件的快照放入暂存区域。 提交更新(git commit ),找到暂存区域的文件,将快照永久性存储到 Git 仓库。

需要注意的是,文件快照必须先经过暂存区,才能到仓库区。盘点之前的操作,1.txt经过暂存并提交,现在进入了本地仓库,但是2.txt未进行add 操作,因此本地仓库里面其实没有2.txt的记录。 现在我们暂存并提交下2.txt: 复制 git add .
git commit -m '第一次提交2.txt'
Git 配置项信息命令 | 说明 |
---|
git config --add name value | 添加配置属性 | git config --replace-all name value | 根据名称替换掉所有的配置信息的值 | git config --get name | 根据 name 获取值 | git config --get-regexp name_regex | 根据 name 正则获取值 | git config --unset name | 根据 name 删除配置项 | git config --unset-all name | 删除所有 name 的配置项 | git config --rename-section oldname newname | 重命名配置项 |
查看工作区与暂存区的状态git status
将文件添加到暂存区命令 | 说明 |
---|
git add | 将新文件或者修改过的文件添加到暂存区 | git add -u | 将修改的文件更新到暂存区,新文件不会提交 |
在 Git 暂存区生成提交记录命令 | 说明 |
---|
git commit -m'commit messages' | 在暂存区生成提交记录 |
从仓库拉取项目git pull
创建本地分支git checkout -b branchname
下载分支git fetch
查看分支git branch -av
删除不需要的分支命令 | 说明 |
---|
git branch -d 分支名 | 会提示是否真的要删除 | git branch -D 分支名 | 强制删除 |
提交项目命令 | 说明 |
---|
git push origin master | 将项目提交到仓库 | git push origin master --tags tags | 带版本号提交 |
Git 重命名文件git mv oldname newname
删除文件git rm
Git 查看日志命令 | 说明 |
---|
git log | 查看所有详细版 默认当前分支 | git log --oneline | 所有简介版 | git log -n4 | 查看前4个 | git log -n4 --oneline | 前4个简介版 | git log --all | 所有分支 | git log --all --graph | 图形化 |
修改最新 commit 的 messagegit commint --amend''
比较暂存区和 HEAD 所包含文件的差异git diff --cached
查看工作区和暂存区所包含的文件查看git diff -- <file>
暂存区恢复成和 HEAD 一样git reset HEAD -- <file>
工作区的文件恢复成和暂存区一样git chechout -- <file>
消除最近几次的提交git reset -- hard
比较不同分支的指定文件差异git diff branch1 branch2 -- <file>
多人开发 Git 使用一git fetch 仓库git merge 仓库分支名git push
多人开发 Git 使用二git pull 修改冲突的地方git commit
Git的常用命令创建版本库:git init 添加文件到缓存区:git add 文件路径 添加当前工作区全部文件到缓存区:git add . 添加到仓库:git commit -m '情况说明' 从暂存区回退上个版本:git checkout -- file 删除:git rm file 查看指定文件:git cat file 比对工作区与版本库:git diff 查看日志:git log 操作历史:git reflog 版本回退:git reset --hard commit-id/HEAD-id 创建并指向分支:git checkout -b <branch> 切换分支:git checkout <branch> 本地建立远程库对应分支:git checkout -b branch origin/branch 查看分支信息:git branch -a/v 删除分支:git branch -d <branch> 检测ssh连接:ssh -T git@github.com 添加远程版本库:git remote add origin git@github.com:路径/版本库.git 克隆远程分支库:git clone 远程仓库路径 克隆指定分支:git clone -b 分支名 远程仓库路径 从远程库拉取最新提交:git pull 关联并推送本地版本库到远程库:git push -u origin master 查看远程仓库状态:git remote show origin 更新远程信息:git remote update

|