🏵️🏵️🏵️🏵️JAVA工程师的冒险开始了!!!!🍁🍁🍁🍁
学习内容:Git
🪴定义:分布式版本控制系统
具有极为丰富的命令集,对内部系统提供了高级操作和完全访问
每次提交的文件的全部内容(snapshot)都会记录下来 .
善于保存文本文档,是为解决软件源代码(也是一种文本文档)版本管理问题而开发的.
🌿安装
https://gitforwindows.org/https://gitforwindows.org/
🌱配置
1.设置名字和email
$ git config --global user.name "Robin Hu"
$ git config --global user.email "hudashi@gmail.com"
2.
🌵初始化项目仓库git init
1.命令 git init
现在假设有一个叫”project.tar.gz”的压缩文件里包含了你的一些文件,你可以用下面的命令让它置于Git的版本控制管理之下.
$ tar xzf project.tar.gz
$ cd project
$ git init
Git会输出:
Initialized empty Git repository in .git/
如果你仔细观查会发现project目录下会有一个名叫”. git” 的目录被创建,这意味着一个仓库被初始化了。
上述操作的结果是 在project 目录下创建了一个 .git 隐藏目录,它就是所谓的 Git 仓库 ,不过现在它还是空的。
此时project目录就成为了工作树,每个工作树都会有一个git仓库.
在向仓库添加文档时,单纯的复制粘贴是不行的,要及逆行一系列的操作.
$ git add .
.表示当前目录
该命令是命令所生成的快照被存放到一个临时的存储区域 ,Git 称该区域为索引
$ git commit
提交命令,将索引提交到仓库
每次提交就意味着一次版本的更新
$ git commit -m " 你的版本更新信息 "
工作树中有一些文档是你不希望接受Git 管理的,如程序编译时生成的中间文件
$ cd project
$ echo "out" > .gitignore
这样,以后使用git add 命令生成文档内容快照时,git就会忽略调out目录
🌳克隆项目仓库
仓库可以通过不止一种协议来访问,Git可以在许多写一下使用,如http(s):// ssh:// git://
git clone git://git.kernel.org/pub/scm/git/git.git
git clone http://www.YuQingTing.org/pub/scm/git/git.git
git://协议较为快速和有效,但是有时会有防火墙阻止你的非http访问,此时你就必须使用http了.
另外访问Git URL需要法名和密码.
git clone robin.hu @ http://www.kernel.org/pub/scm/git/git.git
回车后,会提示你输入密码.
$ git clone -b master2 ../server .
表示克隆名为master2的这个分支,如果省略 -b <name> 表示克隆master分支。
🌴基本操作
对Git仓库所管理的文档进行管理.
1.记录更新
如果添加了一份新的文档,我需要通知仓库.工作树目录下文将用bash变量$WORK表示
$ cd $WORK
$ git add 某文档的名称
比较省心的操作是,将所有更新过的文档全部添加到索引中去.
$ git add .
还可以将文档删除,但对该文件内容无影响
$ git reset HEAD 1.txt
将1.txt删除
git add -i命令中的revert子命令把已经添加到索引库中的文件从索引库中剔除。
git add -i命令中的update子命令把已经被git管理的修改文件添加到索引库中。
git add -i命令中的add untracked子命令把还没被git管理(untracted)的文件添加到索引库中。
2.提交更新
git commit -m "提交的描述信息"
如果我们这里不用 -m参数的话,git将调到一个文本编译器(通常是vim)来让你输入提交的描述信息
git commit -a -m "提交的描述信息"
git commit 命令的 -a 选项可只将所有被修改或者已删除的且已经被git管理的文档提交到仓库中。 如果只是修改或者删除了已被Git 管理的文档,是没必要使用 git add 命令的。
3.查看文件状态
git status 可以列出当前母目录下为被git管理的文档,以及你所修改的git管理的文件但是没有提交的.
4.移除文件
git rm 文档名
-r 选项删除文件夹
--cached 删除文档但是对该文档不进行任何操作
5.推送本地更新到服务器
git push
6.拉服务器更新到本地
git pull
🎄查看版本历史
$ git log
$ git log --stat --summary
commit 214cf71782040579ce8c8ea3a815c0212dbca86f
Author: Robin Hu <hudashi@gmail.com>
Date: Sun Apr 8 22:04:24 2012 +0800
init
commit 9e041d62c0565a58efceac1ca6e75126d5a4da75
Author: Robin Hu <hudashi@gmail.com>
Date: Sun Apr 8 22:03:14 2012 +0800
test
首行的一连串数字和字母是该版本的项目版本号
展示该版本的细节的话
$ git show 214cf71782040579ce8c8ea3a815c0212dbca86f
$ git show 214cf
一般只需要版本号的前几个字符就行
$ git show HEAD
显示当前分支的最新版本的更新细节,等同于git show
$ git show HEAD ^
查看HEAD的父版本
^^祖父版本
~4 祖父之祖父版本
🌾打标签
$ git tag v0.1 dfb02
之后会有更为详细的介绍
🍀撤销
1.撤销未提交的修改,回到上次提交的状态
$ git reset
$ git reset --hard HEAD
将所有的工作目录中所有未提交的内容清空
$ git checkout -- hello.rb
这条命令把 hello.rb 从HEAD中签出并且把它恢复成未修改时的样子
$ git checkout .
这条命令把 当前目录所有修改的文件从 HEAD 中签出并且把它恢复成未修改时的样子.
2.撤销已提交的修改
第一种办法:创建一个新的提交,在你已经代码提交到服务器的情况下十分正确
$ git revert HEAD
撤销最近一次的提交
$ git revert HEAD ^
撤销上上一次的提交
$ git revert 4ab494a0bf5c5b09267a01ec03b587731d3034b4
撤销该次提交
git revert 其实不会直接创建一个提交(commit), 把撤消后的文件内容放到索引(index)里,你需要再执行 git commit 命令,它们才会成为真正的提交(commit).
第二种办法:修改你的老提交,若你已经将代码提交了,就不要这莫做
3.撤销旧提交但不保留修改
$ git reset --hard
4.撤销旧提交但保留修改
$ git reset --mixed 或 git reset --soft
5.追加提交来修改提交
如果你刚刚做了某个提交( commit ), 但是你这里又想来马上修改这个提交; git commit 现在支持一个叫 --amend 的参数,你能让修改刚才的这个提交(HEAD commit). 这项机制能让你在代码发布前,添加一些新的文件或是修改你的提交注释(commit message).
另外、如果你在老提交(older commit)里发现一个错误, 但是现在还没有发布(git push)到代码服务器上. 你可以使用 git rebase 命令的交互模式, " git rebase -i "会提示你在编辑中做相关的修改. 这样其实就是让你在rebase的过程来修改提交
🌵版本回退
回退到到branch_a的版本5731ea5cf1c544337648ffb79e6dfb5fc17fead7
$ git checkout branch_a
$ git checkout 5731ea5cf1c544337648ffb79e6dfb5fc17fead7\
回退到tag_a代表的tag点
$ git checkout tag_a
你打算回到最新的版本,执行
$ git checkout branch_a:
🌺分支管理
主分支master,Git自动产生.
1.创建分支
$ git branch local
local分支是等同于主分支的,但在local分支上进行的所有版本更新工作都不影响主分支,可以进行很多尝试.
2.查看分支
$ git branch
输出结果:
local
* master //表示当前分支
3.分支切换
$ git checkout local
4.分支合并
$ git checkout master # 将当前分支切换为master
$ git merge local # 将local分支与当前分支合并
当一个分支检查无误并且与master 分支成功合并完毕后,那么这一分支基本上就没有存在的必要性了,可以删除掉:
$ git branch -d local //删除分支
💐储藏修改——git stash
用 git stash 来保存当前的工作状态, 等你修复完bug后,执行 git stash apply 就可以回到之前的工作里.
内容部分来自Hu_yilang的GIT 简介