大家好,我是小 G。 在座的各位应该都知道,Git 作为居家必备、团队协作之利器,自从 Linus Torvalds 发布这款工具后,便一直受到各路开发者的喜爱。...合并(Merge) 我们都知道,在使用 Git 做日常开发项目的时候,都会选择将项目切换成多个分支,在不同分支上处理不同事务。...最简单的,就是开发、测试、生产等几个不同环境来回切换,使得项目管理与产品迭代更为轻松,亦可最大化避免项目出现严重漏洞时所带来的伤害。 当我们在不同分支开发完代码后,会选择将分支进行合并(merge)。...fast-forward 一般情况下,Git 会默认使用 fast-forward 这种类型来处理分支合并,当我们成功合并后,不会产生任何提交记录,且当旧分支被移除后,其分支信息也会被一并删除。...合并冲突 在我们日常进行团队协作开发的时候,总会出现同个文件在不同分支上被同时编辑的情况。 这样,当我们提交代码的时候,比较晚提交的另一方,在运行 Git 命令时就会报冲突错误。
……你知道这些 git 命令执行的究竟是什么任务吗?...我发现在使用 Git 时,在头脑里可视化地想象它会非常有用:当我执行一个特定命令时,这些分支会如何交互,又会怎样影响历史记录?...为什么当我在 master 上执行硬重启,force push 到原分支以及 rimraf 我们的 .git 文件夹时,我的同事哭了?...当我们想要合并的两个分支的同一文件中的同一行代码上有不同的修改,或者一个分支删除了一个文件而另一个分支修改了这个文件时,Git 就不知道如何取舍了。 在这样的情况下,Git 会询问你想要保留哪种选择?...当尝试合并这些分支时,Git 会向你展示冲突出现的位置。我们可以手动移除我们不想保留的修改,保存这些修改,再次添加这个已修改的文件,然后提交这些修改。 ? 完成!
revert、git fetch、git pull、git reflog……你知道这些 git 命令执行的究竟是什么任务吗?...我发现在使用 Git 时,在头脑里可视化地想象它会非常有用:当我执行一个特定命令时,这些分支会如何交互,又会怎样影响历史记录?...为什么当我在 master 上执行硬重启,force push 到原分支以及 rimraf 我们的 .git 文件夹时,我的同事哭了?...当我们想要合并的两个分支的同一文件中的同一行代码上有不同的修改,或者一个分支删除了一个文件而另一个分支修改了这个文件时,Git 就不知道如何取舍了。 在这样的情况下,Git 会询问你想要保留哪种选择?...当尝试合并这些分支时,Git 会向你展示冲突出现的位置。我们可以手动移除我们不想保留的修改,保存这些修改,再次添加这个已修改的文件,然后提交这些修改。
Git 的基本使用02-TortoiseGit 操作本地仓库(分支) 7.1 分支的概念 7.2 为何要使用分支 7.3 创建分支 7.4 分支的查看切换 7.4.1查看分支 7.4.2切换分支 7.5.1...显然比较棘手,如果使用分支(可以理解为将代码复制一份)将很好解决 7.3 创建分支 到现在为止,我们一直使用的时主分支(master) 在主分支上操作创建分支 7.4 分支的查看切换 7.4.1查看分支...显然不能 所以在处理冲突时,第一步应该时找开发另一个需求的人员沟通,之后才是处理冲突 ----- --> 选中冲突的文件(带黄色感叹号的文件都是冲突的文件,如果有多个需要逐一处理) --> 右键-->...我们注意项目的上方有一个 " Pull Request" 这个按钮的意思是 "请求求别人合并你修改的代码" 当我们发起一个 Pull Request 时 , 项目的拥有者将收到 Pull Request...git remote show 11.2 添加/移除远测仓库 # 添加远程仓库 git remote add # 移除远程仓库和本地仓库的关系(只是从本地移除远程仓库的关联关系
本质上来讲,这就是忽略testing分支所做的修改,以便于向另一个方向进行开发。 需要注意的是,分支切换会改变你工作目录中的文件, 在切换分支时,一定要注意你工作目录里的文件会被改变。...即便有被跟踪但是没有提交的文件会被自动覆盖掉,如果是切换到一个较旧的分支,你的工作目录会恢复到该分支最后一次提交时的样子。 「如果Git不能干净利落地完成这个任务,它将禁止切换分支。」...创建一个新分支就相当于往一个文件中写入41个字节(40个字符和1个换行符),如此的简单能不快吗?...然而,你应该先删除hotfix分支,因为你已经不再需要它了,它master分支已经指向了同一个位置。...stash可以在一个分支上保存一个贮藏,切换到另一个分支,然后尝试重新应用这些修改。当应用贮藏时工作目录中也可以有修改与未提交的文件——如果有任何东西不能干净地应用,Git会产生合并冲突。
这是一篇计划之外的文章,之所以有这篇文章,是因为有一个小伙伴在阅读Git分支管理一文时遇到了一个问题,而这个问题又比较典型,因此我想专门来谈谈Git中工作区的储藏问题。...方案二(储藏) 第二种解决方案就是储藏(Stashing),储藏适用在如下场景中: 当我在一个分支fa中修改了文件,但是还没有完全改好,此时我并不想add/commit,但是这个时候有一个更急迫的事情在另外一个分支...fb上需要我去做,我必须要切换分支。...master中的修改并没有干扰到fa分支,当我们完成了fa分支中的工作之后,再回到master分支,此时执行如下命令可以恢复刚刚储藏的数据: $ git stash apply 上面这个命令执行完之后,...1.恢复储藏并出栈 $ git stash pop 执行效果和git stash apply一样,不同的是,这里执行完之后,会将栈顶的储藏移除。
你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支。 ---- Git 分支管理 列出分支 列出分支基本命令: ? 没有参数时,git branch 会列出你在本地的分支。 ?...当你以此方式在上次提交更新之后创建了新分支,如果后来又有更新提交, 然后又切换到了"testing"分支,Git 将还原你的工作目录到你创建分支时候的样子 接下来我们将演示如何切换分支,我们用 git...当我们切换到"testing"分支的时候,我们添加的新文件test.txt被移除了, 原来被删除的文件hello.php文件又出现了。切换回"master"分支的时候,它们有重新出现了。 ?...如你所见,我们创建了一个分支,在该分支的上下文中移除了一些文件,然后切换回我们的主分支,那些文件又回来了。 使用分支将工作切分开来,从而让我们能够在不同上下文中做事,并来回切换。...以上实例中我们将 newtest 分支合并到主分支去,test2.txt 文件被删除。 合并冲突 合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。 ?
当我们有两个以上的相互独立的解决方案要共用一个类库项目时,一般有以下几种方法: 1、多个解决方案分别引用相同路径的项目;(缺点:只适用于代码仅在本地维护的场景) 2、将该项目代码分别拷贝到各解决方案目录下进行引用...可进行新增,填上 公共仓库路径、本地路径、分支 即可新增了,就是这么简单: 另外三个功能是 同步、更新、移除,更新和移除很好理解,同步大概就是将子模块中修改的内容提交推送吧,我也没用过,我一般就是进入子模块目录...当我们克隆带有 Git 子模块的仓库时要记得勾上 “初始化所有子模块” 选项,不然的话克隆结束之后子模块目录不会出现: 我们打开子模块的目录,和普通 Git 目录相比,就是没有了 .git 文件夹,而是一个...: 这样提交信息就比较清晰了: 刚才如果只是点的 “提交”,那就再 “推送” 一下: 推送完成之后,看分支图上还是有一个虚线框的分支标记,这就是说明父工程还是引用的上个版本的本模块: 我们再切换到父工程...正常操作应该是对子模块进行复位,我们先重新切回 master 分支: 然后使用 “复位当前分支到此处” 功能: 这次使用 “硬模式”,当作什么都没有发生过: 情况如下: 这种情况就像是,公共库在别的地方有了新版本
那就是当我把新功能开发完成的时候,忽然发现自己开发使用的分支是错误的分支。...不过我记得之前学习git的时候有一个git stash的命令可以把当前没有提交的内容存档起来,然后可以在切换分支之后把当前的存档应用到目标分支。...,且push到了远程仓库 虽然我遇到的是第一种情况,那么当我解决这个问题之后,我很自然的就会想:如果遇到了另外两种情况我该怎么处理呢?...这个时候我们需要切换到正确的工作分支,然后运行命令: git stash apply 这个命令表示把我们之前暂存的内容,应用到当前分支。...关于git stash还有一些其它的命令,比如: git stash drop:丢弃一个快照 git stash pop:应用最新的快照到当前分支,如果应用成功的话就把这个快照从存储快照的栈中移除 git
但是当你发现还是原来的文件好或者另外的版本好时,就可能手足无措了。 此时使用Git 工具,就是聪明之举了。我们可以在本地建一个版本库 ,每当我们需要修改时,就可以把之前的版本提交并标明此版的特点。...如果你不想打开文本编译器进行书写,你也可以这样: git commit -m "你的提交说明" 移除文件 要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),然后提交...GitHub仓库默认有一个master的分支,当我们在master分支开发过程中接到一个新的功能需求,我们就可以新建一个分支同步开发而互不影响,开发完成后,在合并merge 到主分支master 上。...[HEAD 指向当前所在的分支] 分支切换 要切换到一个已存在的分支,你需要使用 git checkout 命令。...我们现在切换到新创建的 testing 分支去: $ git checkout testing 这样 HEAD 就指向 testing 分支了。
每当我创建一个新文件夹时,执行git init总是我的首要步骤。我不明白,既然我能使用git,为何还要选择不使用它。 在我的命令行提示符中,git信息是最关键的部分。缺少了它,我会感到不习惯。...变基 我会将我的PR变基到主分支上,而不是将主分支合并到我的分支中。为什么?因为当我使用git lr(我的别名,用于查看我分支上的git日志)时,我只想看到我分支上的提交。...我认为保持在最新的主分支上进行变基更清晰。我不喜欢我的分支上有合并提交。交互式变基还允许我查看所有我做的提交,并了解分支上的内容。 当我变基时,我不担心破坏原始的、未被篡改的提交历史吗?...这些问题应该决定你提交信息的内容。 当我在自己个人的仓库中独自工作,尝试让持续集成(CI)运行起来时,你很可能会看到我在主分支上使用单字母的提交信息。...我也用gh在开放的拉取请求分支之间切换,特别是当我检出贡献者的拉取请求时,它们位于一个分支中。 我还有这两个非常实用的别名,用于在开放的PR之间模糊切换,希望我能更经常地记住使用它们。
上周五我由于使用了git reset --HARD 而使得我丢掉了我的提交(糟糕透顶),因此,我决定是时候重新学习一下git了。...更新: Git 2.0 移除了这个默认的行为 http://blog.nicoschuele.com/posts/git-2-0-changes-push-default-to-simple...切换到一个分支 rebase 并 merge 到 maste 可以这样做:git rebase HEAD feature && git rebase HEAD @{-2} Git...别名 你还在为一次又一次的输入 checkout 而感到讨厌吗?现在就去尝试:git config --global alias.co checkout。...你就可以通过:git co master 命令来切换到master了。
下面我们主要说一个关于 Git 与其他版本管理系统的主要差别:对待数据的方式。 Git 采用的是直接记录快照的方式,而非差异比较。我后面会详细介绍这两种方式的差别。...移除文件:git rm filename (从暂存区域移除,然后提交。)...创建一个名字叫做 test 的分支 git branch test 切换当前分支到 test(当你切换分支的时候,Git 会重置你的工作目录,使其看起来像回到了你在那个分支上最后一次提交的样子。...Git 会自动添加、删除、修改文件以确保此时你的工作目录和这个分支最后一次提交时的样子一模一样) git checkout test 你也可以直接这样创建分支并切换过去(上面两条命令的合写) git checkout...-b feature_x 切换到主分支 git checkout master 合并分支(可能会有冲突) git merge test 把新建的分支删掉 git branch -d feature_x
创建分支命令:git branch (branchname)切换分支命令:git checkout (branchname)当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容,...(+), 0 deletions(-) create mode 100644 README----Git 分支管理列出分支列出分支基本命令:git branch没有参数时,git branch 会列出你在本地的分支...接下来我们将演示如何切换分支,我们用 git checkout (branch) 切换到我们要修改的分支。...testingSwitched to branch 'testing'$ lsREADME当我们切换到 testing 分支的时候,我们添加的新文件 test.txt 被移除了。...* master合并冲突合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。
,我叫它为一个 『版本』。...移除已经合并到 master 的分支 显示本地分支关联远程仓库的情况 关联远程分支 举出所有远程分支 举出本地和远程分支 构建并切换到本地分支 从远程分支中构建并切换到本地分支 移除本地分支 移除远程分支...git diff HEAD 快速切换到上一个分支 git checkout - 移除已经合并到 master 的分支 git branch --merged master | grep -v '^*...git branch -u origin/mybranch 或者在 push 时加上 -u 参数 git push origin/mybranch -u 举出所有远程分支 -r 参数相当于:remote...git branch -r 举出本地和远程分支 -a 参数相当于:all git branch -a 构建并切换到本地分支 git checkout -b 从远程分支中构建并切换到本地分支
,我叫它为一个 『版本』。...移除已经合并到 master 的分支 显示本地分支关联远程仓库的情况 关联远程分支 举出所有远程分支 举出本地和远程分支 构建并切换到本地分支 从远程分支中构建并切换到本地分支 移除本地分支 移除远程分支...git diff HEAD 快速切换到上一个分支 git checkout - 移除已经合并到 master 的分支 git branch --merged master | grep -v '^\*\...git branch -u origin/mybranch 或者在 push 时加上 -u 参数 git push origin/mybranch -u 举出所有远程分支 -r 参数相当于:remote...git branch -r 举出本地和远程分支 -a 参数相当于:all git branch -a 构建并切换到本地分支 git checkout -b 从远程分支中构建并切换到本地分支
创建分支命令: git branch (branchname) 切换分支命令: git checkout (branchname) 当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容...没有参数时,git branch 会列出你在本地的分支。...接下来我们将演示如何切换分支,我们用 git checkout (branch) 切换到我们要修改的分支。...checkout testing Switched to branch 'testing' $ ls README 当我们切换到 testing 分支的时候,我们添加的新文件 test.txt 被移除了...删除后, 就只剩下 master 分支了: $ git branch * master 合并冲突 合并并不仅仅是简单的文件添加、移除的操作,Git 也会合并修改。
git checkout newImage:切换到我们创建的newImage分支上 git checkout -b 分支名:创建一个新分支同时切换到这个新分支上 1.3 分支与合并 如何将两个分支合并到一起...当 rebase UI界面打开时, 你能做3件事: 调整提交记录的顺序(通过鼠标拖放来完成) 删除你不想要的提交(通过切换 pick 的状态来完成,关闭就意味着你不想要这个提交记录) 合并提交。...很简单,我们只需要将分支切换到master主分支,再通过git rebase -i或者git cherry-pick 选择我们要提交的记录就能够很容易的来达到目的。...5.2 远程分支 o/master 当我们git clone后发现一个一个名为o/master的分支, 这种类型的分支就叫远程分支。由于远程分支的特性导致其拥有一些特殊属性。...这种情况下, git push 就不知道该如何操作了。如果你执行 git push,Git 应该让远程仓库回到星期一那天的状态吗?
当我们开始开发一个新功能时, 这个功能将在哪个版本中发布可能是未知的。...这个 release- 分支 不应该包含那些不在此次发布计划中的功能,因此那些功能相对应的分支必须等 release- 分支创建之后再合并到 develop. release 分支创建时将分配一个版本号...// 在 release 分支基础上创建用于 bug 修改的分支, 分支的命名规则应该为 release-*_bug* git checkout -b release-1.2.56_bug1 release...将 release 分支合并到 master // 切换到 master 分支 git checkout master // 将 release 分支合并到 master 分支 git merge -...-no-ff release-1.2.56 // master 分支打上 tag git tag -a 1.2.56 将 release 分支合并到 develop // 切换到 master 分支
,但是没有提交到仓库,此时修改的内容是不会被复制到新分支的 $ git branch branchname # 切换分支(切换分支时,本地工作区,仓库都会相应切换到对应分支的内容) $ git checkout...它可以被用来移除提交快照,尽管它通常被用来撤销暂存区和工作区的修改。不管是哪种情况,它应该只被用于本地修改——你永远不应该重设和其他开发者共享的快照。...它是在提交记录最后面加上一个撤销了更改的新提交,而不是从项目历史中移除这个提交,这避免了 Git 丢失项目历史。 「撤销(revert)应该用在你想要在项目历史中移除某个提交的时候」。...19、git pull 会拉取所有远程分支的代码到本地镜像仓库中 想要 merge 别人的分支时: 如果你的本地仓库中已经有了他人的分支(直接切换到他人分支,就会在本地生成一条他人的分支),就可以使用...,一个是重命名文件,一个是修改文件内容,那么会起冲突吗?
领取专属 10元无门槛券
手把手带您无忧上云