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

[经验分享] git 项目开发使用

[复制链接]

尚未签到

发表于 2018-9-16 12:21:00 | 显示全部楼层 |阅读模式
  GIT保存的是不是文件差异或者变化量,而只是一系列文件快照
  在Git 中提交时,会保存一个提交(commit)对象,该对象包含一个指向暂存内容快照的指针,包含本次提交的作者等相关附属信息,包含零个或多个指向该提交对象的父对象指针:首次提交是没有直接祖先的,普通提交有一个祖先,由两个或多个分支合并产生的提交则有多个祖先。
  暂存操作会对每一个文件计算校验和(即第一章中提到的SHA-1 哈希字串),然后把当前版本的文件快照保存到Git 仓库中(Git 使用blob 类型的对象存储这些快照),并将校验和加入暂存区域
  当使用git commit 新建一个提交对象前,Git 会先计算每一个子目录(本例中就是项目根目录)的校验和,然后在Git 仓库中将这些目录保存为树(tree)对象。之后Git 创建的提交对象,除了包含相关提交信息以外,还包含着指向这个树对象(项目根目录)的指针,如此它就可以在将来需要的时候,重现此次快照的内容了。
  现在,Git 仓库中有三种对象:表示文件快照内容的blob 对象一个文件一个对象;一个记录着目录树内容及其中各个文件对应blob 对象索引的tree 对象;以及一个包含指向tree 对象(根目录)的索引和其他提交信息元数据的commit 对象。
  它保存着一个名为HEAD的特别指针,git通过该指针知道你当前在哪个分支上工作
  初始化一个本地目录为git仓库
  git init
  配置git的一些常用参数,如:user.name, user.email等等
  git config
  从远端克隆一个仓库
  git clone
  查看当前仓库状态
  git status
  配置远端地址或者其他一些设置
  git remote
  想本地仓库添加文件
  git add
  git仓库忽略某些文件不纳入git仓库的管理,不上传到仓库。编辑.gitignore添加文件类型
  *.[oa]   忽略以.o或.a结尾的文件
  *~   忽略所有以~结尾的文件。
  .gitignore的格式规范如下:

  •   所有空行或者以注视符号#开头的行都会被git忽略。
  •   可以使用标准的glob模式匹配。
  glob模式是指shell所使用的简化了的正则,*匹配0或多个任意字符;[abc]匹配任何一个列在方括号中的字符;?只匹配一个任意字符;[0-9] 匹配所有0到9的数字,[a-z]a到z的所有小写字母

  •   匹配模式最后跟\说明要忽略的是目录。
  •   要忽略指定模式以外的文件或目录,可以在模式前加上!取反。
  从远端仓库更新仓库内容
  git pull
  从把修改提交到本地仓库
  git commit
  git commit --amend   ---- 修改最后一次提交的信息,在提交完后发现漏掉了文件没有加,提交信息写错了,要想撤销刚才提交的操作,用该参数重新提交。
  从本地仓库的更改提交到远端仓库
  git push
  从其他分支比如说dev分支合并到当前所在的分支,如:git merge origin/dev (加入当前分支在master)把dev分支的内容合并到master分支下。
  git merge
  查看提交信息, 其中的参数-p 展开显示每次提交的内容差异,-2仅显示最近的两次更新
  git log
  当前做的哪些更新没add到仓库,哪些更新已经add准备提交的
  git diff
  此命令比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
  如果要看已经添加起来的文件和上次提交时的快照之间的差异,用git diff --cached或者git diff --staged。
  git rm
  从仓库中删除文件,并且不不再纳入版本管理。
  移动文件
  git mv
  git并不跟踪文件移动操作,对文件的改名。用其他工具进行批处理改名的话,要在提交前删除老的我呢简明,再添加新的文件名。
  取消已经暂存的文件,取消工作目录中已修改的文件。可使用git status 查看当中的提示
  git reset HEAD
  查看当前的远程仓库
  git remote -v
  添加远程仓库
  git remote add remote-name URL
  从远程仓库抓取数据
  git fetch [remote-name]
  推送本地数据到远程仓库
  git push remote-name branch-name
  查看远程仓库信息
  git remote show [remote-name]
  远程仓库的删除和重命名
  git remote rename remote-name remote-name-2
  git remote rm remote-name
  显示已有的标签
  git tag
  新建标签
  轻量级的:就像是一个不会变化的分支,实际上它就是个指向特定提交对象的引用,保存着对应提交对象的校验和信息的文件。
  含附注标签:存储在仓库中的一个独立对象,它有自身的校验和信息,包含着标签的名字,电子邮件和日志,及标签说明,标签本身也允许使用GNU Privacy Guard(GPG)来签署或验证。
  新建一个含附注的标签
  git tag -a v1.1 -m "my version 1.1"      -a 指定标签名,-m指定了对应的标签说明。
  查看标签的版本新,并联通显示打标签时的提交对象。
  git show v1.1
  签署标签 使用-s选项,前提是要有自己的私钥
  git tag -s v1.2 -m "my signed version 1.2 tag"
  轻量级标签 啥选项都不用。
  git tag v1.3
  分享标签 -- 默认情况,git push不会把标签推到remote上,只有通过显式命令才能分享标签到remote
  git push origin [tagname]
  GIT BRANCH
  新建一个分支,并创建文件,提交到仓库,合并新分支到master
  git checkout -b hotfix
  touch filename
  git add filename
  git commit -a -m "commit a filename"
  git checkout master
  git merge hotfix   把hotfix分支合并到master分支
  该种合并方式称为(Fast forward 快进)
  遇到冲突时的分支合并
  在不同的分支中都修改了同一个文件的同一部分,就只能有人来解决。可以使用
  git status
  来查看
  任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。
  分支的管理
  git branch
  分支前的* 字符:它表示当前所在的分支
  查看各个分支最后一个提交对象的信息
  git branch -v
  从该清单中筛选出你已经(或尚未)与当前分支合并的分支,可以用--merged 和--no-merged 选项
  git branch --no-merged
  查看尚未合并的工作
  本地分支和远程仓库分支的协同
  首先从远程克隆一个分支到本地,然后在本地有更改的时候需要向远程提交的时候需要先在本地执行
  git fetch origin
  先同步远程数据到本地再提交到远程
  分支的衍合
  一个分支中的修改整合到另一个分支中有两种办法:merge和rebase


运维网声明 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-584530-1-1.html 上篇帖子: git 使用SSH 下篇帖子: 聊下 git 多账户问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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