我做了一个git提交和随后的推送.我想更改提交消息.如果我理解正确,这是不可取的,因为有人可能在我进行此类更改之前从远程存储库中取出.如果我知道没有人拉过怎么办?
有没有办法做到这一点?
Die*_*Epp 1299
如果它是最近的提交,您可以简单地执行此操作:
git commit --amend
Run Code Online (Sandbox Code Playgroud)
这会使编辑器显示最后一次提交消息,并允许您编辑消息.(-m如果要删除旧邮件并使用新邮件,则可以使用.)
然后当你推动时,执行以下操作:
git push --force-with-lease <repository> <branch>
Run Code Online (Sandbox Code Playgroud)
或者您可以使用"+":
git push <repository> +<branch>
Run Code Online (Sandbox Code Playgroud)
或者您可以使用--force:
git push --force <repository> <branch>
Run Code Online (Sandbox Code Playgroud)
使用这些命令时要小心.
如果其他人将更改推送到同一分支,您可能希望避免破坏这些更改.该--force-with-lease选项是最安全的,因为如果有任何上游变化它将中止(
如果您没有明确指定分支,Git将使用默认的推送设置.如果您的默认推送设置为"匹配",则您可以同时销毁多个分支上的更改.
任何已经拉过的人现在都会收到一条错误消息,他们需要通过这样的方式更新(假设他们自己没有做任何更改):
git fetch origin
git reset --hard origin/master # Loses local commits
Run Code Online (Sandbox Code Playgroud)
使用时要小心reset --hard.如果您对分支进行了更改,那么这些更改将被销毁.
被破坏的数据实际上只是旧的提交消息,但--force不知道,并且也会愉快地删除其他数据.所以想到--force"我想破坏数据,我确切知道哪些数据被破坏了." 但是当提交被破坏的数据时,您通常可以从reflog中恢复旧的提交 - 数据实际上是孤立的而不是被破坏的(尽管孤立的提交会被定期删除).
如果你认为你没有破坏数据,那就远离--force...... 可能会发生坏事.
这就是为什么--force-with-lease有点安全.
Man*_*ava 411
说啊 :
git commit --amend -m "New commit message"
Run Code Online (Sandbox Code Playgroud)
然后
git push --force
Run Code Online (Sandbox Code Playgroud)
Jin*_* Li 224
聚会可能会迟到,这是我在这里看不到的答案.
步骤1:git rebase -i HEAD~n为最后一次n受影响的提交做交互式rebase .
git会弹出一个编辑器来处理这些提交,请注意这个命令:git rebase -i HEAD~3这正是我们所需要的.
第二步:改变pick来r为您要更新的味精这些提交.保存并关闭编辑器.
步骤3:在以下提交文件中,根据需要更新提交消息
Step4:在所有提交后更新msgs.您可能想要r更新遥控器.
Abd*_*wan 41
在控制台中使用这两个步骤:
git commit --amend -m "new commit message"
Run Code Online (Sandbox Code Playgroud)
然后
git push -f
Run Code Online (Sandbox Code Playgroud)
完成:)
Ste*_*ner 19
应该注意的是,如果你使用多个push --force引用,它们将被修改为结果.确保注意git repo配置的位置.幸运的是,通过指定要更新的单个分支,有一种方法可以稍微保护进程.从git手册页中读取:
请注意, - force适用于所有被推送的引用,因此使用它将push.default设置为匹配或使用远程配置的多个推送目的地.*.push可能会覆盖当前分支以外的引用(包括本地引用)严格落后于他们的远程对手).要强制推送到一个分支,请使用refspec前面的+来推送(例如git push origin + master强制推送到主分支).
Den*_*any 14
确保您在正确的分支上进行更改
git checkout
Run Code Online (Sandbox Code Playgroud)
#确保您在正确的分支上进行更改以确保:
git checkout branchname
Run Code Online (Sandbox Code Playgroud)
然后
git commit --amend -m "new message"
Run Code Online (Sandbox Code Playgroud)
然后推
git push --force
Run Code Online (Sandbox Code Playgroud)
命令1.
git commit --amend -m "New and correct message"
Run Code Online (Sandbox Code Playgroud)
然后,
命令2.
git push origin --force
Run Code Online (Sandbox Code Playgroud)
另一种选择是创建一个额外的“勘误提交”(并推送),它引用包含错误的提交对象——新的勘误提交还提供了更正。勘误提交是一种没有实质性代码更改但有重要提交消息的提交 - 例如,在自述文件中添加一个空格字符并使用重要提交消息提交该更改,或者使用 git option --allow-empty。它当然比变基更容易和更安全,它不会修改真实的历史记录,并且可以保持分支树干净(amend如果您要更正最近的提交,那么使用也是一个不错的选择,但是对于较旧的提交来说,勘误表提交可能是一个不错的选择提交)。此类事情很少发生,只需记录错误就足够了。将来,如果您需要在 git 日志中搜索某个功能关键字,则原始(错误)提交可能不会出现,因为原始提交中使用了错误的关键字(原始拼写错误)——但是,该关键字将会出现在勘误表提交中,它会将您指向有拼写错误的原始提交。这是一个例子:
$ git 日志
提交 0c28141c68adae276840f17ccd4766542c33cf1d
作者: 第一 最后
日期:2018 年 8 月 8 日星期三 15:55:52 -0600
勘误表提交:
本次提交没有实质性的代码更改。
提供此提交只是为了记录对先前提交消息的更正。
这涉及提交对象 e083a7abd8deb5776cb304fa13731a4182a24be1
原始错误提交消息:
将背景颜色更改为红色
更正(*更改突出显示*):
将背景颜色更改为*蓝色*
提交 032d0ff0601bff79bdef3c6f0a02ebfa061c4ad4
作者: 第一 最后
日期:2018 年 8 月 8 日星期三 15:43:16 -0600
一些临时提交消息
提交 e083a7abd8deb5776cb304fa13731a4182a24be1
作者: 第一 最后
日期:2018 年 8 月 8 日星期三 13:31:32 -0600
将背景颜色更改为红色
FWIW 在最简单的情况下,检查的答案是正确的。我只是想分享一下最近的经历。
这有效。
git commit --amend -m“这里有新消息”
git push --强制原点
测试人员能够第一次检查该分支,并且只有修改后的消息。
因此,在最简单的情况下(单个开发人员和/或知道没有人获取/拉取或签出分支)就足够了。
git commit --amend
Run Code Online (Sandbox Code Playgroud)
然后在当前窗口中编辑和更改消息。在那之后
git push --force-with-lease
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
490231 次 |
| 最近记录: |