Tag: commit

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提交+结帐不在任何分支。 我有没有放松我的改变?

当我提交更改时,我当时并不在任何分支上。 我没有真正注意到这个消息,并检查了另一个分支。 我如何检索我的更改? 我无法合并或签出,因为没有合并分支。

Git:'git reset'后如何重用/保留提交消息?

作为Git的用户,我经常遇到这种情况,我需要重新修改一个或多个提交,这种提交方式不适合–amend或修改提交。 通常我会做类似的事情 git reset HEAD~1 # hack, fix, hack git commit -a # argh .. do I need to retype my message? 我认为合理的提交信息非常严重。 它们通常包含更大的文字,并带有参考和理由的变化。 到现在为止,我对通过未分类的git reflog , git log和复制和粘贴过程恢复旧的提交消息的冗长过程感到非常恼火。 有没有更好的解决这个问题? 如果我包含多个提交,那又怎么样呢? 编辑:有一点思考后,我想我正在寻找的是一些git提供消息修复/修改提交不适当的提交消息。

Git提交到公共子模块(master分支)

我有两个或两个以上的项目(让我们称之为ProjectFoo和ProjectBar )具有一些通用的代码 ,我把它们放在一个子模块中 。 我的理解是,如果我从ProjectFoo内部对子模块提交更改,它将会是一个独立的头,只有所有ProjectFoo克隆可以看到: (master) $ cd ProjectFooBarCommoneSubmodule/ (master) $ git commit -am "Common code fix." (56f21fb0…) $ git push Everything up-to-date 这可能是因为master分支没有改变。 我可以做一些像git checkout master && git merge Everything up-to-date但看起来很丑。 可能是一个git reset –hard master做同样的事情,但似乎更丑陋。 如何让项目共享一个共同的代码, 在使用它的项目中进行更新? 换句话说,对该子模块的提交应该更新所有使用同一个子模块的各种存储库( 存储库,而不仅仅是克隆 )。 —-编辑—- 显然,我的签出库被搞砸了。 它应该从一开始就这样工作(在这个例子中是ProjectFoo ): (master) $ cd ProjectFooBarCommoneSubmodule/ (master) $ git commit -am "Common […]

你如何“回滚”在Mercurial上的最后一次提交?

我有一个Mercurial存储库,我只在本地使用…这是我的个人使用(所以我不“推”任何地方)。 我做了3个文件的提交,但之后我明白我应该提交4个文件… 有没有办法“回滚”我的最后 (最新,只有一个)提交,并“重新”与正确的文件? (我不知道为什么,但我的“ 修改当前修订 ”选项是不活跃的,所以我不能使用它…)

在GIT中撤销删除

我做了一件非常愚蠢的事情。 我使用git commit(文件编辑+新文件)(C)做了一个提交。 然后我做了最后的修改。 然后我使用git rm -rrecursion删除所有文件(!)然后我做了另一个git commit(C)。 ABC ↑ 主 有没有什么方法来取消删除文件,但保持我在第一次提交的变化? (C)我宁愿不回(B)。 我试过git reset –soft head ^,所以然后git status列出了我删除的文件,然后我做了git checkout,但还是没有运气。 我甚至不知道是否有可能。

把主从提交到使用git分支

我试图学习如何有效地使用Git,我想知道我应该如何(良好的做法/不好的做法?)解决以下情况: 假设我在master中有如下的提交链: 初始提交 提交1 提交2 提交3 然后我意识到在最后两个提交中完成的是完全错误的,我需要再次从提交1开始。 问题: 我该怎么做? 我可以把委托2和委托3分到一个单独的部门以备将来参考(说他们毕竟不是那么糟糕),并继续从委托人1到主人?

如何提交没有改变和新消息?

如果不对文件做任何修改,我怎么能做一个新的commit并且创build一个新的消息? 这是不可能的,因为提交的代码(SHA?)将是相同的?

你如何将提交移动到临时区域?

如果要将提交移到暂存区 – 即不提交,并将其中的所有更改移入暂存区(有效地将分支置于提交之前的状态) – 你怎么做呢? 或者是你不能做的事情? 我知道该如何做的最接近的方法是将提交中所有已更改的文件都复制到其他位置,在提交之前将分支重置为提交,然后将其移入暂存区域,将所有将文件复制回存储库,然后将它们添加到暂存区域。 它的工作原理,但它不是一个很好的解决scheme。 我希望能够做的只是撤消提交,并将其转移到暂存区域。 可以这样做吗? 如果是的话,怎么样?

git提交作为不同的用户没有电子邮件/或只有电子邮件

我试图作为一个不同的用户提交一些更改,但我没有一个有效的电子邮件地址,下面的命令不工作对我来说: git commit –author="john doe" -m "some fix" fatal: No existing author found with 'john doe' 尝试仅使用电子邮件地址提交时遇到同样的问题 git commit –author="john@doe.com" -m "some fix" fatal: No existing author found with 'john@doe.com' 在提交命令的git手册页上说,我可以使用 standard AU Thor <author@example.com> format 对于 – 作者选项。 这个格式在哪里定义? A和U代表什么? 我如何使用只有用户名或只有电子邮件的不同用户?