git版本控制库,协同开发工具
最近迷上看官网文档,由于实在如今的博客大多都只是讲本身学习到的只知其一;不知其二,大可能是凑字数的口水文,并且一部分仍是挖了坑等你去跳,做为小白实在是看不下去了,从入门到放弃,因此本身整理了一些关于git的基本知识和操做。git
自从上次在博客中跳入坑后从官网上找到答案,就不想再去看那些口水文了,迷上了去官网寻找答案,虽然是英文,可是,一点也不怂(装的!),趁着最近学习git操做,因此也研究一下git的官方操做详解工具
首先,了解一下git的结构,git做为一个版本控制库,结构主要分为三个部分。学习
这三个部分通常被人称为:工做区、暂存区、仓库
通常建立完仓库后会生成.git文件夹,主要存放版本信息、更新记录、HEAD等信息,主要上要结构以下图所示开发工具
接下来看一下官网给的常规操做帮助 git --helpfetch
其实对于有经验的人来讲,这些命令给得已经挺详细的了,若是可以看得懂这些命令,git的基础操做基础是没问题的,更可能是只是平时操做方式的一个积累。
全部经常使用的命令都在这里
分红了五个部分
start a working area(建立一个工做区)
work on the current change(操做当前的变化)
examine the history and state(检查历史和状态)
grow mark and tweak your common history(增加标记和调整共同历史)
collaborate(协做)spa
clone 克隆一个仓库到一个新的目录
init 建立一个空的仓库或从新初始化一个已存在的仓库翻译
add 将工做区(working tree)的文件内存添加到暂存区(index)
mv 移动或重命名
reset 重置当前HEAD到一个特定的状态/版本
rm 从工做区或暂存区删除文件版本控制
bisect 使用二分查找法查找介绍bug的提交
grep 打印匹配模式的行
log 显示提交日志
show 显示各类类型的对象
status 显示工做区的状态日志
branch 罗列、建立或删除分支
checkout 切分分支或恢复工做区的文件
commit 记录修改到仓库
diff 显示不一样提交之间,提交跟工做区之间的修改
merge 合并两个或多个开发版本
rebase 把一个分支的修改合并到当前分支(这一名不知道怎么翻译~~)
tag 建立、罗列、删除或验证GPG签名的标签对象code
fetch 从另外一个仓库(远程仓库)下载文件对象和引用
pull 从另外一个仓库或本地分支fetch并整合(至关于fetch+merge)
push 沿关联对象更新远程文件
能够了,先写这么点
周末再更新
分割线·····························································································
周五晚,利用的时间再写一点
上面已经列出了git的所有基本命令,其实一点都不复杂,学用的那些操做也就几个:
add commit chekcout merge branch remote clone status log fetch pull push
差很少就这些吧,不用被吓到,其实每一个命令都是固定的操做套路。
学一个命令
只须要会用它的-help跟能有点英语基础就行了~
好比add
经过 git add -h
2019年5月29日0:1:34
闲着没事,忽然想到了这个总结只写了一半-.-! 趁如今有点时间就再整理一下。
接下来分别针对一些经常使用的命令进行总结,主要写命令的常见操做。
git init 命令其实算是用得比较少的一个命令,主要用来建立git仓库,通常建立完仓库就不须要用到了,这里咱们经过git init -help
看一下它的命令帮助
init 最经常使用的用法无非是如下两种方式。
git init git init --bare (建立空的仓库)初始化完成后便会在当前目录生成一个.git文件夹,即版本控制库
--template <template-directory>表示以一个模板来建立仓库
-q 是静默模式
咱们建立完版本控制库后,就能够开始在工做区上开发,平时咱们添加代码、修改代码和删除代码就是在工做区中进行的。咱们前面说过了,git版本控制库主要由三个结构组成:working/index/rep,index区保存工做区内容的快照,并将此快照做为下一次提交的内容,所以在对工做目录进行任务更改以后,在进行commit命令提交到rep以前,须要执行add命令将任何新的或修改的文件添加到index中,add命令作的事情就是将咱们当前工做区working
所作的修改添加到暂存区index
中。
-n 排练,只是模拟操做,不真正提交到暂存区。
-v 操做时打印详细日志
-i 这个是交互模式选择内容添加到索引,这个交互模式挺方便的,后面单独讲。
-p 这个一样是经过交互模式挑选补丁,并添加到索引。使用户有机会在将修改后的内容添加到索引以前查看差别。这里是直接跳过-i的命令选择界面直接进行patch命令。
-e 直接编辑并应用到索引 ,这个没用过。
-f 强制,容许添加.ignored文件上忽略的文件
-u 更新索引,只容许应用跟踪文件的更改,不能添加新的文件到索引
-N 只添加路径,但不更新内容
-A 全部
--refresh 不添加,只刷新索引的状态信息
--ignore-removal 添加当前工做区到索引,但不添加移除
--ignore-errors 跳过添加错误的文件
一、git add -A
添加当前工做区全部修改到索引,主要平时工做中不推荐直接执行这个操做,由于工做区相对来讲修改频繁,而且会比较混乱,若是执行这个操做,那么可能会将一些不应添加的文件添加到索引中.
二、git add -i
交互模式挑选修改到索引,使用这个模式来添加索引时很是方便,能够自由选择修改到索引,能够选择update(更新),revert(还原),add untracked(添加未跟踪文件),patch(补丁),diff(查看索引与工做区不一样)等
选择2直接进入update命令,挑选要工做区的修改应用到索引的修改
挑选完成后,选项前面会有个*标识,直接enter便可以回到上一个命令选择界面。
上一个操做add所完成的任务就是将工做区的修改添加到索引inde中,而当前所要介绍的commit就是将索引提交到本地仓库rep中。
相较于其余命令来讲,commit的可选选项比较多,但其实一部分选项都是与其余命令重复的,并且经常使用的也就那么几个,这里重点讲一些前面没有解释过的。
-C (主意是大写C) 这里主要复用指定的commit提交信息,包含评论,做者,日期
用法是 git commit -C <commitId>
(commitId为以前提供过的commit的id)
-c (小写c)这个选择跟-C类似,但不一样的是它能够在指定的commit的提交信息基础上从新编辑提交信息。
--reset-author 修改提交信息的做者,能够与-C、-c、--amend一块儿使用
-i 添加指定文件的修改到索引,这个说白了执行的就是git add xxxfile
--interactive 这个东西是互动模式,跟git add -i是同样的
-o 只将指定路径的文件提交到暂存区,忽略暂存区中其余路径暂存的内容。
-n 绕过提交前的勾子
--short 只显示不多的信息
--branch 显示当前分支的信息
--amend 从新提交上一次的提交,至关于取消上一次的提交,而后再从新提交一遍,这个命令很是好用,通常用在提交后发现有些修改未提交、或是提交后发现代码有误但不想再开启另外一个commit的状况下使用。
git commit -m "msg" 提交commit,comment为msg git commit --amend "msg" 从新提交先前的一次提交。
reset 即重置的意思,使用这个命令能够重置工做区、索引以及HEAD
--soft 重置HEAD ,git commit
提交成功,HEAD的指向会从新定位到最新的提交上,这里主要用于撤销前n个提交,并将head重置回以前的某个提交上,命令格式为 git reset --soft HEAD^
^的个数表示前几个提交,也可使用另外一个格式 git reset --sort HEAD~n
(n表示前n个提交)
eg:撤销前两个提交 git reset --soft HEAD^^
或 git reset --soft HEAD~2
--hard 重置整个仓库,这里会将工做区、索引、HEAD所有重置到上次n次提交的状态,用法同上
--mixed 重置索引、HEAD
--keep 重置HEAD,若是索引和上次提交之间不一样的文件具备本地修改,那么将不会执行。
-p 重置补丁所做的修改,这与git add -p 是相反的操做
git reset --soft
git reset --mixed
git reset --hard
git 分支,通常来讲项目不可能只有只一个分支,都是多个分支同时维护来应用项目的不一样版本,branch主要用来完成建立分支、切换分支等操做
-t 建立出一条跟踪当前分支的新分支,这个命令与git checkout --track xxx 相同效果
--set-upstream 目前是deprecated,更换为-u,效果同上
-r 列出远程分支
--contains 列出包含某个commit的全部分支
-d 删除
-D -d的升级版,强制force
-m 移动或重命名一个分支(-M是升级版,自带--force)
--list 列出分支
--merged
--column
--sort
--points-at
未完待续