为了账号安全,请及时绑定邮箱和手机立即绑定

Git的自学笔记(基本知识)

标签:
PHP

git基本概念

git和是svn的对比

  • git是分布式版本控制系统,svn是集中式版本控制系统,而两者的区别是:集中式的版本库
    存放在中央服务器,如果是服务器在外网,速度会比较慢。而分布式没有中央服务器,每个人的电脑都是一个完整的版本库,就不需要去联网,而且相比集中式他的安全性要高很多,因为每个人的电脑都一个完整的版本库。

一些概念

  • 工作区:就是代码的存放的目录
  • 版本库:就是那个.git文件,里面有很多东西,其中最重要的是暂存区(stage),还有git自动创建的第一个分支(master),以及指向master的指针(HEAD)

git配置

git安装好后的配置

git config --global user.name "Your Name"
git config --global user.email "Your Email"

这是全局配置git的配置,global参数是全局的意思

git基本命令

创建版本库

touch gitDir
cd gitDir
git init

git init命令是将该目录变成一个版本库,执行成功后会在版本库中衍生出一个.git,当然如果看不到git,要么失败了,要么没有显示出来。

add 和 commit

git add readme.md
git commit -m "Commit Message"
  • add是将文件添加到仓库缓冲区
  • commit是将add之后的文件提交到仓库中,-m是提交时写的备注,所以需要add再进行commit,如果在项目开发过程中,需要对文件频繁操作,可以add->add->...->add->commit

status 和 diff

git status
  • status会显示当前仓库的状态
  • diff是显示文件和版本库中的文件的不同的地方

版本回退

git log
git reset --hard HEAD^
git reset --hard 具体版本号
git reflog
  • git log 是查看提交的版本历史
  • reset 回退 HEAD^回退到当前版本的上一个版本
  • 回退到具体的某一个版本,但是要知道版本号,就是log返回的
  • git reflog会返回每一个操作的日志,这样可以反悔一些东西,比如回退后,想再回到最新的版本,就可以找到版本号。
  • git的回退的原理,git管理着每一次的修改,当前版本就是用指针指向该版本,如果想回退版本,只是将指针指向该修改

撤销修改

git checkout -- readme.md
  • 这句话的意思就是将文件在工作区的修改全部撤销,-- 必须带,不带就是切换到另外一个分支
  • 一种是文件修改后没有add到暂存区,执行后会回到和版本库的文件一模一样
  • 另一种情况是文件已经add到暂存区了,而且后面又修改了,执行后会回到add到暂存区后的状态,也就是说,不会撤销暂存区的内容,只会撤销工作区的修改。
  • 但是如果想撤销已经add到暂存区的内容,需要先git reset HEAD file,再执行git checkout -- file。

删除文件

git rm readme.md
git commit -m 'Delete file'

远程仓库

从远程克隆一份到本地

git clone https://github.com/michaelliao/gitskills.git

git 支持多种协议,包括https,但通过ssh支持的原生git协议速度是最快的。

分支管理

创建分支

git branch dev

切换分支

git checkout dev

创建新分支并切换到该分支下

git checkout -b dev

列出所有分支列表

git branch

合并分支

git merge dev
  • 在当前分支下执行,会将dev分支合并到当前分支,可能合并时会出现冲突的情况,所以需要先解决冲突,再add,再commit

保留合并信息的合并分支方式

git merge --no-ff dev
  • 添加--no-ff表示普通方式合并,合并后保存合并历史。而fast forwardh合并就看不出来曾经合并过

删除分支

git branch -d dev
  • 如果一个分支还有没有合并的修改,使用-d是删除不了的,-D为强制删除,没有合并的修改的分支可以删除,但是删除了之后不能恢复,所以需要谨慎操作

bug分支

在git里面如果遇到bug需要修复,一般思路是从主线上衍生出一个bug分支,在bug分支上作出修改,然后在主分支上合并这个bug分支的内容,然后删除bug分支,

git checkout -b bug-001
修改文件...
git add file
git commit -m "内容"
git checkout master
git merge --no-ff -m "说明内容" bug-001
git branch -d bug-001

以上是你没在开发的时候分支开发的步骤,如果你在开发分支(dev),开发到一半,一个bug过来需要修复,此时这个版本开发不能提交,因为还没有测试,此时就需要将你的开发分支"储藏"起来

git stash

此时用git status就不会有任何改变,因为这个分支上的任何修改已经被隐藏起来了,就可以执行上面的bug修复的步骤,在完成之后,将开发分支的恢复

git stash list #这是查看储藏的列表
git stash pop #恢复后删除list
git stash apply #删除后不删除list

Feature分支(用于新功能开发)

  • 操作和bug分支类似。

远程库相关

查看远程库的信息

git remote 
  • -v 查看详细内容

推送分支到远程

git push origin master(分支名称)

抓取分支

git pull
  • 一般在推送到远程时,提示出错时,尝试git pull将远程的修改抓取下来,如果抓取报错,可能是因为本地分支没有与远程分支进行连接,尝试连接git branch --set-upstream dev origin/dev,再pull,如果同时pull合并出现冲突,需要先解决冲突,再通过push将代码推送到远程。

标签管理

创建标签

git tag <TagName>
  • 对最新版本打标签,如果想对某一次提交打标签,可以在最后面添加commit id

指定标签内容

git tag -a <TagName> -m "TagContent"

删除标签

git tag -d v1.0
  • 上面命令是将本地v1.0标签从本地删除,如果标签已经推送到远程,需要先将本地的标签删除后,再将远程的标签删除,命令:git push origin :refs/tags/<TagName>

将标签推送到远程

git push origin <TagName>
git push origin --tags
  • 第一个命令是将某一个标签推送到远程
  • 第二个命令是将本地未推送的标签全部推送到远程

git服务器搭建

这个自己实操即可

点击查看更多内容
13人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
PHP开发工程师
手记
粉丝
34
获赞与收藏
158

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消