问题标签 [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.
git - Git - 修改后的提交是否持续存在?
在我的 Git 分支上,我创建了一个提交并推送。后来,我添加了对索引的更改, used git commit --amend
,然后git push -f
. 我的新提交覆盖了我分支上本地和远程的第一个提交。
此时,我希望(或希望)原始提交不再存在,或者至少存在(可能在 reflog 中)但不再有父提交,因此,一旦我运行 GC,它将不复存在. 但是,提交似乎仍然存在,并且其父级仍然完好无损。(在这种情况下,我发现它的方式是通过 Jira,它将我链接到我在 github 上的覆盖提交)
为什么呢?它将如何被删除?这是否意味着,每当我不小心将密码推送到 GitHub,然后使用git commit --amend
or git reset
,然后git push -f
,提交实际上永远不会真正被删除?
git - 如何让 Git 警告我更改推送的提交?
tl; dr:提交某事,推送该内容,修改该提交并尝试再次推送而不使用--force
失败。当我尝试更改“已发布的提交”时,如何设置 Git 以便告诉它?
我使用 Git 已经有一段时间了,它仍然是我遇到过的最好的事情之一(软件方面):它完全支持我开箱即用的方式。就在昨天,我做了一件愚蠢的事情:我提交了一些东西,将其推送到我的遥控器,离开了几分钟,当我回来时,我注意到我在添加后更改了其中一个文件,因此提交是不完整。像往常一样,我曾经git commit --amend
解决这个小问题。
我工作了几个小时,并决定是时候再做一个了git push
。令我沮丧的是,git 拒绝这样做并阅读消息,向后滚动几千行我看到了我所做的并且知道发生了什么。远程基本上只不过是一个私人的异地备份,没有其他人使用它来推送或拉取。所以我没有遇到任何人使用git push --force
. 由于我不希望在多用户环境中发生这种情况(清理我的历史记录或强制推送),我考虑了如何在未来防止这种情况发生:Git 可以发出清晰可见的警告,甚至可能要求我输入某物。我会注意到并可能决定不修改。
所以,问题是:我如何配置 Git 来警告我修改已经推送的提交?或更笼统地说:如何配置 Git 以警告我更改已发布的历史记录?
编辑#1(约 6 小时后):不幸的是,我没有足够的信心尝试自己实现这一点,但也许它可以帮助某人帮助我:) 我认为由于--amend
只影响最新的提交,这就足够了有一个预提交挂钩来检查我正在尝试修改的提交的哈希值,并将当前/最新提交推送到远程。例如,目前我b45025a...
在本地机器上获得了对 master 的最新提交,我推送了它并cat .git/refs/remotes/<remote-name>/master
给出了b45025a...
。那么,检查相应的远程分支是否与我现在尝试修改的提交相同?
在写这篇文章之前,我问了谷歌并简要查看了我在这里找到的问题,但似乎没有什么适合(选择):
git - 使用修改提交进行差异
我想知道是否有可能显示两个提交之间的差异是什么之一?换句话说,git 是否将修改后的提交保存在某个地方的历史记录中?
git - 在 Git-Tower 中修改过去的提交信息
在Git-Tower中将提交消息be390538
从“ A ”更改为“ 6 ”
git - 如何在特定提交上将修改后的提交推送到远程 git 存储库
我已经在我的仓库中编辑了一些文件并推送它们。
经过其他一些工作,我注意到我保留了一行评论。
所以,我不想为它创建一个新的提交,我想在上一次提交中更改它(不是最后一次提交)。
我认为我可以使用提交 ID,但我不知道 Git 如何或可能不容忍此功能。
git - git 我忘记在提交和推送之前编辑一行
我决定将一个库集成到我的代码中。我添加了库,并更改了几行代码以开始实现它。它可以编译,所以我提交并推送到 repo。
我后来才意识到我错过了仍然在旧代码上的一行。我给它一个谷歌搜索并找出关于git commit --amend
,对我来说幸运的是,没有其他提交。我以为我所要做的就是修复代码行、git add
文件、,git commit --amend
最后修复git push
到 repo,但 git 告诉我
![rejected] master -> master(非快进)提示:更新被拒绝,因为您当前分支的尖端落后
我觉得这很奇怪,因为我正在进行最新的提交,如果我git reset -soft HEAD~1
回到与 repo 保持一致,除了我已经更改的单行代码。
我做错了吗?我真的不想只为这应该是最后一次提交的一部分的单行代码进行全新的提交。
git - Git - Difference between amend and squash commands
What is the difference between amend and squash commands? I tried both and found that both are doing the same for proper management.
git - 我可以从新的本地分支修改对主分支的提交吗?
我最近将一个文件提交到我工作存储库的主分支。
然后我创建了一个新的本地分支来处理其他事情,但意识到我在原始提交中遗漏了一些东西。我在新分支中进行了更改。git commit --amend 会起作用,还是我需要重新提交?我是否正确假设 git commit --amend 只是从我的新本地分支中的新文件修改 git 上的文件
git - 试图修改提交并推送到远程
我有一个本地存储库,我在其中放置了一个文件“注释”,我在其中保留了一些关于我自己的观察和关注的文本。当我提交并推送到远程仓库时,我必须删除该文件。在我最初提交之前,我运行了git rm --cached notes
,但这显然不起作用,因为在我推送之后,注释文件出现在 github 上。
所以我在本地所做的rm
再次运行(这次它以某种方式工作)并执行一个
git commit --amend
然后git show --stat --oneline HEAD
我注意到注释已被删除。
但是现在为了推送,我必须将远程更改合并到我的本地仓库中,因为
更新被拒绝,因为您当前分支的尖端位于其远程分支的后面。
所以我运行了一个拉,但这也失败了:
冲突(修改/删除):在 HEAD 中删除并在 5bfdf 中修改的注释......
我需要做什么才能在本地和远程从该提交中简单地删除注释文件?
git - 提交被推送到远程分支后如何更改提交内容?
我需要更改一个我已经推送但我不想进行新提交的文件,所以我尝试修改。但是当我尝试将更改推送到远程分支时,它给了我一个错误。我需要做推力还是其他什么?我是唯一一个在这个项目上工作的人,所以没有人会拉这个分支(我可以使用修改)。
谢谢。