git合并冲突 <<<<<<< HEAD、=======、>>>>>>>含义

在 git 中,<<<<<<< HEAD、=======、>>>>>>>是用来标记代码冲突的特殊标记。

  • <<<<<<< HEAD
    • HEAD 表示当前分支的修改内容开始的位置。(本地代码)
  • =======
    • 表示当前分支和合并源分支之间的分隔线。
  • >>>>>>> dd
    • dd 表示合并源分支(通常是你合并到当前分支的分支)的修改内容开始的位置(拉下来的代码)
  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
自购买、自扫描、带书签,品质保证 第 1 章:入门篇 1.1 什么是 Git?为什么要学习它? 1.2 与其它版本控制系统的差异第2 章:环境安装2.1 安装在Windows 作业系统2.2 安装在Mac OSX 作业系统2.3 安装在Linux 作业系统2.4 图形化介面工具第3 章:终端机/ 命令提示字元3.1终端机及常用指令介绍3.2 超简明Vim 操作介绍第4 章:设定Git 4.1 使用者设定4.2 其它方便的设定第5 章:开始使用Git 5.1 新增、初始Repository 5.2 把档案交给Git 控管5.3 工作区、暂存区与储存库5.4 检视纪录5.5 状况题如何在Git 里删除档案或变更档名? 5.6 状况题 修改 Commit 纪录 5.7 状况题 追加档案到最近一次的 Commit 5.8 状况题 新增目录? 5.9 状况题 有些档案我不想放在 Git 里面... 5.10 状况题 检视特定档案的 Commit 纪录 5.11 状况题 等等,这行程式谁写的? 5.12 状况题 啊!不小心把档案或目录删掉了⋯ 5.13 状况题 刚才的 Commit 后悔了,想要 拆掉重做⋯ 5.14 状况题 不小心使用 hard 模式 Reset 了某个 Commit,救得回来吗? 5.15 冷知识 HEAD 是什么东西? 5.16 状况题 可以只 Commit 一个档案的部份的内容吗? 5.17 冷知识 那个长得很像乱码 SHA-1 是怎么算出来的? 5.18 超冷知识 在. git 目录里有什么东西? Part 1 5.19 超冷知识 在. git 目录里有什么东西? Part 2 第 6 章:使用分支 6.1 为什么要使用分支? 6.2 开始使用分支 6.3 对分支的误解 6.4 合并分支 6.5 状况题 为什么我的分支都没有「小耳朵」? 6.6 常见问题合并过的分支要留着吗? 6.7 状况题 不小心把还没合并的分支砍掉了,救得回来吗? 6.8 另一种合并方式(使用 rebase) 6.9 合并发生冲突了,怎么办? 6.10 冷知识 为什么大家都说在 Git 开分支「很便宜」? 6.11 冷知识 Git 怎么知道现在是在哪一个分支? 6.12 状况题 我可以从过去的某个 Commit 再长一个新的分支出来吗?第7 章:修改历史纪录7.1 状况题修改历史讯息7.2 状况题把多个Commit 合并成一个Commit 7.3 状况题把一个Commit 拆解成多个Commit 7.4 状况题想要在某些Commit 之间再加新的Commit 7.5 状况题想要删除某几个Commit 或是调整Commit 的顺序7.6 Reset、Revert 跟Rebase 指令有什么差别?第 8 章:标签 8.1 使用标签 8.2 冷知识 标签跟分支有什么不一样?第9 章:其它常见状况题与冷知识9.1 状况题手边的工作做到一半,临时要切换到别的任务9.2 状况题不小心把帐号密码放在Git 里了,想把它删掉⋯ 9.3 冷知识怎么样把档案真正的从Git 里移掉? 9.4 冷知识 你知道 Git 有资源回收机制吗? 9.5 冷知识 断头(detached HEAD)是怎么一回事?第 10 章:远端共同协作 - 使用 GitHub 10.1 GitHub 是什么? 10.2 Push 上传到 GitHub 10.3 Pull 下载更新 10.4 状况题 怎么有时候推不上去... 10.5 从伺服器上取得 Repository 10.6 常见问题 Clone 跟 Pull 指令有什么不一样? 10.7 与其它开发者的互动 - 使用 Pull Request(PR) 10.8 状况题 怎么跟上当初 fork 专案的进度? 10.9 状况题 怎么删除远端的分支? 10.10 状况题 听说 git push -f 这个指令很可怕,什么情况可以使用它呢? 10.11 使用 GitHub 免费制作个人网站 10.12 冷知识 一定要有 GitHub 才能得到别人更新的档案吗?第 11 章:使用 Git flow 11.1 Git Flow 是什么?为什么需要这种东西?
1 起步 1 1.1 关于版本控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1.1 本地版本控制系统 . . . . . . . . . . . . . . . . . . . . . . 1 1.1.2 集中化的版本控制系统 . . . . . . . . . . . . . . . . . . . . 1 1.1.3 分布式版本控制系统 . . . . . . . . . . . . . . . . . . . . . 2 1.2 Git 的历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.3 Git 基础要点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.3.1 直接快照,而非比较差异 . . . . . . . . . . . . . . . . . . . 4 1.3.2 近乎所有操作都可本地执行 . . . . . . . . . . . . . . . . . . 5 1.3.3 时刻保持数据完整性 . . . . . . . . . . . . . . . . . . . . . 5 1.3.4 多数操作仅添加数据 . . . . . . . . . . . . . . . . . . . . . 5 1.3.5 三种状态 . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 安装 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.1 从源代码安装 . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.2 在 Linux 上安装 . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.3 在 Mac 上安装 . . . . . . . . . . . . . . . . . . . . . . . . 8 1.4.4 在 Windows 上安装 . . . . . . . . . . . . . . . . . . . . . . 8 1.5 初次运行 Git 前的配置 . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 用户信息 . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.2 文本编辑器 . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.3 差异分析工具 . . . . . . . . . . . . . . . . . . . . . . . . 10 1.5.4 查看配置信息 . . . . . . . . . . . . . . . . . . . . . . . . 10 1.6 获取帮助 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.7 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2 Git 基础 13 2.1 取得项目的 Git 仓库 . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1.1 从当前目录初始化 . . . . . . . . . . . . . . . . . . . . . . 13 2.1.2 从现有仓库克隆 . . . . . . . . . . . . . . . . . . . . . . . 14 2.2 记录每次更新到仓库 . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.1 检查当前文件状态 . . . . . . . . . . . . . . . . . . . . . . 14 2.2.2 跟踪新文件 . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.2.3 暂存已修改文件 . . . . . . . . . . . . . . . . . . . . . . . 16 2.2.4 忽略某些文件 . . . . . . . . . . . . . . . . . . . . . . . . 17 2.2.5 查看已暂存和未暂存的更新 . . . . . . . . . . . . . . . . . . 18 2.2.6 提交更新 . . . . . . . . . . . . . . . . . . . . . . . . . . 20 iii 2.2.7 跳过使用暂存区域 . . . . . . . . . . . . . . . . . . . . . . 21 2.2.8 移除文件 . . . . . . . . . . . . . . . . . . . . . . . . . . 22 2.2.9 移动文件 . . . . . . . . . . . . . . . . . . . . . . . . . . 23 2.3 查看提交历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2.3.1 限制输出长度 . . . . . . . . . . . . . . . . . . . . . . . . 28 2.3.2 使用图形化工具查阅提交历史 . . . . . . . . . . . . . . . . . 29 2.4 撤消操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 2.4.1 修改最后一次提交 . . . . . . . . . . . . . . . . . . . . . . 29 2.4.2 取消已经暂存的文件 . . . . . . . . . . . . . . . . . . . . . 30 2.4.3 取消对文件的修改 . . . . . . . . . . . . . . . . . . . . . . 31 2.5 远程仓库的使用 . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 2.5.1 查看当前的远程库 . . . . . . . . . . . . . . . . . . . . . . 32 2.5.2 添加远程仓库 . . . . . . . . . . . . . . . . . . . . . . . . 32 2.5.3 从远程仓库抓取数据 . . . . . . . . . . . . . . . . . . . . . 33 2.5.4 推送数据到远程仓库 . . . . . . . . . . . . . . . . . . . . . 33 2.5.5 查看远程仓库信息 . . . . . . . . . . . . . . . . . . . . . . 34 2.5.6 远程仓库的删除和重命名 . . . . . . . . . . . . . . . . . . . 35 2.6 打标签 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2.6.1 列显已有的标签 . . . . . . . . . . . . . . . . . . . . . . . 35 2.6.2 新建标签 . . . . . . . . . . . . . . . . . . . . . . . . . . 36 2.6.3 含附注的标签 . . . . . . . . . . . . . . . . . . . . . . . . 36 2.6.4 签署标签 . . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.6.5 轻量级标签 . . . . . . . . . . . . . . . . . . . . . . . . . 37 2.6.6 验证标签 . . . . . . . . . . . . . . . . . . . . . . . . . . 38 2.6.7 后期加注标签 . . . . . . . . . . . . . . . . . . . . . . . . 38 2.6.8 分享标签 . . . . . . . . . . . . . . . . . . . . . . . . . . 39 2.7 技巧和窍门 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.7.1 自动完成 . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.7.2 Git 命令别名 . . . . . . . . . . . . . . . . . . . . . . . . 41 2.8 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 3 Git 分支 43 3.1 何谓分支 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 3.2 基本的分支与合并 . . . . . . . . . . . . . . . . . . . . . . . . . . 47 3.2.1 基本分支 . . . . . . . . . . . . . . . . . . . . . . . . . . 48 3.2.2 基本合并 . . . . . . . . . . . . . . . . . . . . . . . . . . 51 3.2.3 冲突合并 . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.3 分支管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 3.4 分支式工作流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.4.1 长期分支 . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.4.2 特性分支 . . . . . . . . . . . . . . . . . . . . . . . . . . 56 3.5 远程分支 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 3.5.1 推送 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 3.5.2 跟踪分支 . . . . . . . . . . . . . . . . . . . . . . . . . . 61 3.5.3 删除远程分支 . . . . . . . . . . . . . . . . . . . . . . . . 62 3.6 衍合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 iv 3.6.1 衍合基础 . . . . . . . . . . . . . . . . . . . . . . . . . . 62 3.6.2 更多有趣的衍合 . . . . . . . . . . . . . . . . . . . . . . . 64 3.6.3 衍合的风险 . . . . . . . . . . . . . . . . . . . . . . . . . 66 3.7 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 4 服务器上的 Git 69 4.1 协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 4.1.1 本地协议 . . . . . . . . . . . . . . . . . . . . . . . . . . 69 优点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 缺点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 4.1.2 SSH 协议 . . . . . . . . . . . . . . . . . . . . . . . . . . 70 优点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 缺点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 4.1.3 Git 协议 . . . . . . . . . . . . . . . . . . . . . . . . . . 71 优点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 缺点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 4.1.4 HTTP/S 协议 . . . . . . . . . . . . . . . . . . . . . . . . . 72 优点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 缺点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.2 在服务器部署 Git . . . . . . . . . . . . . . . . . . . . . . . . . . 73 4.2.1 将纯目录转移到服务器 . . . . . . . . . . . . . . . . . . . . 73 4.2.2 小型安装 . . . . . . . . . . . . . . . . . . . . . . . . . . 74 SSH 连接 . . . . . . . . . . . . . . . . . . . . . . . . . . 74 4.3 生成 SSH 公钥 . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 4.4 架设服务器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 4.5 公共访问 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 4.6 网页界面 GitWeb . . . . . . . . . . . . . . . . . . . . . . . . . . 79 4.7 权限管理器 Gitosis . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.8 Git 进程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84 4.9 Git 托管服务 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 4.9.1 GitHub . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.9.2 建立账户 . . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.9.3 建立新仓库 . . . . . . . . . . . . . . . . . . . . . . . . . 87 4.9.4 从 Subversion 中导入项目 . . . . . . . . . . . . . . . . . . 89 4.9.5 开始合作 . . . . . . . . . . . . . . . . . . . . . . . . . . 90 4.9.6 项目页面 . . . . . . . . . . . . . . . . . . . . . . . . . . 91 4.9.7 派生(forking)项目 . . . . . . . . . . . . . . . . . . . . . 92 4.9.8 GitHub 小节 . . . . . . . . . . . . . . . . . . . . . . . . . 93 4.10 小节 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 5 分布式 Git 95 5.1 分布式工作流程 . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 5.1.1 集中式工作流 . . . . . . . . . . . . . . . . . . . . . . . . 95 5.1.2 集成管理员工作流 . . . . . . . . . . . . . . . . . . . . . . 96 5.1.3 司令官与副官工作流 . . . . . . . . . . . . . . . . . . . . . 97 5.2 为项目作贡献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 v 5.2.1 提交指南 . . . . . . . . . . . . . . . . . . . . . . . . . . 98 5.2.2 私有的小型团队 . . . . . . . . . . . . . . . . . . . . . . . 99 5.2.3 私有团队间协作 . . . . . . . . . . . . . . . . . . . . . . . 104 5.2.4 公开的小型项目 . . . . . . . . . . . . . . . . . . . . . . . 108 5.2.5 公开的大型项目 . . . . . . . . . . . . . . . . . . . . . . . 112 5.2.6 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.3 项目的管理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 5.3.1 使用特性分支进行工作 . . . . . . . . . . . . . . . . . . . . 115 5.3.2 采纳来自邮件的补丁 . . . . . . . . . . . . . . . . . . . . . 115 使用 apply 命令应用补丁 . . . . . . . . . . . . . . . . . . . 115 使用 am 命令应用补丁 . . . . . . . . . . . . . . . . . . . . 116 5.3.3 检出远程分支 . . . . . . . . . . . . . . . . . . . . . . . . 118 5.3.4 决断代码取舍 . . . . . . . . . . . . . . . . . . . . . . . . 118 5.3.5 代码集成 . . . . . . . . . . . . . . . . . . . . . . . . . . 119 合并流程 . . . . . . . . . . . . . . . . . . . . . . . . . . 120 大项目的合并流程 . . . . . . . . . . . . . . . . . . . . . . 122 衍合与挑拣(cherry-pick)的流程 . . . . . . . . . . . . . . . 122 5.3.6 给发行版签名 . . . . . . . . . . . . . . . . . . . . . . . . 123 5.3.7 生成内部版本号 . . . . . . . . . . . . . . . . . . . . . . . 124 5.3.8 准备发布 . . . . . . . . . . . . . . . . . . . . . . . . . . 125 5.3.9 制作简报 . . . . . . . . . . . . . . . . . . . . . . . . . . 125 5.4 小结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6 Git 工具 127 6.1 修订版本(Revision)选择 . . . . . . . . . . . . . . . . . . . . . . 127 6.1.1 单个修订版本 . . . . . . . . . . . . . . . . . . . . . . . . 127 6.1.2 简短的SHA . . . . . . . . . . . . . . . . . . . . . . . . . . 127 6.1.3 关于 SHA-1 的简短说明 . . . . . . . . . . . . . . . . . . . . 128 6.1.4 分支引用 . . . . . . . . . . . . . . . . . . . . . . . . . . 129 6.1.5 引用日志里的简称 . . . . . . . . . . . . . . . . . . . . . . 129 6.1.6 祖先引用 . . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.1.7 提交范围 . . . . . . . . . . . . . . . . . . . . . . . . . . 132 双点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 多点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 三点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6.2 交互式暂存 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 6.2.1 暂存和撤回文件 . . . . . . . . . . . . . . . . . . . . . . . 134 6.2.2 暂存补丁 . . . . . . . . . . . . . . . . . . . . . . . . . . 136 6.3 储藏(Stashing) . . . . . . . . . . . . . . . . . . . . . . . . . . 137 6.3.1 储藏你的工作 . . . . . . . . . . . . . . . . . . . . . . . . 138 6.3.2 从储藏中创建分支 . . . . . . . . . . . . . . . . . . . . . . 139 6.4 重写历史 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 6.4.1 改变最近一次提交 . . . . . . . . . . . . . . . . . . . . . . 140 6.4.2 修改多个提交说明 . . . . . . . . . . . . . . . . . . . . . . 141 6.4.3 重排提交 . . . . . . . . . . . . . . . . . . . . . . . . . . 142 6.4.4 压制(Squashing)提交 . . . . . . . . . . . . . . . . . . . . . 143 vi 6.4.5 拆分提交 . . . . . . . . . . . . . . . . . . . . . . . . . . 144 6.4.6 核弹级选项: filter-branch . . . . . . . . . . . . . . . . . . 144 从所有提交中删除一个文件 . . . . . . . . . . . . . . . . . . 144 将一个子目录设置为新的根目录 . . . . . . . . . . . . . . . . 145 全局性地更换电子邮件地址 . . . . . . . . . . . . . . . . . . 145 6.5 使用 Git 调试 . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 6.5.1 文件标注 . . . . . . . . . . . . . . . . . . . . . . . . . . 146 6.5.2 二分查找 . . . . . . . . . . . . . . . . . . . . . . . . . . 147 6.6 子模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 6.6.1 子模块初步 . . . . . . . . . . . . . . . . . . . . . . . . . 149 6.6.2 克隆一个带子模块的项目 . . . . . . . . . . . . . . . . . . . 151 6.6.3 上层项目 . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.6.4 子模块的问题 . . . . . . . . . . . . . . . . . . . . . . . . 153 6.7 子树合并 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 6.8 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 7 自定义 Git 157 7.1 配置 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 7.1.1 客户端基本配置 . . . . . . . . . . . . . . . . . . . . . . . 157 core.editor . . . . . . . . . . . . . . . . . . . . . . . . . 158 commit.template . . . . . . . . . . . . . . . . . . . . . . . 158 core.pager . . . . . . . . . . . . . . . . . . . . . . . . . 159 user.signingkey . . . . . . . . . . . . . . . . . . . . . . . 159 core.excludesfile . . . . . . . . . . . . . . . . . . . . . . 159 help.autocorrect . . . . . . . . . . . . . . . . . . . . . . 159 7.1.2 Git中的着色 . . . . . . . . . . . . . . . . . . . . . . . . . 160 color.ui . . . . . . . . . . . . . . . . . . . . . . . . . . 160 color.* . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 7.1.3 外部的合并与比较工具 . . . . . . . . . . . . . . . . . . . . 160 7.1.4 格式化与空白 . . . . . . . . . . . . . . . . . . . . . . . . 163 core.autocrlf . . . . . . . . . . . . . . . . . . . . . . . . 163 core.whitespace . . . . . . . . . . . . . . . . . . . . . . . 164 7.1.5 服务器端配置 . . . . . . . . . . . . . . . . . . . . . . . . 164 receive.fsckObjects . . . . . . . . . . . . . . . . . . . . . 164 receive.denyNonFastForwards . . . . . . . . . . . . . . . . . 165 receive.denyDeletes . . . . . . . . . . . . . . . . . . . . . 165 7.2 Git属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 7.2.1 二进制文件 . . . . . . . . . . . . . . . . . . . . . . . . . 165 识别二进制文件 . . . . . . . . . . . . . . . . . . . . . . . 165 比较二进制文件 . . . . . . . . . . . . . . . . . . . . . . . 166 7.2.2 关键字扩展 . . . . . . . . . . . . . . . . . . . . . . . . . 168 7.2.3 导出仓库 . . . . . . . . . . . . . . . . . . . . . . . . . . 170 export-ignore . . . . . . . . . . . . . . . . . . . . . . . . 170 export-subst . . . . . . . . . . . . . . . . . . . . . . . . 170 7.2.4 合并策略 . . . . . . . . . . . . . . . . . . . . . . . . . . 171 7.3 Git挂钩 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 vii 7.3.1 安装一个挂钩 . . . . . . . . . . . . . . . . . . . . . . . . 171 7.3.2 客户端挂钩 . . . . . . . . . . . . . . . . . . . . . . . . . 171 提交工作流挂钩 . . . . . . . . . . . . . . . . . . . . . . . 171 E-mail工作流挂钩 . . . . . . . . . . . . . . . . . . . . . . 172 其他客户端挂钩 . . . . . . . . . . . . . . . . . . . . . . . 172 7.3.3 服务器端挂钩 . . . . . . . . . . . . . . . . . . . . . . . . 173 pre-receive 和 post-receive . . . . . . . . . . . . . . . . . 173 update . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 7.4 Git 强制策略实例 . . . . . . . . . . . . . . . . . . . . . . . . . . 173 7.4.1 服务端挂钩 . . . . . . . . . . . . . . . . . . . . . . . . . 173 指定特殊的提交信息格式 . . . . . . . . . . . . . . . . . . . 174 实现基于用户的访问权限控制列表(ACL)系统 . . . . . . . . . . 175 只允许 Fast-Forward 类型的推送 . . . . . . . . . . . . . . . 177 7.4.2 Client-Side Hooks . . . . . . . . . . . . . . . . . . . . . . 179 7.5 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 8 Git 与其他系统 183 8.1 Git 与 Subversion . . . . . . . . . . . . . . . . . . . . . . . . . 183 8.1.1 git svn . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 8.1.2 初始设定 . . . . . . . . . . . . . . . . . . . . . . . . . . 184 8.1.3 入门 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 8.1.4 提交到 Subversion . . . . . . . . . . . . . . . . . . . . . . 186 8.1.5 拉取最新进展 . . . . . . . . . . . . . . . . . . . . . . . . 187 8.1.6 Git 分支问题 . . . . . . . . . . . . . . . . . . . . . . . . 188 8.1.7 Subversion 分支 . . . . . . . . . . . . . . . . . . . . . . . 189 创建新的 SVN 分支 . . . . . . . . . . . . . . . . . . . . . . 189 8.1.8 切换当前分支 . . . . . . . . . . . . . . . . . . . . . . . . 190 8.1.9 对应 Subversion 的命令 . . . . . . . . . . . . . . . . . . . 190 SVN 风格的历史 . . . . . . . . . . . . . . . . . . . . . . . 190 SVN 日志 . . . . . . . . . . . . . . . . . . . . . . . . . . 191 SVN 服务器信息 . . . . . . . . . . . . . . . . . . . . . . . 191 略 Subversion 之所略 . . . . . . . . . . . . . . . . . . . . 192 8.1.10Git-Svn 总结 . . . . . . . . . . . . . . . . . . . . . . . . 192 8.2 迁移到 Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 8.2.1 导入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 8.2.2 Subversion . . . . . . . . . . . . . . . . . . . . . . . . . 193 8.2.3 Perforce . . . . . . . . . . . . . . . . . . . . . . . . . . 194 8.2.4 自定导入脚本 . . . . . . . . . . . . . . . . . . . . . . . . 196 8.3 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 9 Git 内部原理 203 9.1 底层命令 (Plumbing) 和高层命令 (Porcelain) . . . . . . . . . . . . . 203 9.2 Git 对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 9.2.1 tree (树) 对象 . . . . . . . . . . . . . . . . . . . . . . . 206 9.2.2 commit (提交) 对象 . . . . . . . . . . . . . . . . . . . . . 208 9.2.3 对象存储 . . . . . . . . . . . . . . . . . . . . . . . . . . 210 viii 9.3 Git References . . . . . . . . . . . . . . . . . . . . . . . . . . . 212 9.3.1 HEAD 标记 . . . . . . . . . . . . . . . . . . . . . . . . . . 213 9.3.2 Tags . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 9.3.3 Remotes . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 9.4 Packfiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 9.5 The Refspec . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 9.5.1 推送 Refspec . . . . . . . . . . . . . . . . . . . . . . . . 220 9.5.2 删除引用 . . . . . . . . . . . . . . . . . . . . . . . . . . 221 9.6 传输协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 9.6.1 哑协议 . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 9.6.2 智能协议 . . . . . . . . . . . . . . . . . . . . . . . . . . 223 上传数据 . . . . . . . . . . . . . . . . . . . . . . . . . . 223 下载数据 . . . . . . . . . . . . . . . . . . . . . . . . . . 224 9.7 维护及数据恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 9.7.1 维护 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 9.7.2 数据恢复 . . . . . . . . . . . . . . . . . . . . . . . . . . 226 9.7.3 移除对象 . . . . . . . . . . . . . . . . . . . . . . . . . . 228 9.8 总结 . . . . .
官方发行说明: 过滤器规范“--filter = sparse:path = <path>”用于 创建一个惰性/部分克隆已被删除。使用blob 仍支持稀疏规范的项目的一部分 “--filter = sparse:oid = <blob>”选项。 用户界面,工作流程和功能 *“git checkout --no-overlay”可用于触发新模式 检查出树的路径,允许路径 匹配当前索引和工作树中的pathspec 并且不在树上。 *“git log --format = ...”中的%(预告片)格式化现在允许 可选择按关键字选择预告片,仅显示值, 等等 *四个新的配置变量{author,committer}。{name,email} 已经介绍过更具体地覆盖用户。{name,email} 案例。 *命令行完成(在contrib /中)学会了tab-complete “git submodule absorbgitdirs”子命令。 *“git branch”学习了一个新的子命令“--show-current”。 *“diff --cc”的输出没有显示原始路径 合并涉及重命名。一个新选项添加​​了路径 原始树木输出。 *已经教过命令行完成(在contrib /中) 完成更多子命令参数。 *来自“git bisect”的最终报告用于显示疑似 使用原始“diff-tree”的罪魁祸首,没有输出 合并提交。这已更新为使用更现代和 人类可读的输出仍然很简洁。 *“git rebase --rebase-merges”取代旧的“--preserve-merges” 选项; 后者现在标记为已弃用。 *使用--recurse-submodules进行克隆时给出的错误消息 已更新。 *完成帮助程序代码现在关注存储库本地 配置(如果可用),允许--list-cmds兑现 例如,completion.commands的特定于存储库的设置。 *“git mergetool”学会了提供Sublime Merge(smerge)作为其中之一 它的后端。 *当磁盘索引时调用新的钩子“post-index-change” 文件更改,可以帮助例如虚拟化工作树 实现。 *“git difftool”现在可以在存储库外运行。 *“git checkout -m <other>”是关于携带差异的 检查时HEAD和工作树文件之间的转发 另一个分支,忽略了HEAD与之间的差异 指数。该命令已经被教导在索引和中止时中止 HEAD是不同的。 *“index-pack”步骤中添加了一个进度指示器 经常让用户在“git clone”期间等待完成。 *“git submodule”学习允许的“set-branch”子命令 子模块。*。要修改的分支设置。 *“git merge-recursive”后端最近学到了一种新的启发式方法 根据同一目录中其他文件的方式推断文件移动 移动。因为这本身就不那么强大的启发式算法 基于文件本身的内容相似性(而不是 根据其邻居正在做的事情,它有时会给出一个 最终用户意外的结果。这已经降低了 将重命名的路径保留在索引中较高/冲突的阶段中 用户可以检查并确认结果。 *“git tag”学会了建议它可能是一个建议 创建指向的带注释或签名的标记时出错 另一个标签。 *学习“git pack-objects”命令报告数量 它通过trace2机制打包的对象。 *结束时编辑器中显示的冲突路径列表 当剪刀线在剪刀线上方显示出冲突合并 清理模式设置为“剪刀”,即使它被评论 就像更新的路径列表和其他信息一样 帮助用户更好地解释合并。 * trace2跟踪工具学会了自动生成文件名 当被告知登录目录时。 *“git clone”在交谈时学会了一个新的--server-option选项 协议版本2。 *默认情况下,裸连接位图是创建的 现在存储库; 还创建了路径名哈希缓存 默认为避免在重新包装时产生蹩脚的增量。 *“git branch new A ... B”和“git checkout -b new A ... B” 教导说,在他们的语境中,符号A ... B表示“合并 这两个提交之间的基础“,就像”git checkout A ... B“ 在该提交中分离HEAD。 *更新“git difftool”和“git mergetool”以便组合 {diff,merge}。{tool,guitool}配置变量用作 以合理的顺序相互后备设置。 *“git difftool”的“--dir-diff”模式在“--no-index”中没用 模式; 它们现在被明确标记为互不兼容。
回答: 当你在进行版本控制时,如果出现"FETCH_HEAD = \[up to date\] master -> origin/master refusing to merge unrelated histories"的错误提示,这意味着你正在尝试合并两个不相关的历史记录。这通常发生在两个不同的仓库或分支之间进行合并时。为了解决这个问题,你可以尝试使用`--allow-unrelated-histories`选项来允许合并不相关的历史记录。例如,你可以运行以下命令来拉取远程仓库的最新更改并建立关联: ``` git pull --allow-unrelated-histories origin master ``` 这将允许你合并不相关的历史记录并建立关联。请注意,在合并不相关的历史记录时,你可能需要手动解决冲突。 #### 引用[.reference_title] - *1* [git出现:[up to date] master - origin/masterrefusing to merge unrelated histories](https://blog.csdn.net/llupengt/article/details/124273668)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [IDEA git origin/master refusing to merge unrelated histories](https://blog.csdn.net/AmdyTeng/article/details/121348621)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Git报错 FETCH_HEAD fatal: refusing to merge unrelated histories](https://blog.csdn.net/mysnsds/article/details/126612342)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值