美文网首页
Git基本教程

Git基本教程

作者: 毅冷锋 | 来源:发表于2017-12-06 19:19 被阅读0次

    git作为一个分布式版本控制软件,已经成为我们工作中使用的最广泛的工具。
    git详细介绍点这里

    三个概念

    • 已提交(mommitted)
      该文件已经被安全滴保存在本地数据库种了。例如git clone 其实就是这个状态
    • 已修改(modified)修改了某个文件,但还没提交保存
    • 已暂存(staged)把已经修改的文件放在下次提交时要保存的清单里

    三个区域

    • 工作区(也称工作目录),working directory
    • 暂存区 ,satge/index
    • 历史记录区(也称版本区),history

      转个阮一峰老师的图吧 QQ截图20171205221637.png

    几个常见名词

    • remote 远程仓库
    • origin 一般默认远程仓库的标签
    • master 主支干
    • Dev 分支

    基础命令

    • 第一次使用需要设置用户名和邮箱
      git config --global user.name "name"用户名
      git config --global user.email "email address"邮箱
    • git add . 把文件的所有改变都放入暂存区
    • git status 查询文件状态
    • git rm 删除文件
    • git mv 重命名文件
    • 提交到本地仓库有几个命令
      git commit -am "备注信息"
      git commit -a "备注信息"
      git commit -m "备注信息"
      注意备注信息是必须要填写的,而且尽量简明扼要
    • git pull 用来更新本地仓库版本的
    • git push 提交到远程仓库

    远程本地操作

    • git clone 远程下载,最常用的命令
      git clone origin "项目地址"
      注意,地址协议有几种、http,https,git等,但是推荐用ssh,也就是git协议,因为最快
    • 使用ssh协议,则必须要有公私钥对,没有的话,必须要设置一个,不会的点这里
    • 修改文件用vim打开,修改后退出保存,安利自己写的vim使用教程
    • 然后git add. git commit git push

    本地文件推送到远程仓库

    • mkdir 文件夹名 新建文件夹
      touch 文件 新建文件
    • 最重要的步骤:git init
      git是本地仓库和远程仓库之间的传送工具,可是我们刚刚只是建了文件夹,
      文件夹又不是仓库,自然无法git传送,所以我们要把文件夹变成仓库
      这里重要的概念就是,仓库里有个隐藏的.git的文件,只要文件夹里有.git 就行了
      git init初始化文件夹为本地仓库
    • 这时我们git add. git commit git push 时 它会报错说找不到远程库
      我们clone的时候,远程仓库会自动建立两者的链接关系,但我们只在本地创建仓库
      和远程库就没有关系了,这时我们就得让它俩有关系
      git remote add origin 远程库地址添加远程库标签
      git remote -v 查询本地仓库的远程仓库地址
      git remote set-仓库地址 仓库名 修改远程仓库地址
    • 这时我们就可以提交了

    分支操作

    • 分支操作可以说是git 使用中最重要的操作了(不懂什么是分支,请自行谷歌/百度),首先要知道,仓库有且只能有一个maser分支,可以说是主干,所有提供给用户使用的正式版本,都在这个主分支上发布。

    • git branch查看本地分支列表
      git branch -r查看远程分支列表
      git branch -a 查看所有本地远程分支

    • git branch dev 创建本地库dev分支
      git checkout dev 切换到dev分支
      这两个可以简写成下面这个命令
      git checkout -b dev

    • 合并分支
      首先用git checkout 分支名 切换到需要合并的分支上去,一般都是master分支
      然后使用git marge 需要被合并的分支名 合并分支到主分支上

    • 删除分支
      git branch -d 分支名

    • 删除远程分支
      git push origin --delete [branch-name]
      git branch -dr remote/branch

    撤销操作/版本回滚

    • 这次简单介绍下,我理解也不是很透彻,之后会专门写一篇关于此的文章
    • 一般是两种用法git resetgit revert
    • git reset --"参数"一般参数有hardmixedsoft
      git reset --hard 版本回退,同时工作区和暂存区的文件也回到此版本时的状态
      git reset --mixed 默认参数,改变引用文件,不改变工作区文件,但是会改变暂存区文件
      git reset --soft只修改文件,不会改变暂存区和工作区文件
      可以这样理解,当你需要彻底回到某个提交版本时,就用hard;若是想保留自己修改过的文件,就用mixed,保留下文件源码,这也是默认方式;若是仅仅只是想撤销某次提交,就用soft,保留下所有修改文件
    • git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交
      git revert HEAD 撤销前一次 commit
      git revert HEAD^ 撤销前前一次 commit
      git revert 的撤销并不是意义上删除,而是重新提交一次commit命令,
      只是这个命令内容刚好和要撤销的那个命令完全相反,造成了回到错误提交状态之前,但是你查记录会发现,里面会有之前错误的commit ,也有这次的commit
    • 两者区别,最大的区别在于,git revert 时,版本是前进的,而git reset时,版本其实是回到撤销的命令的版本
      我的理解是,revert,就相当于政府连续发布了两条完全相反的命令,造成了状态上的恢复,但是大家知道确实有过这个命令,而reset则是干脆删除了这个命令,直接强制恢复,抽取了的记忆,这个是断层的,不存在了,认为什么都没发生
    • 更深层的就只能大家在使用中去体会了,我以后会写一篇详细的文章。

    写在最后

    • 当有冲突时,要先修改文件,再提交
    • 更多git使用教程请点这里

    相关文章

      网友评论

          本文标题:Git基本教程

          本文链接:https://www.haomeiwen.com/subject/pyshixtx.html