当前位置: 首页 > news >正文

git学习

以下内容学自:Git教程

本地基础操作

  1. pwd 命令可以显示当前的目录。

  2. 通过 git init 命令把当前的目录变成Git可以管理的仓库。

  3. git add <filename> 把文件添加到仓库。

  4. git commit -m <event>

  5. 通过 git status 命令查看当前仓库状态。

  6. git differ <filename> 可以查看修改了什么内容。

  7. git log 可以查看 commit 的历史记录。

  8. git reset --hard HEAD~n n是倒回第几个历史版本。可以将当前版本回退到倒数第n个版本。

    git reset --hard <commit_id> 可以回退到指定的 commit_id 的历史版本。

  9. cat <filename> 可以查看 filename 的内容。

  10. git reflog 可以查看操作的记录。


示意图

  • git init 之后那个目录就是工作区。

  • git add 就是把修改放到 stage (暂存区)当中。

  • git commit 之后放在暂存区的修改就全部提交到分支。


  1. git checkout -- <filename> 可以用在工作区的文件修改后还没提交到暂存区,使用这个命令可以撤销掉工作区的修改,回到和版本库一模一样的状态。
  2. git reset HEAD <filename> 可以把暂存区的修改撤销掉,重新放到工作区。
  3. git rm <filename> 可以从版本库删除文件,执行完这个还要执行 commit 提交才可以删除版本库的文件。

远程仓库

  1. 要关联一个远程库。

    使用命令git remote add origin git@server-name:path/repo-name.git

    server-namegithub.compath 是Github账号。repo-name 是仓库名。

  2. 将本地的更新同步到远程仓库。

    • git push -u origin master
      origin 是远程库的名称。
    • 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
    • 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
    • 之后只要本地作了提交就可以使用 git push origin master 把本地 master 分支的最新修改推送至Github。
  3. 将远程仓库克隆到本地。

    git clone git@server-name:path/repo-name.git

    会将目标克隆到当前目录。


分支管理

  1. git branch <name> 创建分支。

  2. git checkout <name> 切换分支。

  3. git checkout -b <name> 表示创建并切换分支。

  4. git branch 查看当前分支。

  5. git merge <name> 合并分支。

  6. git branch -d <name> 删除分支。

  7. 处理冲突

    • 当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
    • git log --graph命令可以看到分支合并图。
  8. 通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
    如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。
    合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

  9. 当手头工作没有完成时,先把工作现场git stash一下,保存现场。

    • git stash apply 恢复现场
    • git stash drop 删除stash。
    • git stash pop 恢复现场并删除stash。
    • git stash list 可以查看所有的stash。
    • 有多个stash的时候,可以使用git stash apply <stashname> 恢复指定的stash。
  10. 如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>强行删除。

  11. 多人合作

    • 查看远程库信息,使用git remote -v
    • 本地新建的分支如果不推送到远程,对其他人就是不可见的;
    • 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
    • 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
    • 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
    • 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。

标签管理

git的tag绑定了commit,可以说是ip和域名的关系。

创建标签

  1. 命令git tag <name>用于新建一个标签,默认为HEAD,也可以指定一个commit id;
  2. git tag -a <tagname> -m "blablabla..."可以指定标签信息;
  3. git tag -s <tagname> -m "blablabla..."可以用PGP签名标签;
  4. 命令git tag可以查看所有标签。

操作标签

  1. 命令git push origin <tagname>可以推送一个本地标签;
  2. 命令git push origin --tags可以推送全部未推送过的本地标签;
  3. 命令git tag -d <tagname>可以删除一个本地标签;
  4. 命令git push origin :refs/tags/<tagname>可以删除一个远程标签。

转载于:https://www.cnblogs.com/fightfordream/p/7209247.html

相关文章:

  • SVM
  • Java编码格式
  • 【SignalR学习系列】2. 第一个SignalR程序
  • Passing the Message 单调栈两次
  • SSM搭建
  • 格式化angularjs日期'/Date(-62135596800000)/'
  • window.location
  • ASP.NET Core API 版本控制
  • 2017.7.25 jqGrid在编辑态无法获取数据,得到的是html代码
  • 人机猜拳
  • 【网络开发】详谈socket请求Web服务器过程
  • java④
  • rhcs clustat
  • js学习总结----DOM2兼容处理顺序问题
  • 爬虫实践---排行榜小说批量下载
  • [译]Python中的类属性与实例属性的区别
  • Android优雅地处理按钮重复点击
  • GraphQL学习过程应该是这样的
  • Js基础知识(四) - js运行原理与机制
  • leetcode讲解--894. All Possible Full Binary Trees
  • magento2项目上线注意事项
  • PV统计优化设计
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • Terraform入门 - 1. 安装Terraform
  • 复习Javascript专题(四):js中的深浅拷贝
  • 高度不固定时垂直居中
  • 工程优化暨babel升级小记
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • ------- 计算机网络基础
  • 类orAPI - 收藏集 - 掘金
  • 微信小程序设置上一页数据
  • 系统认识JavaScript正则表达式
  • 智能网联汽车信息安全
  • 扩展资源服务器解决oauth2 性能瓶颈
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • #pragma 指令
  • #考研#计算机文化知识1(局域网及网络互联)
  • (2022 CVPR) Unbiased Teacher v2
  • (C语言)fread与fwrite详解
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (转)Scala的“=”符号简介
  • (转)大道至简,职场上做人做事做管理
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .net打印*三角形
  • .net连接oracle数据库
  • .net专家(高海东的专栏)
  • @property python知乎_Python3基础之:property
  • [2019/05/17]解决springboot测试List接口时JSON传参异常
  • [ASP.NET 控件实作 Day7] 设定工具箱的控件图标
  • [BPU部署教程] 教你搞定YOLOV5部署 (版本: 6.2)
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [J2ME]如何替换Google Map静态地图自带的Marker