有人能帮我理解Git中的分支,分支和克隆之间的区别吗? 同样,当我做一个git fetch而不是一个git pull时,这意味着什么? 另外,与merge相比, rebase是什么意思? 我怎样才能把自己的承诺压缩在一起? 他们如何使用,他们为什么使用,他们代表什么? GitHub怎么样?
我每隔几分钟检查我的代码到一个Git分支,最后的评论就是“一切都破了再开始”和其他荒谬的事情。 然后,每隔几分钟/几小时/天,我就会认真地提交一个真正的评论,例如“第三次修正了错误#22.55”。 我怎样才能分开这两个概念? 我希望能够删除所有我的频繁提交,只留下严重的提交。
在今天帮助一个有git问题的朋友的时候,我不得不介绍一个需要与master分支完全分离的分支。 这个分支的内容与master分支的内容有所不同,但是稍后他们将被合并到master分支中。 我记得从底层阅读John Wiegley的Git,分支本质上是一个标签,它遵循一定的约定,以及如何将一个提交与一个文件树以及可选的父提交绑定在一起。 我们使用git的pipe道创build了一个无父母的提交到现有的仓库: 所以我们摆脱了索引中的所有文件… $ git rm -rf . 从tarball提取目录和文件,将其添加到索引… $ git add . …并创build一个树对象… $ git write-tree ( git-write-tree告诉我们创build的树对象的sha1sum。) 然后,我们提交了树,没有指定父提交… $ echo "Imported project foo" | git commit-tree $TREE ( git-commit-tree告诉我们创build的提交对象的sha1sum。) …并创build一个新的分支,指向我们新创build的提交。 $ git update-ref refs/heads/other-branch $COMMIT 最后,我们返回到master分支继续在那里工作。 $ git checkout -f master 这似乎按计划运作。 但是,这显然不是我推荐给那些刚开始使用git的程序的一种程序。 有没有一种更容易的方式来创build一个新的分支,这是迄今为止与库中发生的一切无关的?
我使用以下命令推送到我的远程分支: git push origin sandbox 如果我说 git push origin 是否也推动了我其他分支的变化,还是只更新我目前的分支? 我有三个分支: master , production和sandbox 。 git push文件不是很清楚,所以我想澄清一下这个好。 哪个分支和遥控器能够完成以下git push命令的更新? git push git push origin 上面的origin是一个遥远的。 我明白, git push [remote] [branch]将只推动该分支到远程。
我有一个名为“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议表示赞赏!
在使用SCM系统时,你应该什么时候分支?
如何从当前工作树中删除未跟踪的本地文件?
长话短说… 据我所知,术语“分支”(用Git的说法)可能指的是相关但不同的东西: 一个非符号引用/指向提交的指针, 这样的参考名称(例如“主”), 存储库的提交DAG的子图由所有提交可达的提交组成,这些提交由这样的引用所指向的提交。 但是,我已经看到这个术语明显地指的是除了这三种可能的用法之外(下面更详细的介绍)。 在一个Git的上下文中,是否还有其他有效的和明确的术语“分支”的用法,我的上面的列表丢失? 更多细节 使用Git大约一年后,我正在为CS学生准备一个简短的教程。 我真的想确定一下Git的术语,以避免混淆。 当然,我一直在使用Git分支, 我很舒服地使用它们,并findGit分支模型真棒。 然而,我仍然觉得术语“分支”是有问题的和模棱两可的,因为它似乎至less指两种不同的东西,这取决于它使用的上下文…有时甚至在相同的教程/手册中。 用法1:分支=提交的指针/引用 Pro Git书(在3.1–分支是什么 )在显示下面的图之后, 继续定义一个分支 只是一个轻量级的可移动指针到这些提交之一。 据我所知,这也是“分支”在Git手册页中的含义。 我对这个定义很满意。 我认为分支只是指向DAG中特定提交的引用,分支的“提交提交”是该引用指向的提交。 到现在为止还挺好。 可是等等… 用法2:分支= DAG的子图 Atlassian Git教程介绍分支如下: 分支代表独立的发展路线。 他们的意思是,我想是一串提交。 让我细化这个想法……唯一对我有意义的解释是,术语“分支”也可以指存储库提交DAG的子图,它由所考虑的提示提交可达到的所有提交组成 。 但是,Pro Git书籍也包含以下图表(参见3.4 – 分支工作stream程 ), 这似乎与我的解释矛盾,因为它似乎暗示只有提交C2 – C5 (不是C1 )属于develop分支,而只提交C6 – C7 (不是C1 – C5 )属于topic分支。 我觉得这个用法是模棱两可的,因为如果我在这个阶段绘制DAG,而不知道过去分支引用指向的位置,并且没有任何假定三个分支之间的任何层次结构,我会得到的是 其他Git学习资源中的一些图表也令人困惑。 特别考虑以下内容(来自Lynda.com的简介video- Git基本培训 ): 在这里, master […]
我知道如何创build一个跟踪远程分支的新分支,但是如何使现有的分支跟踪一个远程分支? 我知道我可以编辑.git/config文件,但似乎应该有一个更简单的方法。
将一个远程分支作为本地分支进行跟踪非常简单。 $ git checkout –track -b ${branch_name} origin/${branch_name} 将所有本地分支推送到远程,根据需要创建新的远程分支也很容易。 $ git push –all origin 我想做相反的事。 如果我有一个远程分支机构在一个单一来源: $ git branch -r branch1 branch2 branch3 . . . 我可以创建所有这些远程分支的本地跟踪分支,而无需手动创建每个分支? 说一些像: $ git checkout –track -b –all origin 我已经google和RTM,但到目前为止已经上床。