Tag: git新

是否有可能将一组提交追溯到一个分支?

假设我有一个git仓库,我一直在做主,我可以追溯创build一个分支。 例如: A – B – C – A1 – D – A2 – E 我想使它看起来像这样: A – A1 – A2 \ \ B – C – D – E 具体的用例是当我挑选了一堆提交到一个旧版本的分支,它需要进入多个旧版本,我不想重复所有这些修订的樱桃select。 从本质上讲,它本来就是一个很好的function或主题分支,但并不是这样创build的。

如何在一行中的所有子模块上git clone –recursive和checkout master?

我真的很喜欢这个命令来获取子模块的回购: git clone git@github.com:my_user/my_repo.git –recursive 然而,子模块到达时都设置为“不分支”,我必须手动对每一个主模块进行结账。 有没有办法recursion拉子模块,并自动将分支设置为主?

Git与大文件

情况 我有两个服务器,生产和发展。 在生产服务器上,有两个应用程序和多个(6)数据库(MySQL),我需要分发给开发人员进行testing。 所有源代码都存储在开发服务器的GitLab中 ,开发人员只能使用此服务器,并且无法访问生产服务器。 当我们发布一个应用程序,主要login到生产,并从Git拉新版本。 数据库很大(每个数据超过500M),我需要尽可能地将它们分发给开发人员进行testing。 可能的解决scheme 在将数据库转储到单个文件的备份脚本之后,执行一个将每个数据库推送到其自己的分支的脚本。 如果开发者想更新他的本地副本,开发人员就会select其中一个分支。 这一个被发现不工作。 生产服务器上的Cron每天保存二进制日志,并将它们推送到该数据库的分支中。 所以,在分支中,每天都会有文件被修改,开发者会拖拽他没有的文件。 当前的SQL转储将以另一种方式发送给开发人员。 当存储库的大小变得过大时,我们会将全部转储发送给开发人员,并清除存储库中的所有数据,并从头开始。 问题 解决scheme可能吗? 如果git是推送/从仓库中取出,是否上传/下载整个文件,或只是改变它们(即增加新的行或编辑当前的)? Git可以pipe理这么大的文件吗? 没有。 如何设置存储库中保存了多less个修订版本? 与新解决scheme无关。 有没有更好的解决scheme? 我不想强迫开发者通过FTP或类似的东西下载这样的大文件。

.gitignore不会忽略目录

我做了什么: 我觉得有一些来自github gui的奇怪的configuration,导致这个问题,并阻止我能够轻松地从命令行使用git甚至git-bash。 我结束了刚卸载github和git,然后重新安装只是git的Windows。 我现在有一切从命令行运行(除了我从git-bash运行的ssh除外)。 github gui更容易也更可靠。 多亏了mu没有花时间来弄清楚这一点。 我没有结束使用他的答案,但如果我不需要重新安装git,那将是我需要做的。 我在本地机器上使用github gui。 我只是注意到,我正在做的提交将要更新我所有的最近更新节点模块。 我设置我的.gitignore忽略整个node_modules/目录。 我不知道该怎么做。 包含在.gitignore中的所有文件types都被忽略。 这只是它似乎忽略的目录。 这是我的.gitignore文件: ################# ## Sublime Text ################# *.sublime-project *.sublime-workspace ################# ## Images ################# *.jpg *.jpeg *.png *.gif *.psd *.ai ################# ## Windows detritus ################# # Windows image file caches Thumbs.db ehthumbs.db # Folder config file Desktop.ini # Recycle Bin used […]

Git:我怎样才能find一个最接近目录的提交?

有人拿了Moodle的一个版本(我不知道),在一个目录中应用了许多变化,并释放它( 树在这里 )。 我怎样才能确定原始项目的哪个提交最有可能被编辑来形成这棵树? 这将允许我在此补丁的适当提交下形成一个分支。 当然,它来自1.8或1.9分支,可能来自发布标签,但在特定的提交之间的差异并没有多大帮助。 尸检更新: knittl的答案让我尽可能接近我将要得到的。 我首先添加了我的补丁回购作为远程“外国”(没有共同的承诺,没关系),然后在循环与几个格式选项差异。 第一个使用了–shortstat格式: for REV in $(git rev-list v1.9.0^..v1.9.5); do git diff –shortstat "$REV" f7f7ad53c8839b8ea4e7 — mod/assignment >> ~/rdiffs.txt; echo "$REV" >> ~/rdiffs.txt; done; 第二个只是在没有上下文的统一比较中统计线条的变化: for REV in $(git rev-list v1.9.0^..v1.9.5); do git diff -U0 "$REV" f7f7ad53c8839b8ea4e7 — mod/assignment | wc -l >> ~/rdiffs2.txt; echo "$REV" >> ~/rdiffs2.txt; […]

'git log –graph'或'hg graphlog'是如何工作的?

我知道Git中的历史存储在一个名为DAG的数据结构中。 我听说过DFS,知道这有点相关。 我很好奇,程序如git log –graph或者hg graphlog绘制历史? 我一直认为用这样一个好方法来画道和一切都是相当复杂的。 有人可以写一些伪代码来演示它吗? 注意:我试着环顾Git或者Hg的代码,但是很难跟踪并得到一个大概的想法。

Git工作stream程:重新发布已发布/共享分支

我们工作的团队热情地采用了rebase工作stream程,但是我们可能会有一点点的失望,这就是这个问题的关键:你是法官。 现在使用pull –rebase对我来说是不容易的。 但是,我们也有大量的function分支,多人工作。 定期地,我们要引入主人正在发生的变化。 传统的智慧会让我们合并,因为它是一个共享的分支。 但是,在我们反思的过程中,我们决定重新devise这些分支机构。 当然这需要大家的合作。 工作stream程如下所示: 1)翻新人员与每个人协调,以确保他们都被检入并推送到function部门,然后要求他们在该部门不再做任何工作,直到他们全部清楚。 2)rebaser将特性分支重定位到master,删除远程特性分支(git push origin:feature),然后推送新的重新发布的特性分支(git push origin feature) 3)rebaser每个人都可以获取更新他们的特性分支,然后删除他们的本地特性分支(git branch -D feature),然后创build一个新的局部特性分支来跟踪远程特性分支。 大家然后得到全部清楚。 这个工作stream程正在工作,部分原因是我们是一个小团队,工作中断很小。 但是,我担心我们正在学习可怜的Git习惯(重新分配一个共享的分支),或者工作stream程不能很好地扩展。 好的,我们的资料库历史很可爱。 你怎么看,Git大师? 我们是在玩火,还是在摇摆合理的工作stream程? 更新 : 我原来问这个问题已经两年了,从那以后我的工作stream程就改变了。 我们还是经常做git pull –rebase ,所以没有改变。 这是常识,它可以防止所有不美观,迷惑的迷你合并。 (我们主要保持同步,所以git pull –rebase成本git pull –rebase )。 不过,除此之外,偶尔英勇的纠正错误的行动,我们已经过了我们的蜕变疯狂。 合并大部分时间是合理的。 然而,肆意合并是有问题的,并且对两年前我所关心的混乱,混乱的历史做出了贡献。 我们的解决scheme有几个组件 主分支是“原始的”。 主题分支被合并, 一旦他们这样做,主题分支就退休了 。 换句话说,将主题分支合并表示该工作已经准备好进行生产,现在是主分支的一部分。 看看我们的版本历史,很清楚发生了什么事情:主题分支合并到主,这就是。 我们在必要时使用一次性整合分支。 例如,如果我们有主题分支A,B和C,并且他们都不准备集成到主控中,但是我们需要一起testing它们,我们只创build一个QA分支(通常是主分支),然后合并A,B和C英寸在某些时候,QA分支被删除或重新使用。 重点是它并不打算以任何方式永久存在,并且它没有与主分支相同的限制(您可以根据需要多次合并您的主题分支)。 如果历史过于混乱,您可以删除QA分支并重新开始(我们发现这种方法非常自然)。 合并时, […]

git用diff创build补丁

我试过了 git diff 13.1_dev sale_edit > patch.diff 然后,我尝试在另一个分支做git apply patch.diff ,但是我得到的补丁不适用。 如何创build补丁文件,我可以使用git应用? 收到的错误: $ git apply –ignore-space-change –ignore-whitespace diff.diff diff.diff:9: trailing whitespace. diff.diff:10: trailing whitespace. function set_change_sale_date() diff.diff:12: space before tab in indent. $this->sale_lib->set_change_sale_date($this->input->post('change_sale_date')); diff.diff:14: trailing whitespace. diff.diff:15: trailing whitespace. function set_change_sale_date_enable() warning: application/controllers/sales.php has type 100755, expected 100644 error: patch failed: application/controllers/sales.php:520 error: application/controllers/sales.php: […]

git-svn“找不到revmap” – 这是什么意思?

当运行git svn clone并且经常在后续的git svn fetch操作中,我得到了许多文件夹的这个消息: Couldn't find revmap for <SVN folder URL> 我的知识库似乎工作正常。 这个消息是什么意思? 我应该关心它吗?

暂停git克隆,然后恢复?

有没有办法暂停git克隆,并在稍后恢复? 我克隆了一个非常大的回购(大约2GB),我的电脑已经开启了超过40个小时。 我有学校,以后赶,我不想这样离开。 有人有个想法吗? 它已经在67%btw。 🙁