问题标签 [git-amend]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
379 浏览

git - Git - 分离头、修改提交和推送时落后的问题?

我们的团队正在使用 git 子模块,但是我们在 pull 时遇到了一些错误,这告诉我们即使我们最近更新了(并且从那以后没有远程提交/推送),我们还是落后了。这发生在两种情况下:

  1. 在我们的子模块中分离HEAD,或
  2. 使用时git commit --amend

我将尝试展示这些事情发生的场景。我的问题是,有谁知道具体错误在哪里,以及修复它们的简单方法(比我们的肮脏黑客更好)?

场景 1 - 分离式HEAD

  1. 我们发行:
    1. git clone --recursive $REPO $DIR
    2. git sfe 'git pull origin master'
    3. git submodule update --recursive- 我们实际上并没有使用这么多,因为它往往使我们处于分离HEAD状态
  2. 我们检查所有分支是否都打开master(或至少不处于分离HEAD状态)git sfe 'git branch'。如果没有,我们发出一个git sfe 'git checkout master'. (我们目前都(约 4 人)在 master 上开发,只是为了尽量减少合并和启动和运行)
  3. 如果我们处于 detached HEAD,进行更改,然后切换到master(因此我们的未暂存文件保留在工作目录中),暂存并提交这些更改,然后尝试推送,Git 说我们必须拉动,因为我们落后了。我们可以通过以下方式解决这个问题:
    • 说“拧它”,检查一个完全干净的超级模块,确保我们没有处于分离状态HEAD,然后从那里开始工作
    • 获取修订号,git checkout master然后发出 agit merge $REV并经历重新合并当前更改与似乎存在的过去更改冲突的痛苦。

场景 2 - 修改提交

  1. 这个不多。我将自己开发,发布 a git commit --amend,然后尝试推动这些更改。但是,当我这样做时,它告诉我我落后了,必须合并。当我这样做时,将所有当前更改与过去的修订重新合并,这又是一个痛苦的过程。
    • 这是因为我试图推送基于不再是的提交的东西HEAD吗?

注意git sfe是我们的别名git submodule foreach --recursive(我们有一些嵌套的子模块,只是为了自虐[或者更确切地说,我们需要能够将代码分离出来并且子子模块的放置是有意义的事实])

0 投票
2 回答
274 浏览

git - 当没有什么要修改的时候,为什么 git amend 不警告你?

我经常犯的错误是在提交后立即对文件进行更改,然后运行git commit --amend然后快速git push -f origin master

显然,问题是我从来没有跑过git add foo.md。所以我的修改实际上并没有修改我提交的任何代码。

问题是:为什么 git 在修改没有更改的提交时不警告您?更好的是,为什么它甚至可以成功完成?它只是在更改给定提交的时间戳时表现得像“触摸”吗?

0 投票
2 回答
102 浏览

git - 是否可以使 git commit 不可修改?

有没有办法保护给定的 git commit 不被修改?

我能想到的就是编写一个预提交挂钩来检查 SHA 与“不可修改”SHA 列表。有谁知道标准/更好的方法?

谢谢。

0 投票
2 回答
24290 浏览

git - git commit --amend 不询问消息

不时地,我发现自己使用相同的信息进行提交修改。

通常,我会:

  1. 将我的更改添加到暂存区。
  2. git commit --amend
  3. 等待文本编辑器打开。
  4. 保存并关闭它(不更改消息)。

无论如何要告诉 git 我不想更改提交消息(跳过打开我的文本编辑器并保存消息的步骤)?像:

  1. 将我的更改添加到暂存区。
  2. 告诉 git 将我的暂存区域修改为最后一次提交,而不要求我提供另一条消息。

我知道我可以避免 git 通过执行git commit --amend -m "<message>". 但是这样我就不得不重新输入消息。

0 投票
3 回答
7973 浏览

git - 如何在 git 分支上更改作者姓名

前几天我分支了我的 github 项目以创建静态页面,但搞砸了我的作者姓名

https://github.com/ronaldsuwandi/le-simplepage/commits/gh-pages

如何为分支的第一次提交重命名作者?

我试过了

但没有运气 - 我对 git 还是很陌生..

编辑:如果我想更改第一次提交, Amber给出的答案不起作用(例如,如果我的提交历史是A-B-C-D并且我想更改BI can do的提交历史git rebase -i A。但我不确定如果我该怎么做想改变自己的提交历史A

0 投票
3 回答
42279 浏览

git - 如何在 Gerrit 中创建新的补丁集?

我是 Gerrit 的新手,想在提交新更改时创建一个新补丁。我使用本指南设置 Gerrit https://review.typo3.org/Documentation/install-quick.html

然后我尝试使用http://gerrit.googlecode.com/svn/documentation/2.0/user-changeid.html创建一个新补丁,并Change-Id在提交消息的底部添加一行。

但我得到的是新的变更而不是新的补丁集。谁能帮我?

谢谢

0 投票
2 回答
3284 浏览

git - 修改推送的提交消息

我刚刚推送了一个提交,然后意识到我需要更改提交消息。

所以在我的本地仓库中,我做了:

但是当我试图推动这个时,我收到了大量的错误消息说

这是修改我的信息的错误方法吗?最后,我不得不重置我所有的存储库,然后用一条新消息再次提交。

所以我的问题是,修改已推送内容的提交消息的正确方法是什么?

0 投票
1 回答
43 浏览

git - 提交的回购范围的变基

考虑这行提交。

我从分支开始foo,偶尔会barfoo. 现在,当我h在 branch中进行 commit 时bar,我意识到我在 commit 中犯了一个错误c。所以,我运行git rebase并打开提交c进行编辑。我进行更改,将它们暂存并运行git rebase --continue

现在,我的bar分支已更新。但是,foo分支仍然指向 commit 的原始有缺陷版本c

有没有一种方法来运行一个 repo 范围的 rebase,其中包含指向特定提交的指针的所有分支都被识别和 rebase,一次一个?

我知道手动方式 - 重新设置 foo 并插入/挑选新的 SHA,但它需要我知道哪些分支引用了提交。而且需要体力劳动。

0 投票
2 回答
162 浏览

git - Git 存储是否修改?

我知道它们存在于 中git reflog,但是如果我将提交推送到远程存储库,然后进行修改git push --force(警告:pushing --force通常应避免到远程存储库),我覆盖的提交是否会存在于某处?

0 投票
1 回答
412 浏览

git - how the git commit --amend working together with gerrit?

I staged and committed 5 files and pushed it gerrit, but before it is merged in to git, I updated 3 of them then I git commit --amend to the last commit, and if I do push to gerrit again, does this second path contains the updates in the other two files?