设为首页 收藏本站
查看: 1340|回复: 0

[经验分享] git语法笔记

[复制链接]

尚未签到

发表于 2018-9-17 10:35:44 | 显示全部楼层 |阅读模式
  一.初识
  git是分布式版本控制系统,有别于SVN的集中式管理。两者具体的分析比较可以参考github上的这篇gib与svn的差异比较。个人观点看,git指令丰富,功能完善,还拥有github这个大杀器,没有理由不选git.
  二.git的文件状态与工作区域
  I:三种状态:已提交(committed)、已修改(modified)和已暂存(staged)。你的文件可能就处于其中的一种状态。已提交表示数据已经安全的保存在本地数据库中。已修改表示修改了文件,但还没保存到数据库中。已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
  II:Git 项目中的三个工作区域的概念:
  Git 仓库(Repository):Git仓库是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
  工作目录(Working Directory):工作目录是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
  暂存区域(Staging Area):暂存区域 是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 
  三.git指令整理
  I:主体命令
  1.git init               初始化操作。进入到本地想建仓库的目录, 执行此命令 ,之后便可看到 .git 这个文件夹(隐藏)
  2.git add file            将文件添加到缓存
  3.git status             查看状态详细信息    若加 -s 参数  则是简略显示
  举例如:
     $ git status -s
  M README
  MM Rakefile
  A  lib/git.rb
  M  lib/simplegit.rb
  ?? LICENSE.txt
  说明:新添加的未跟踪文件前面有 ?? 标记,新添加到暂存区中的文件前面有 A 标记,修改过的文件前面有 M标记。 你可能注意到了 M 有两个可以出现的位置,出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区。 例如,上面的状态报告显示:README 文件在工作区被修改了但是还没有将修改后的文件放入暂存区,lib/simplegit.rb 文件被修改了并将修改后的文件放入了暂存区。 而 Rakefile 在工作区被修改并提交到暂存区后又在工作区中被修改了,所以在暂存区和工作区都有该文件被修改了的记录。
  4.git rm -r  filename       删除本地仓库文件     加 -n 参数  预删除文件,并不会真的删除磁盘上文件
  5.git rm  -f filename       强制删除   适用于文件在删除前做过修改并已提交到暂存区域的情况。但这样的话,删除的数据不能通过git再恢复
  6.git rm --cached   filename     只删除缓存区里的文件
  拓展:git rm 命令后面可以列出文件或者目录的名字,也可以使用 glob 模式。 比方说:
$ git rm log/\*.log  注意到星号 * 之前的反斜杠 \, 因为 Git 有它自己的文件模式扩展匹配方式,所以我们不用 shell 来帮忙展开。 此命令删除 log/ 目录下扩展名为 .log 的所有文件。 类似的比如:
$ git rm \*~  该命令为删除以 ~ 结尾的所有文件。
  7.git mv 旧文件名 新文件名      实现对文件重命名
  8.git fetch [alias]           更新本地数据文件,然后再执行 git merge [alias]/[branch] 将服务器上的任何更新合到本地的仓库中
  9.git diff                 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别
  具体参数应用:
  尚未缓存的改动:git diff
  查看已缓存的改动: git diff --cached
  查看已缓存的与未缓存的所有改动:git diff HEAD
  显示摘要而非整个 diff:git diff --stat
  10.git reset HEAD            命令用于取消已缓存的内容。
  具体参数应用信息:

  $ git reset --hard
  $ git reset --soft
  $ git reset --mixed   hard/soft/mixed 是reset命令常用的三模式,默认是mixed。除此之外还有merge和keep两种模式,但是不大常用。
  II:推送拉取相关
  1.git remote             查看远端的仓库
  2.git pull 远端仓库名         拉取远程数据仓库的数据  『合并了 git fetch 远程仓库  + git merge  远程仓库名  本地分支』
  3.git remote add 远程仓库名 https://github.com/xxxx/远程仓库名.git         建立远程仓库
  4.git push  远程仓库名  本地分支名      推送本地分支仓库数据到远程仓库同名分支下(git 会在远端仓库新建一个同名分支)
  5.git commit -m "代码提交信息"                完成这步,对文件所做的改动便会提交到了 HEAD,但是还没到你的远端仓库。(需事先执行 git add操作)
  6.git commit -a             可跳过git add   操作 , 直接将文件信息提交
  7.git  clone   url           拷贝一个项目到本地
  III.git日志操作
  1.git log                查看消息日志
  带有的选项含义:
  --oneline  则消息以简短的形式体现
  --reverse    逆向显示消息信息
  --author     制定作者信息      如:  git log  --authou=kkk    -5      显示 操作为kkk的前5行记录
  --before     制定多少时间以前   如:  git log --oneline   --before={1.weeks.ago}
  --after      相对应before      时间可为:   weeks  days  hours  minutes   或者直接敲数字  如: git log --oneline  --after={2016-08-02}
  --graph   开启拓扑图选项
  IV:git的标签操作

  1.git tag              用于新建一个标签,默认为HEAD,也可以指定一个commit>  2.git tag -a  -m "blablabla..."          可以指定标签信息,或直接
  git tag 标签名         但这样就缺少了相关详细的说明
  3.git tag -s  -m "blablabla..."           可以用PGP签名标签;
  4.git tag                               可以查看所有标签。
  5.git show tag                      查看标签信息
  6.git push --tags                          将本地所有tag一次推送到远程    注意默认情况下,git push 并不会把本地标签传到远程仓库上,需要通过命名制定上传
  7.git push  远程仓库  tagname                将本地单个标签往远程仓库推
  8.git fetch origin tag                 获取远程仓库的tag
  9.git tag -d                        删除本地tag
  10.git push origin --delete tag           删除远程仓库的tag
  11.git  tag -a tagname  标签校验和             可实现对标签进行后期补打标签   校验和信息的获取方式命令: git log --pretty=oneline --abbrev-commit
  黄色标记即为历史提交对应的校验信息
DSC0000.png

  V:git分支操作
  1.git branch                              查看分支
  2.git branch -r                      查看远程分支
  3.git branch  分支名                    本地创建分支
  4.git checkout -b 分支名                本地创建分支,并自动切换到给分支
  5.git checkout 分支名                       切换到相应的分支
  6.git branch  -d 分支名                     删除本地分支
  7.git push 远程仓库名  --delete           删除远程仓库的分支
  8.git branch -m devel develop     重命名本地分支   如: 将devel修改为 develop
  9.git merge  要合的分支名                  合并分支
  附参考信息:
  1.https://git-scm.com/book/zh/v2



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-588235-1-1.html 上篇帖子: GIT客户端(TortoiseGit上传代码到GitHub)操作流程 下篇帖子: GIT全方面教学
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表