GIT学习
一、Github注册
Git安装和Github简明教程可以参考这篇文章:
Github 简明教程
二、Git使用
git的四个区域
git本地有三个工作区域:工作区(Working)、暂存区(Stage/index)、资源库(Repository)和远程的git仓库(Remote)
Workspace: 工作区,自己存放项目代码的地方
Index / Stage:暂存区,临时存放你的改动,事实上它只是一个文件,保存即 将提交到文件列表信息
Repository: 仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本
Remote: 远程仓库,托管代码的服务器
git status 命令
git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。
通常我们使用 -s 参数来获得简短的输出结果。
git status -s 状态码解析
A: 你本地新增的文件(服务器上没有).
C: 文件的一个新拷贝.
D: 你本地删除的文件(服务器上还在).
M: 文件的内容或者mode被修改了.
R: 文件名被修改了。
T: 文件的类型被修改了。
U: 文件没有被合并(你需要完成合并才能进行提交)。
X: 未知状态(很可能是遇到git的bug了,你可以向git提交bug report)
?:未被git进行管理,可以使用git add file1把file1添加进git能被git所进行管理
git diff 命令
git diff 命令比较文件的不同,即比较文件在暂存区和工作区的差异。
git diff 命令显示已写入暂存区和已经被修改但尚未写入暂存区文件的区别。
git diff 有两个主要的应用场景。
- 尚未缓存的改动:git diff:显示暂存区和工作区的差异
- 查看已缓存的改动: git diff --cached:或者--staged,显示暂存区和上一次提交(commit)的差异
- 查看已缓存的与未缓存的所有改动:git diff HEAD
- 显示摘要而非整个 diff:git diff --stat
git status 显示你上次提交更新后的更改或者写入缓存的改动, 而 git diff 一行一行地显示这些改动具体是啥。
git add 命令
git add 命令可将该文件添加到暂存区。
git commit 命令
前面章节我们使用 git add 命令将内容写入暂存区。
git commit 命令将暂存区内容添加到本地仓库中。
-a 参数设置修改文件后不需要执行 git add 命令,直接来提交。
撤销未提交的修改
git checkout <路径/文件名>:适用于没有执行过add命令的文件
git reset HEAD <路径/文件名>:适用于没有执行过add命令的文件
Git 分支管理
git branch (branchname):创建分支命令
git checkout (branchname):切换分支命令
git merge:合并分支命令
git branch: 没有参数时,会列出你在本地的分支。
git checkout -b (branchname) :我们可以使用这个命令来创建新分支并立即切换到该分支下,从而在该分支中操作。
git branch -d (branchname):删除分支命令
git branch -r:查看远程所有分支
git remote -v:显示所有远程仓库
git pull 命令
git pull 命令用于从远程获取代码并合并本地的版本。
git pull 其实就是 git fetch 和 git merge FETCH_HEAD 的简写。
命令格式如下:git pull <远程主机名> <远程分支名>:<本地分支名>
git push命令
git push 命用于从将本地的分支版本上传到远程并合并
命令格式如下:git push <远程主机名> <本地分支名>:<远程分支名>
如果本地分支名与远程分支名相同,则可以省略冒号:git push <远程主机名> <本地分支名>
git reset命令
摘自《Git权威指南》
Git reset 是Git最常用的命令之一,也是最危险最容易误用的命令。
用法一:git reset [-q] [
用法二:git reset [--soft --mixed | --hard | --merge | --keep] [-q] [
以上两种用法,
上面的两种用法的区别在于,第一种在命令中包含路径
第一种用法(包含了路径
第二种用法(不使用路径
git stash命令
摘自《Git权威指南》
git stash用于保存和恢复工作进度。
git stash
保存当前的工作进度。会分别对暂存区和工作区的状态进行保存。
git stash list
显示进度列表。此命令显然暗示了git stash 可以多次保存工作进度,并用在恢复时候 选择。
git stash pop [--index] [
]
如果不使用任何参数,会恢复最新保存的工作进度,并将恢复的工作进度从存储的工作 进度列表中清除。
如果提供
选项--index除了恢复工作区的文件外,还尝试恢复暂存区。这也就是为什么在本章一 开始恢复进度的时候显示的状态和保存进度前的略有不同。
git stash [save [--patch] [-k|--[no]keep-index] [-q|--quiet] [
]]
这条命令实际上是第一条git stash命令的完整版。即如果需要在保存工作进度的时候使 用指定的说明,必须使用如下格式:
git stash save “message...”
使用参数--patch会显示工作区和HEAD的差异,通过对差异文件的编辑决定在进度中 最终要保存的工作区的内容,通过编辑差异文件可以在进度中排除无关内容。
使用-k或者--keep-index参数,在保存进度后不会将暂存区重置。默认会将暂存区和工 作区强制重置。
git stash apply [--index] [
]
除了不删除恢复的进度之外,其余和git stash pop 命令一样。
git stash drop [
]
删除一个存储的进度。默认删除最新的进度。
git stash clear
删除所有存储的进度。
git stash branch
基于进度创建分支。
Git 查看提交历史
Git 提交历史一般常用两个命令:
- git log - 查看历史提交记录。--当使用git的时候,不小心进入了编辑模式,出现end,可以使用:q可以退出,返回命令行模式
- git blame
- 以列表形式查看指定文件的历史修改记录。