我打算将它们保存下来,但是我发现根本就不靠谱,我记得很清楚,那个时候我还没有电脑,编程一直是在我二姑家里用电脑学习的,为什么说它不靠谱呢,电脑不是我一个人用,所以我无法掌控,随便一个重装系统,我的产物就灰飞烟灭了...然后就是我们文章的主角Github,我第一次真正注册并使用是在今年的1月15日,在这之前,我只是有了解过Github,大概知道是用来保存代码的,但当时我并不能感觉到它的强大,虽然所以人都说它强大。...,我之前就是因为使用其他浏览器被坑惨了!...git log 查看历史版本 git log -x 查看最新的x个版本信息 git log -x filename 查看某个文件filename最新的x个版本信息(需要进入该文件所在目录)...刚好想到,上面使用过的git log 命令,它可以用来查看当前分支的提交,但是有一个弊端,它只能查看与当前分支有关的提交,如果你现在处于G1,那么你只能查看到在G1分支下的提交,如何查看全部分支下的提交呢
尽管 Git 是一个非常强大的工具,但是我相信大部分同学有时候学起 Git 来,感觉很难搞~ 笔者总是习惯于在脑海中重现学习的知识,Git 也一样:当我们执行了切换分支命令,分支之间是如何交互的?...又是如何影响历史提交的?当我在 master 分支上执行了强制 reset 又 force push 到了远端 ,又把 .git 文件夹删掉,我的同事为什么会哭??...Git 是。。懒惰的,它会首先尝试使用这个最简单的 fast-forward 选项。这种方式不会创建新的 commit,可以说它只是把我们的提交和 HEAD 指针挪了一个位置。 ? 完美!...尽管造成冲突非常烦人,但也符合逻辑,机器毕竟是机器,它肯定不能替我们决定需要保留哪块内容吧~ 变基(Rebasing) 刚刚我们见识了 git merge 的合并过程。...我们的 dev 分支可以使用 rebase 来一直追踪最新的 master 分支。这样就不会产生冲突,同时也会有一个线性的 Git 历史记录。
当时我写的代码放txt里面,是这样的: [在这里插入图片描述] 我打算将它们保存下来,但是我发现根本就不靠谱,我记得很清楚,那个时候我还没有电脑,编程一直是在我二姑家里用电脑学习的,为什么说它不靠谱呢...然后就是我们文章的主角Github,我第一次真正注册并使用是在今年的1月15日,在这之前,我只是有了解过Github,大概知道是用来保存代码的,但当时我并不能感觉到它的强大,虽然所以人都说它强大。...,我之前就是因为使用其他浏览器被坑惨了!...git log 查看历史版本 git log -x 查看最新的x个版本信息 git log -x filename 查看某个文件filename最新的x个版本信息(需要进入该文件所在目录) git...image.png 刚好想到,上面使用过的git log 命令,它可以用来查看当前分支的提交,但是有一个弊端,它只能查看与当前分支有关的提交,如果你现在处于G1,那么你只能查看到在G1分支下的提交,如何查看全部分支下的提交呢
分支的模式 git-flow 模式会预设两个主分支在仓库中: master 只能用来包括产品代码。...这就是为什么 git-flow 定义了很多对于功能开发的工作流程,从而来帮助你有组织地完成它。...最重要的是,这个 “feature finish” 命令会把我们的工作整合到主 “develop” 分支中去。在这里它需要等待: 一个在更广泛的 “开发” 背景下的全面测试。...创建 release 当你认为现在在 “develop” 分支的代码已经是一个成熟的 release 版本时,这意味着:第一,它包括所有新的功能和必要的修复;第二,它已经被彻底的测试过了。...在这种情况下,git-flow 提供一个特定的 “hotfix” 工作流程(因为在这里不管使用 “功能” 分支流程,还是 “release” 分支流程都是不恰当的)。
比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。比如如下: ? ...首先我们要确定在那个分支上修复bug,比如我现在是在主分支master上来修复的,现在我要在master分支上创建一个临时分支,演示如下: ? ...master分支是主分支,因此要时刻与远程同步。 一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。...推送失败了,因为你的小伙伴的最新提交和你试图推送的提交有冲突,解决办法也很简单,Git已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后,在本地合并,解决冲突,再推送: ?...git pull也失败了,原因是没有指定本地dev分支与远程origin/dev分支的链接,根据提示,设置dev和origin/dev的链接: ?
应该从一个非常老的分支做一个 rebase 吗? 除非是迫不得已。 根据你的工作流,可以将旧的分支合并到主分支中。 如果你需要一个最新的分支,我更喜欢 rebase。...21.在与 master 合并之前,有必要更新我的分支吗 根据你的工作流,可以将旧的分支合并到主分支中。如果你的工作流仅使用 "fast-forward"合并,那么有必要在合并之前更新你的分支。...需要使用 GitKraken 这种可视化工具吗 我比较喜欢用命令方式使用 git,因为这使我能够完全控制管理变更,就像使用命令来改进我的开发过程一样。...比方说,我不想执行最后一次提交,而是进行一次 rebase。 假设 master 分支是咱们的主分支,咱们不希望有选择地从它的历史记录中提取提交,这会以后引起冲突。...git reflog 可能是众所周知的,但值得一提,因为它提供了一种在出错时“撤消”命令的好方法。 41. 你能推荐一些关于Git的书籍吗 我建议至少阅读Pro Git的前三章。
应该从一个非常老的分支做一个 rebase 吗? 除非是迫不得已。 根据你的工作流,可以将旧的分支合并到主分支中。 如果你需要一个最新的分支,我更喜欢 rebase。...21.在与 master 合并之前,有必要更新我的分支吗 根据你的工作流,可以将旧的分支合并到主分支中。如果你的工作流仅使用 "fast-forward"合并,那么有必要在合并之前更新你的分支。...需要使用 GitKraken 这种可视化工具吗 我比较喜欢用命令方式使用 git,因为这使我能够完全控制管理变更,就像使用命令来改进我的开发过程一样。...比方说,我不想执行最后一次提交,而是进行一次 rebase。 假设 master 分支是咱们的主分支,咱们不希望有选择地从它的历史记录中提取提交,这会以后引起冲突。...git reflog 可能是众所周知的,但值得一提,因为它提供了一种在出错时“撤消”命令的好方法。
我使用的方案中,Git Submodules 承担着非常重要的角色。今天先给大家介绍下 Git Submodules,以后我会给大家更详细的介绍如何管理不同项目的公共依赖。为什么你值得读这篇文章?...方法二,主项目执行git submodule update --remote [submodule文件夹相对路径]这个方法会自动拉取submodule的主分支(通常叫master或main)的最新版本。...可能并不是拉 submodule 的 master 最新代码。所以,这种方法仅适用于,当主仓库里记录的 submodule 的 commit id 已经是最新的(可能被其他同事提交过)。...(另一仓库地址) [(可选,submodule下载的路径)]更多资料通过官方文档,你可以了解到更多场景,但是我从来没使用过其它场景了,因为用不到。本文描述的完全满足了我所有日常使用场景。...,追踪任意指定的子模块分支(而非默认的主分支master)。
记录一下日常的 git 使用与我平时用的 git 小窍门. 关于 rebase 为什么不能在 master 上做 rebase 操作?...使用 rebase 的一条黄金法则就是不要在公共分支上做 rebase 操作, 为什么呢?...这样 git 历史其实已经混乱了, 而且后续 别人基于这样的历史进行开发并不能担保不会出现问题, 因为本身历史就是乱套的.所以这就是为什么不要在公共分支上做 rebase 操作....并不是, 我觉得公共分支是指共同的主分支, 会有很多协作分支的主分支才是公共分支, 假如你有一个 feature 分支并在上面开发,你还有其他同事一起在这个分支上开发, 这个时候 feature 并不能算公共分支...上面的命令就是为了对文件的修改区域进行交互式选择提交的: y: 缓存该块 n: 不缓存该块 q: 退出 a: 缓存当前块与其之后所有块 d: 不缓存当前块与其之后所有块 /: 搜索与某个正则匹配的块 s
可大多数工程师还是只会最基本的保存、拉取、推送,遇到一些commit管理的问题就束手无策,或者用一些不优雅的方式解决。 本文分享我在开发工作中实践过的实用命令。...stash 命令能够将还未 commit 的代码存起来,让你的工作目录变得干净。 应用场景 我猜你心里一定在想:为什么要变干净?...使用刚刚同样的 revert 方法,会发现命令行报错了。 为什么会这样?在官方文档中有解释。 通常无法 revert 合并,因为您不知道合并的哪一侧应被视为主线。...此选项指定主线的父编号(从1开始),并允许 revert 反转相对于指定父编号的更改 我的理解是因为合并提交是两条分支的交集节点,而 git 不知道需要撤销的哪一条分支,需要添加参数 -m 指定主线分支...应用场景 应用场景:某天你眼花,发现自己在其他人分支提交了代码还推到远程分支,这时因为分支只有你的最新提交,就想着使用reset --hard,结果紧张不小心记错了 commitHash,reset 过头
stash 命令能够将还未 commit 的代码存起来,让你的工作目录变得干净。 应用场景 我猜你心里一定在想:为什么要变干净?...使用刚刚同样的 revert 方法,会发现命令行报错了。 为什么会这样?在官方文档中有解释。 通常无法 revert 合并,因为您不知道合并的哪一侧应被视为主线。...此选项指定主线的父编号(从1开始),并允许 revert 反转相对于指定父编号的更改 我的理解是因为合并提交是两条分支的交集节点,而 git 不知道需要撤销的哪一条分支,需要添加参数 -m 指定主线分支...-m 后面要跟一个 parent number 标识出"主线",一般使用 1 保留主分支代码。...应用场景 应用场景:某天你眼花,发现自己在其他人分支提交了代码还推到远程分支,这时因为分支只有你的最新提交,就想着使用reset --hard,结果紧张不小心记错了 commitHash,reset 过头
通过上面的显示我们可以知道,增加内容3333的版本号是 6fcfc89.我们现在可以命令 git reset --hard 6fcfc89来恢复了。演示如下: ? 可以看到 目前已经是最新的版本了。...六、创建与合并分支 在 版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。...比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。比如如下: ?...master分支是主分支,因此要时刻与远程同步。 一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。...由上面可知:推送失败,因为我的小伙伴最新提交的和我试图推送的有冲突,解决的办法也很简单,上面已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送。
我看到很多人(也包括我)都在运行诸如 git pull,git push 以及运行其他一些我不理解的命令。为什么我既要 commit 还要 push?为什么每个新特性都需要新建一个分支?...我想将设计保存在存储库中的安全位置—git push 存储库是存储所有分支的地方,包括主分支,它就像一个文件夹,里面有关于项目的所有文件,包括它们的修订历史。...张三的厨房做完了,我们的设计不匹配—合并冲突(Merge conflicts) 我试图将张三的新变更合并到我的分支中,但是如果我没有把张三的开放式厨房一侧的墙砌好,会发生什么呢?...我们的设计存在冲突,Git 可以自动解决一些冲突,但不能解决所有冲突,Git 有时需要你的帮助来确定应该保留哪些更改,因为其中一些更改是相互冲突的。...换句话说,它需要知道保留谁的“设计”(或代码)是正确的选择。 假设我是犯错的人,我可以告诉 Git 在设计厨房墙壁时保留Bob的部分,而不是我的。 我们什么时候可以把厨房和客厅加到主分支?
通过上面的显示我们可以知道,增加内容3333的版本号是 6fcfc89.我们现在可以命令 git reset --hard 6fcfc89来恢复了。演示如下: ? 可以看到 目前已经是最新的版本了。...六、创建与合并分支 在 版本回填退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。...比如我在开发中接到一个404 bug时候,我们可以创建一个404分支来修复它,但是,当前的dev分支上的工作还没有提交。比如如下: ?...master分支是主分支,因此要时刻与远程同步。 一些修复bug分支不需要推送到远程去,可以先合并到主分支上,然后把主分支master推送到远程去。 2....由上面可知:推送失败,因为我的小伙伴最新提交的和我试图推送的有冲突,解决的办法也很简单,上面已经提示我们,先用git pull把最新的提交从origin/dev抓下来,然后在本地合并,解决冲突,再推送。
领取专属 10元无门槛券
手把手带您无忧上云