我在一个新的项目上使用git,这个项目有两个平行但是目前是实验性的开发分支: master :导入现有的代码库,加上我通常确定的几个mods exp1 :实验分支#1 exp2 :实验分支#2 exp1和exp2代表了两种非常不同的架构方法。 直到我走得更远,我无法知道哪一个(如果有)将工作。 当我在一个分支中取得进展时,我有时会编辑一些对其他分支有用的编辑,并希望仅合并这些编辑。 将select性文件从一个开发分支合并到另一个开发分支的最好方法是什么? 我已经考虑的方法: git merge –no-commit接下来是大量的编辑操作,我不想在分支之间进行共同操作。 手动将常用文件复制到临时目录中,然后将git checkout移动到另一个分支,然后将更多的手动拷贝出temp目录到工作树中。 以上的变化。 现在放弃exp分支并使用另外两个本地存储库进行实验。 这使得手动复制文件变得更直接。 所有这三种方法都显得乏味且容易出错。 我希望有一个更好的方法; 类似于使git-merge更具select性的filterpath参数。
我经常使用git stash和git stash pop来保存和恢复工作树中的更改。 昨天,我在工作树上发生了一些变化,我把它藏起来,然后对工作树进行了更多的修改。 我想回顾一下昨天的隐藏的更改,但git stash pop隐藏git stash pop似乎删除所有对相关提交的引用。 我知道如果我使用git stash那么.git / refs / stash包含用于创build存储的提交的引用。 而.git / logs / refs / stash包含了整个存储。 但是那些引用在git stash pop之后不见了。 我知道提交仍然在我的资源库中,但我不知道它是什么。 有没有简单的方法来恢复昨天的存储提交参考? 请注意,这对我来说并不重要,因为我每天都有备份,可以返回到昨天的工作树来获取我的更改。 我问,因为必须有一个更简单的方法!
我怎样才能查询混帐找出哪些分支包含一个给定的提交? gitk通常会列出分支,除非有太多,在这种情况下,它只是说“很多(38)”或类似的东西。 我需要知道完整的列表,或至less是否某些分支包含提交。
说我在Git仓库。 我删除一个文件并提交更改。 我继续工作,做更多的承诺。 然后,我发现我需要恢复该文件。 我知道我可以使用git checkout HEAD^ foo.bar来签出一个文件,但是我不知道该文件何时被删除。 find删除给定文件名的提交最快的方法是什么? 将该文件恢复到我的工作副本最简单的方法是什么? 我希望我不必手动浏览我的日志,签出一个给定的SHA整个项目,然后手动将该文件复制到我原来的项目结帐。
我有一个名为“skeleton”的本地git仓库,用于存储项目框架。 它有几个分支,用于不同types的项目: casey@agave [~/Projects/skeleton] git branch * master rails c c++ 如果我想查看一个新项目的主分支,我可以做 casey@agave [~/Projects] git clone skeleton new Initialized empty Git repository in /Users/casey/Projects/new/.git/ 而一切都是我想要的。 具体来说,新的主分支指向骨架主分支,我可以推拉移动到基本项目设置的更改。 但是,如果我想克隆另一个分支,什么都行不通。 我无法得到它,所以我只拉我想要的分支,例如轨道分支,然后新的回购有一个'主'分支推动和从骨架回购的'轨'分支拉,默认情况下。 有这样一个好方法吗? 或者,也许这不是git要我去组织的方式,我当然可以这么做。 也许我应该有多个回购,跟踪骨架回购跟踪主骨架回购? 和任何个人项目克隆铁路骨架回购。 任何想法和build议表示赞赏!
我通常会提交一个提交列表以供审查。 如果我有: HEAD Commit3 Commit2 Commit1 我知道我可以使用git commit –amend修改头部提交,但是如何修改Commit1 ,因为它不是HEAD提交?
我阅读了Git手册,FAQ,Git – SVN速成教程等,他们都解释了这一点,但是你却找不到一个简单的指令: SVN仓库: svn://myserver/path/to/svn/repos Git仓库: git://myserver/path/to/git/repos git-do-the-magic-svn-import-with-history \ svn://myserver/path/to/svn/repos \ git://myserver/path/to/git/repos 我不指望它那么简单,我也不指望它是一个单一的命令。 但是,我希望不要试图解释任何事情 – 只是说明在这个例子中要采取什么措施。
给定一个blob的散列,有没有办法获得这个blob在树中的提交列表?
我正在寻找如何处理我的源代码(Web应用程序)所依赖的大型二进制文件的意见。 目前我们正在讨论几个备选scheme: 手动复制二进制文件。 临:不确定。 Contra:我强烈反对这一点,因为它增加了在build立一个新站点/迁移旧站点时出现错误的可能性。 build立另一个障碍。 用git来pipe理它们。 专业版:删除“忘记”复制重要文件的可能性 Contra:扩大版本库并降低pipe理代码库和checkouts / clone / etc的灵活性需要相当长的一段时间。 分开的存储库。 专业版:检出/克隆源代码的速度一如既往,并且图像被正确存档在自己的存储库中。 Contra:删除在项目上拥有唯一的 git仓库的简单性。 当然会介绍一些我没有想过的事情。 你对此有什么经验/想法? 另外:有没有人有多个git仓库的经验,并在一个项目中pipe理他们? 更新 :这些文件是用于生成包含这些文件的PDF的程序的图像。 文件不会经常变化(如年),但与程序非常相关。 该程序不会没有文件工作。
我已经和其他开发者一起使用Git几个月了。 我有几年的SVN经验,所以我想我带了很多的关系的包袱。 我听说Git非常适合分支和合并,到目前为止,我只是没有看到它。 当然,分支是简单的,但是当我尝试合并的时候,所有的事情都变成了地狱。 现在,我已经习惯了SVN,但是在我看来,我只是把一个子版本系统换成另一个。 我的合作伙伴告诉我,我的问题源自我渴望融合的愿望,在很多情况下我应该使用rebase而不是merge。 例如,下面是他制定的工作stream程: clone the remote repository git checkout -b my_new_feature ..work and commit some stuff git rebase master ..work and commit some stuff git rebase master ..finish the feature git checkout master git merge my_new_feature 从本质上讲,创build一个function分支,总是重新从主分支,并从分支合并到主。 需要注意的是,分支始终保持在本地。 这是我开始的工作stream程 clone remote repository create my_new_feature branch on remote repository git checkout -b […]