标签: git-amend

推送后修改提交

在我最近对已推送的存储库的提交中,我注意到我在文件中拼错了一个单词,现在想更改它。但是,我不想创建一个全新的提交。有没有办法修改我最新的提交并将其推送到我的存储库中,而无需重置、删除和推送?

过去我是这样做的:

git reset HEAD~1 --soft
git push -f
# correct the spelling
git add .
git commit -m "bug10 fix"
Run Code Online (Sandbox Code Playgroud)

有没有办法纠正文件的拼写,修改我最新的提交并推送,而不必重置,强制删除,然后重新提交?

我试过:

# fixed the file
git add .
git commit --amend --no-edit
git push
Run Code Online (Sandbox Code Playgroud)
 ! [rejected]        Nov21 -> Nov21 (non-fast-forward)
Run Code Online (Sandbox Code Playgroud)

git commit git-amend

13
推荐指数
1
解决办法
2万
查看次数

git commit --amend是如何工作的?

在独立的HEAD状态下看过GIT commit --amend.这个问题要求答案比需要的要复杂得多.我想了解git commit --amend在正常HEAD情况下​​的工作原理.

git git-amend git-commit

11
推荐指数
2
解决办法
3357
查看次数

更改特定提交的提交消息

注:类似的问题,因为这一个,但也有一些重要的变化.

在给定提交ID的情况下,我有以下函数来重写提交的日期:

rewrite-commit-date () {
    local commit="$1"
    local newdate="$2"
    newdate="$(date -R --date "$newdate")"
    echo ">>>> Rewriting commit $commit date: $newdate"
    git filter-branch --env-filter \
        "if test \$GIT_COMMIT = '$commit'
         then
             export GIT_AUTHOR_DATE
             export GIT_COMMITTER_DATE
             GIT_AUTHOR_DATE='$newdate'
             GIT_COMMITTER_DATE='$newdate'
         fi" &&
    rm -fr "$(git rev-parse --git-dir)/refs/original/"
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试实现类似的功能rewrite-commit-message来更改提交消息.我想要的是:

  1. 该函数rewrite-commit-message接受两个参数:和commit_id,和new_commit_message
  2. 没有必要知道旧的提交消息:commit_id知道哪个提交更改
  3. git commit --amend,因为这与旧提交有关(不一定与最近的提交有关)
  4. 不用担心重写历史和主回购:我在一个功能分支工作,我被允许这样做 git push -f
  5. 我想用filter-branch它,但我不知道如何:
    • 将更改应用于特定的承诺:将test在所使用的rewrite-commit-date功能是用来在env-filter,但我不会做env-filter在这里,因为我不希望改变有关提交环境中任何事物,但提交信息.
    • 如何强制提交消息?在 …

git git-amend git-commit git-rewrite-history

11
推荐指数
1
解决办法
3870
查看次数

如何撤消git中远程存储库的初始提交?

如果我的第一次提交错误,但推送到(当前是私有的)远程,我如何撤消远程提交?

我猜我可以修改然后推--force?

git git-push git-amend

10
推荐指数
2
解决办法
4636
查看次数

GIT在分离的HEAD状态下提交--amend

我知道修改旧GIT提交的正确方法是使用rebase --interactive,但为了清楚这些概念,我想了解当我做什么时会发生什么

  • git checkout <commit>
  • 改变文件中的内容
  • 将更改的文件添加到索引中
  • 然后 git commit . --amend

当我这样做时,它不是修改提交,而是从同一提交的PARENT分支新的提交.

这只是GIT的方式告诉我,我不能修改已经有子提交的提交吗?

git commit rebase git-amend git-commit

9
推荐指数
1
解决办法
1898
查看次数

Git - 修正和压缩命令之间的区别

修改和壁球命令有什么区别?我试过这两个,发现两者都在做同样的管理.

git git-amend squash git-squash

9
推荐指数
2
解决办法
2536
查看次数

git修改后git合并冲突 - "你的分支和'origin/master'分歧了"

这是发生的事情:

  1. 在最近提交给远程主人之后,我对我的本地仓库做了一个小小的改变
  2. 我添加git commit --amend并保留与HEAD相同的提交消息
  3. 我试着将回购推广给主人 git push

现在我明白了

On branch master
Your branch and 'origin/master' have diverged,
and have 1 and 1 different commit each, respectively.
  (use "git pull" to merge the remote branch into yours)
nothing to commit, working directory clean
Run Code Online (Sandbox Code Playgroud)

我想明白:

  1. 为什么会这样?
  2. 我该怎么做才能防止这种情况发生?
  3. git修改后如何调和master和local?

git git-amend merge-conflict-resolution

9
推荐指数
1
解决办法
1993
查看次数

如何在终端中的`git commit --amend`之后确认更改?

当我写作时,git commit --amend我会得到某种编辑器,我可以在其中更改此提交的名称.如何使用键盘确认并保存我的更改?

git terminal git-amend git-commit

8
推荐指数
4
解决办法
1万
查看次数

通过修改提交进行差异化

我想知道是否有可能在两个提交之间显示差异,其中一个是修改?换句话说,git save修改了历史记录吗?

git git-amend

8
推荐指数
1
解决办法
1617
查看次数

如果我推送修改后的提交,它将创建一个新的提交

我已经在远程分支上推送了一个提交,现在我想改变它的内容,所以我尝试了git修改.如果执行git status,则表示两个分支分别具有1个和1个不同的提交.现在,如果我使用相同的提交消息推送修改后的提交将添加新提交,或者它将更改我推送的最后一次提交?

git push git-amend

7
推荐指数
1
解决办法
3061
查看次数