版本管理工具 git 的使用总结
毫无疑问,Git 是当下最流行、最好用的版本控制系统。Git 属于分布式版本控制系统,相较于 Subversion 等集中式版本控制系统有很明显的优势。对于我们开发人员来说,熟练使用 Git 是最基本的技能之一。那么,今天就来说一下在开发工作中,使用到的 Git 的最基本、最常用的功能有那些?“简单好用
git 官网:https://git-scm.com/downloads
在 git 安装好之后,还需要做注册一个 github 账号,作为远程仓库,之后需要做一些配置:
这里一跳而过,不多说,完成之后,我们就可以使用 git 了。
01
git 分区
02
git 的使用--基本操作
在本地创建文件夹,切换进入文件夹,开启 git 命令窗口,相关操作的命令如下:
(1)初始化 git 仓库 git init
git add 文件名 #将工作区的文件添加到缓存区中
git commit -m “注释” #将缓存区的文件内容提交到版本库中
关联后,使用命令 git push -u origin master 第一次推送 master 分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令 git push origin master 推送最新修改;
(22)查看远程服务器的相关信息:git remote -v
(23)git remote show origin(别名) 也可以查看远程服务器的相关信息
03
git 的使用--快照
(1)git log 查看提交的日志
(2)gitk 以图形化的方式展现提交的日志
(3)git log -1 查看最近的一次提交
(4)git log -2 查看最近的两次提交
(5)git log --oneline 查看提交的日志,一行显示
(6)git log --oneline --graph 查看提交的日志
(7)git log -1 -p 查看最近的一次提交
(8)git reflog 显示你所使用过的每一条命令
(9)git log --graph --pretty=oneline --abbrev-commit 查看提交的日志信息
04
git 的使用--版本回退
在 Git 中,用 HEAD 表示当前版本,也就是最新的提交 commit id``(提交码),上一个版本就是 HEAD^,上上一个版本就是 HEAD^^,当然往上 100 个版本写 100 个^比较容易数不过来,所以写成 HEAD~100。
(1)从当前版本回退到上一个版本:git reset --hard HEAD^
(2)根据提交码进行回退:git reset --hard d302ae7 提交码取前面 7 位就够了
(3)git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区
05
git 的使用--版本差异
(1)使用 git diff 来比较工作区与缓存区之间的差异
(2)使用 git diff --cached 来比较缓存区与版本库之间的差异
(3)使用 git diff HEAD 来比较工作区与版本库之间的差异
(4)git diff 文件名 #查看某个文件在工作区与缓存区之间的差异
(5)git diff HEAD -- filename 命令可以查看工作区和版本库里面最新版本的区别
(6)git diff 远程开发分支名 自己的分支名:查看自己的分支与远程开发分支有什么不同
(7)git diff origin/develop develop 查看开发分支有什么不同(develop:开发分支名)
06
git 的使用--历史版本
(1)使用 git checkout 从缓存区中取出文件;也可以使用 git checkout 取出缓存区的状态
(2)使用 git checkout HEAD 来取出版本库中的状态,它会做两步操作:
第一步:使用版本库中的文件来覆盖缓存区
地二步:使用版本库中的文件来覆盖工作区
(3)git checkout -- . 取出当前目录下的所有历史版本
(4)git checkout HEAD 文件名 从版本库中取出某个文件
(5)git checkout -- 文件名 丢弃工作区的修改,意思就是,把 该文件在工作区的修改全部撤销,即让这个文件回到最近一次 git commit 或 git add 时的状态。
07
git 的使用--分支
(1)master:主分支
dev:开发分支,创建开发分支是为了保证 master 分支的稳定性
bug:解决 bug 的分支
注意:dev,bug 是我自己定义的分支名,你请随意
(2)git branch dev #创建开发分支
(3)git branch #查看分支
(4)git branch -a #查看所有分支
(5)git branch -v #查看分支,并带有提交码
(6)git branch -d 分支名 #删除分支
(6)git checkout dev #切换到 dev 分支
(7)git checkout master #切换到 master 分支
(8)git checkout -b bug #创建 bug 分支,并切换到 bug 分支
将 dug 分支合并到 master 分支:
首先要切换到 master 分支:git checkout master
然后进行合并:git merge bug
然后查看日志:git log --oneline
合并完成之后,需要删除 bug 分支:git branch -d bug #删除 bug 分支
然后在查看分支:git checkout -v
再切换到 dev 分支进行开发:git checkout dev
开发完成之后,提交代码:git add 文件名 #将工作区的代码添加到缓存区
切换回 master 分支合并 dev 代码:git checkout master
合并 dev 代码:git merge dev
在查看日志:git log --oneline
命令 作用域 常用情景
git reset 提交层面 在私有分支上舍弃一些没有提交的更改 git reset 文件层面 将文件从缓存区中移除
git checkout 提交层面 切换分支或查看旧版本
git checkout 文件层面 舍弃工作目录中的更改
git revert 提交层面 在公共分支上回滚更改
git revert 文件层面 (然而并没有)
08
git 的使用--tag 标签
(1)git tag v1.0 打标签
(2)git tag 查看所有标签
(3)git show <tagname>可以查看某个标签的详细信息
(4)git tag <tagname> 用于新建一个标签,默认为 HEAD,也可以指定一个 commit id
(5)git tag -d <tagname>可以删除一个本地标签;
(6)注意:标签总是和某个 commit 挂钩。如果这个 commit 既出现在 master 分支,又出现在 dev 分支,那么在这两个分支上都可以看到这个标签。
(7)如果要推送某个标签到远程,使用命令 git push origin <tagname>:
(8)一次性推送全部尚未推送到远程的本地标签:git push origin --tags
(9)如果标签已经推送到远程,现在需要删除远程标签,首先从本地删除:
git tag -d <tagname>
然后,从远程删除。删除命令也是 push,但是格式如下:
git push origin :refs/tags/<tagname>
09
git 的使用--删除文件
(1)使用 git 删除某个某个文件,之后还需要进行提交,否则删除不会成功:
git rm 要删除的文件名
git commit -m "del 删除文件"
(2)误把文件删除,可以通过版本库恢复回来:git checkout -- 误删除的文件
10
git 的使用--设置别名
(1)git config --global alias.st status 设置 status 的别名为 st,git st 等价于 git status,下同
(2)git config --global alias.co checkout
(3)git config --global alias.ci commit
(4)git config --global alias.br branch
--global 参数是全局参数,也就是这些命令在这台电脑的所有 Git 仓库下都有用。
11
git 的使用--将 dev 上未完成的工作暂存
首先要切换到 dev 分支上:git checkout dev
修改某个文件后,将它暂存起来:git stash / git stash save
查看状态:git status 可以看到这个工作会变得很干净
查看存储了哪些暂存工作:git stash list
恢复暂存起来的工作:git stash apply
再查看状态,你就会看到之前暂存起来的工作了。
清除暂存起来的工作:git stash clear
12
git 的使用--设置忽略文件
(1)配置全局忽略的文件,这样就不用每个项目都加 gitignore 了:
git config --global core.excludesfile '~/.gitignore'
(2)创建.gitignore 文件,用来忽略某些文件
(3)echo “文件名” >> .gitignore 将需要忽略的文件添加到忽略文件中
(4)cat .gitignore 查看忽略文件
(5)echo “目录/” >> .gitignore 忽略一个文件
(6)echo "*.txt" >> .gitignore 忽略以.txt 结尾的所有文件
评论