git
walter lv
这个作者很懒,什么都没留下…
展开
-
Unity3D 入门:Unity 项目版本管理建议使用的 .gitignore 忽略文件和 .gitattributes 文件(2020年4月更新)
Unity3D 项目虽然说使用 C# 脚本开发,但毕竟不是 .NET/C# 项目。今天一位小伙伴告诉我说用错了 .gitignore 文件,结果管理仓库时丢了很多重要的文件。实际上,GitHub 官方提供了大量不同项目类型的 .gitignore 文件,并且有广大的社区支持时时更新,直接前往 GitHub 官网下载是最好的选择了。适用于 Unity 项目的 .gitignore 模板:gitignore/Unity.gitignore at master · github/gitignore#原创 2020-06-30 08:59:52 · 4272 阅读 · 0 评论 -
git 乱改你的换行符?一句话设置让 git 不再碰你某个文件的换行符
前些天有位小伙伴告诉我说 git 改了某个重要文件的换行符,导致文件的哈希变了,于是文件校验出现错误。之前一直没问题而最近才有问题是因为最近换了部署服务器,git 的换行符配置不一样。其实,我们不应该让代码仓库如此容易受到外界环境的影响。所以本文会解释 git 的全局配置如何影响了 git 对换行符的处理,然后说说如何彻底解决这个问题。本文内容关于换行符问题解决原因关于换行符\r = CR = Carriage-Return = 回车\n = LF = Line-Feed = 换行\r\n原创 2020-06-30 08:55:45 · 7215 阅读 · 0 评论 -
git 如何更可靠地解决冲突?
使用 git 合并代码时出现冲突是很常见的,不过如何解冲突才能更加可靠呢?不漏掉别人的修改,也同时让自己的修改完全保留。本文将介绍利用各种工具更可靠地解决冲突。本文内容使用 Visual Studio使用 Visual Studio如果你使用 Visual Studio,那么当合并两个分支出现冲突的时候,Visual Studio 的 Team Explorer 会显示当前冲突的所有文件...原创 2020-03-31 07:54:14 · 299 阅读 · 0 评论 -
git subtree 不断增加的推送时间,解不玩的冲突!这篇文章应该能救你
原生 git 对于公共组件那种类型的子仓库的支持并不怎么好,就是那种某个子文件夹是一个另外的 git 仓库,并被多个 git 父仓库使用的形式。实际使用的感受甚至是“糟糕透了”。这种并不友好的子仓库支持可能与 git 的设计理念有关,不过,git 的开发者始终在打补丁以稍微优化这样的体验。本文内容不断增加的推送时间永远也解不完的冲突原因解决不断增加的推送时间如果你曾经在大仓库试过 git...原创 2020-01-28 17:39:22 · 1177 阅读 · 1 评论 -
清理 git 仓库太繁琐?试试 bfg!删除敏感信息删除大文件一句命令搞定(比官方文档还详细的使用说明)
你可能接触过 git-filter-branch 来清理 git 仓库,不过同时也能体会到这个命令使用的繁琐,以及其超长的执行时间。现在,你可以考虑使用 bfg 来解决问题了!本文内容安装 bfg传统方式安装(不推荐)使用包管理器 scoop 安装准备工作常见用法删除误上传的大文件删除特定的一个或多个文件删除文件夹删除敏感的密码信息推回远端仓库附命令行用法输出安装 bfg传统方式安装(不...原创 2019-12-30 08:28:35 · 2477 阅读 · 1 评论 -
git fetch 失败,因为 unable to resolve reference 'refs/remotes/origin/xxx': reference broken
我在使用 git fetch 命令的时候,发现竟然会失败,提示错误 error: cannot lock ref 'refs/remotes/origin/xxx': unable to resolve reference 'refs/remotes/origin/xxx': reference broken。本文介绍如何修复这样的错误,并探索此错误产生的原因。本文内容错误修复错误在使用...原创 2019-10-28 09:35:39 · 5742 阅读 · 1 评论 -
从 git 的历史记录中彻底删除文件或文件夹
如果你对外开源的代码中出现了敏感信息(例如你将私钥上传到了仓库中),你可能需要考虑将这个文件从 git 的历史记录中完全删除掉。本文介绍如何从 git 的历史记录中彻底删除文件或文件夹。第一步:修改本地历史记录彻底删除文件:git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch walterlv...原创 2019-08-30 14:52:19 · 9475 阅读 · 3 评论 -
git 配置错误导致无法推送远端仓库?本文介绍各种修复方式
无论你使用原生的 git 命令行,还是使用其他的 GUI 客户端来管理你的 git 仓库,都会遇到 git 远程仓库的身份认证机制。如果在某个远程仓库第一次认证的时候输入了错误的信息,那么 git 以及一部分 git GUI 客户端会记住这个错误的身份认证信息,使得以后也不能继续与远程仓库进行交互了。本文介绍如何清除 git 的身份认证信息,以便你可以重新获得输入正确身份认证的机会。本文内容...原创 2019-07-27 20:46:07 · 1627 阅读 · 0 评论 -
在整个 Git 仓库的历史(包括所有分支和标签)中修改提交作者的信息(姓名和邮箱)
一般情况下不建议修改 git 仓库的历史。但是现在我计划开源我的一个项目,于是自己个人使用的姓名和邮箱就需要在开源的时候改为使用我公开的姓名和邮箱。对于旧仓库,我将废弃,将来所有的精力都将在开源版本的仓库中;而对于开源版本的新仓库,由于此前没有人克隆过,所以也不会因为历史的修改产生问题。所以,我可以很放心地更改全部的 git 仓库历史。我打算将整个 Git 仓库历史中的名称和邮箱。第一步:...原创 2019-07-27 20:33:33 · 467 阅读 · 0 评论 -
C#/.NET 使用 git 命令行来操作 git 仓库
我们可以在命令行中操作 git,但是作为一名程序员,如果在大量重复的时候还手动敲命令行,那就太笨了。本文介绍使用 C# 编写一个 .NET 程序来自动化地使用 git 命令行来操作 git 仓库。这是一篇很基础的入门文章。本文内容最简单的运行 git 命令的代码允许获得命令的输出CommandRunner测试与结果最简单的运行 git 命令的代码在 .NET 中,运行一个命令只需要使用...原创 2019-05-19 16:57:40 · 5567 阅读 · 2 评论 -
git subtree 的使用
本文收集 git subtree 的使用。本文内容将 B 仓库添加为 A 仓库的一个子目录将 A 仓库中的 B 子目录推送回 B 仓库将 B 仓库中的新内容拉回 A 仓库的子目录将 B 仓库添加为 A 仓库的一个子目录在 A 仓库的根目录输入命令:$ git subtree add --prefix=SubFolder/B https://github.com/walterlv/walt...原创 2019-04-28 09:06:35 · 913 阅读 · 0 评论 -
再也不用克隆多个仓库啦!git worktree 一个 git 仓库可以连接多个工作目录
我在 feature 分支开发得多些,但总时不时被高优先级的 BUG 打断需要临时去 develop 分一个分支出来解 BUG。git 2.6 以上开始提供了 worktree 功能,可以解决这样的问题。阅读本文将了解使用 git worktree 高效进行并行开发的方法。git worktree 从一个仓库中可以创建多个工作目录,方便多开编辑器并行开发。快速上手git原创 2018-01-30 08:44:27 · 10371 阅读 · 0 评论 -
Git 更安全的强制推送,--force-with-lease
由于 git rebase 命令的存在,强制将提交推送到远端仓库似乎也有些必要。不过都知道 git push --force 是不安全的,这让 git rebase 命令显得有些鸡肋。本文将推荐 --force-with-lease 参数,让我们可以更安全地进行强制推送。--force-with-lease 参数自 Git 的 1.8.5 版本开始提供,只在解决 git push --...原创 2018-05-19 07:53:56 · 46815 阅读 · 5 评论 -
在 GitHub 公开仓库中隐藏自己的私人邮箱地址
GitHub 重点在开方源代码,其本身还是非常注重隐私的。这一点与面向企业的 GitLab 很不一样。不过,你依然可能在 GitHub 上泄露隐私信息,例如企业内部所用的电子邮箱。GitHub 对个人隐私的尊重git 的设定,开发者需要设置自己的邮箱: ▲ git 的邮箱设置(即便是公开的邮箱,我也不在博客里贴出来)而在 GitLab 上,我们可以很直接地在提交上面看...原创 2018-08-27 21:55:15 · 11303 阅读 · 0 评论 -
出于迁移项目的考虑,GitHub 中 Fork 出来的项目,如何与原项目断开 Fork 关系?
如果需要为 GitHub 上的项目做贡献,我们通常会 Fork 到自己的名称空间下。在推送代码之后添加 pull request 时,GitHub 会自动为我们跨仓库建立 pull request 的连接,非常方便。但是,如果 Fork 是出于项目的迁移,例如从个人名下迁移到某个组织下或者反过来,那么这种自动的 pull request 的设置就很影响效率了。那么这种情况如何处理呢?如何断开 F...原创 2019-01-27 13:29:46 · 1946 阅读 · 0 评论 -
git 的合并原理(递归三路合并算法)
如果 git 只是一行行比较,然后把不同的行报成冲突,那么你在合并的时候可能会遇到大量的冲突;这显然不是一个好的版本管理工具。本文介绍 git 合并分支的原理。本文内容git 的冲突表示三路合并递归三路合并快进式合并参考资料git 的冲突表示例如我们有这样的三个提交 a、b、c。a、b 是在 master 上的其他修改,c 是我自己基于 master 上的 a 的修改。现在,将 mas...原创 2019-02-24 15:55:36 · 7046 阅读 · 0 评论 -
git 合并策略
不清楚 git 冲突的表示方法,不了解 git 的合并原理,不知道 git 解冲突的多种策略。即便如此,大多数人依然可以正常使用 git 完成合并、拉取操作,并且解一些冲突。这得益于 git 默认情况下的合并方式可以处理大多数情况下的正常合并。然而,你是否遭遇 git 自动合并炸掉的情况?命名提示没有冲突,代码却早已无法编译通过。本文将介绍 git 的合并策略,你可能可以更好的使用不同的策略来...原创 2019-02-24 15:56:13 · 8770 阅读 · 0 评论 -
使用一句 git 命令将仓库的改动推送到所有的远端
git 支持一个本地仓库包含多个远端(remote),这对于开源社区来说是一个很重要的功能,可以实时获取到最新的开源代码且能推送到自己的仓库中提交 pull request。有时候多个远端都是自己的,典型的就是 GitHub Pages 服务了,推送总是希望这几个远端能够始终和本地仓库保持一致。本文将介绍一个命令推送到所有远端的方法。我的博客同时发布在 GitHub 仓库 https://g...原创 2019-03-04 08:11:18 · 597 阅读 · 0 评论 -
将 svn 仓库迁移到 git 仓库
我找到了一个很久很久以前编写的项目,然而当时是使用 svn 进行版本管理的。然而现在的版本管理全部是 git,不愿意再装一个 svn 工具来管理这些古老的项目,于是打算将其迁移到 git 中。本文介绍如何将古老的 svn 项目迁移到 git。本文内容找回 svn 仓库的 url将 svn 仓库迁移到 git 仓库命令行TortoiseGit参考资料找回 svn 仓库的 url如果你能记得...原创 2019-03-04 08:13:01 · 3307 阅读 · 0 评论 -
如何向整个 Git 仓库补提交一个文件
微软在 Reference Source 里开放了 .Net Framework 多个版本的源码。为了更方便地阅读这些源码,我们把每一个版本都下载下来后按顺序提交到 git 仓库中。但是!!!居然忘了在第一次提交之前放一个 .gitignore 文件!如果没有这个文件,那我们每次打开源码查看都会带来一大堆不明所以的修改文件。那么多的源码,绝对不会想重新挨个版本再提交一次。于是找到了一条可以解决这个问原创 2017-09-14 23:56:46 · 1621 阅读 · 0 评论