我们使用git来管理我们应用程序的代码存储库,并且有一种情况我还没有遇到过,但我想很常见。我们想暂时删除一个功能,然后在将来的某个时候重新添加。我试图想象支持这一点的分支结构,或者如果我们应该做一些简单的事情,例如从代码中删除该功能,并在准备好重新添加它时,从提交历史记录中重新创建它。有人能指出我处理这种情况的正确方向吗? 最佳答案 您可以暂时删除早于Git存储库历史记录的功能的一种方法是进行删除该功能的提交。然后,当您想重新添加该功能时,只需将其删除的revertthecommit即可。这将执行反向补丁,这意味着它将反向应用更改,
我有一个发展得相当大的特性分支。在我们的代码中有很多挥之不去的TODO注释,但我想找到所有添加到代码中的TODO(尚未删除)在尚未merge到master的提交中。我该怎么做? 最佳答案 您可以简单地将您的分支与输出中的TODO的master和grep进行比较gitdiffmaster..branch|grep"^+.*TODO"假设TODO行中有足够的上下文,这对我来说非常有用。 关于git-用于查找在git分支上创建的所有TODO注释的脚本?,我们在StackOverflow上找到一
我有一个发展得相当大的特性分支。在我们的代码中有很多挥之不去的TODO注释,但我想找到所有添加到代码中的TODO(尚未删除)在尚未merge到master的提交中。我该怎么做? 最佳答案 您可以简单地将您的分支与输出中的TODO的master和grep进行比较gitdiffmaster..branch|grep"^+.*TODO"假设TODO行中有足够的上下文,这对我来说非常有用。 关于git-用于查找在git分支上创建的所有TODO注释的脚本?,我们在StackOverflow上找到一
我在各种网站上看到过这个命令。gitcheckout--track-b如果我在远程服务器上创建一个裸仓库并在两个不同的位置工作,那么最快和“认可”的方法是什么?我所做的是,我在笔记本电脑上创建了初始存储库,然后将更改推送到我的VPS存储库所在的“原点”(裸存储库)。现在,在我的桌面上,我应该克隆我的存储库吗?我问是因为我有两个分支,“dev”和“master”。进入桌面后,我不确定是应该“跟踪”存储库还是应该先克隆?如果我想在dev分支上工作怎么办,是在我使用--track指令checkout时吗?这是我到目前为止所做的。在笔记本电脑上cddevprojectgitinitgitadd
我在各种网站上看到过这个命令。gitcheckout--track-b如果我在远程服务器上创建一个裸仓库并在两个不同的位置工作,那么最快和“认可”的方法是什么?我所做的是,我在笔记本电脑上创建了初始存储库,然后将更改推送到我的VPS存储库所在的“原点”(裸存储库)。现在,在我的桌面上,我应该克隆我的存储库吗?我问是因为我有两个分支,“dev”和“master”。进入桌面后,我不确定是应该“跟踪”存储库还是应该先克隆?如果我想在dev分支上工作怎么办,是在我使用--track指令checkout时吗?这是我到目前为止所做的。在笔记本电脑上cddevprojectgitinitgitadd
使用IntelliJIDEA的Git插件可以做很多事情,但我还没有找到重命名分支的方法。有吗?我知道我总是可以调出一个终端并执行gitbranch-msourcetarget,但我也希望找到一个GUI解决方案。 最佳答案 此功能有几个悬而未决的问题:IDEA-89927:重命名分支不会被IDEA捕获IDEA-131021:添加“重命名分支”Action后者尚未实现。前者确实显示了当前可用的唯一方法(OP提到):Gotothecommandlineandexecutegitbranch-m但即使这样在IDEA上也有刷新问题。2017年
使用IntelliJIDEA的Git插件可以做很多事情,但我还没有找到重命名分支的方法。有吗?我知道我总是可以调出一个终端并执行gitbranch-msourcetarget,但我也希望找到一个GUI解决方案。 最佳答案 此功能有几个悬而未决的问题:IDEA-89927:重命名分支不会被IDEA捕获IDEA-131021:添加“重命名分支”Action后者尚未实现。前者确实显示了当前可用的唯一方法(OP提到):Gotothecommandlineandexecutegitbranch-m但即使这样在IDEA上也有刷新问题。2017年
我有A--B--Cmaster\Dbranch0然后我将B和C压缩成B'。我如何rebasebranch0使其看起来像这样:A--B'master\Dbranch0 最佳答案 使用--ontogitrebase的参数,它改变了git重放工作的基线。gitcheckoutbranch0在这种状态下,您应该仍然在git历史记录中看到C。gitrebase--ontoB'C这转化为:获取自提交C以来我当前分支中的所有提交(在您的情况下只是D)并在B'您还可以使用可选的一次执行checkout和rebase的参数:gitrebase--on
我有A--B--Cmaster\Dbranch0然后我将B和C压缩成B'。我如何rebasebranch0使其看起来像这样:A--B'master\Dbranch0 最佳答案 使用--ontogitrebase的参数,它改变了git重放工作的基线。gitcheckoutbranch0在这种状态下,您应该仍然在git历史记录中看到C。gitrebase--ontoB'C这转化为:获取自提交C以来我当前分支中的所有提交(在您的情况下只是D)并在B'您还可以使用可选的一次执行checkout和rebase的参数:gitrebase--on
我想创建一个提交,使当前分支的内容与另一个分支相同(并且隐式同步)。这实际上等同于将另一个分支的checkout内容复制粘贴到当前分支之上,然后一次性提交所有内容。 最佳答案 $gitreset--hard$gitreset--softHEAD@{1}$gitcommit第一次(硬)重置将另一个分支的内容抓取到您的工作目录中。第二次(软)重置将您的提交指针放回原始分支的顶端,但根本不会更改索引中的文件,从而将它们保留在另一个分支中。然后,您可以在当前分支的最新提交之上提交该状态。 关于g