git - 如果您一直在使用 git merge origin/master , git reset --soft origin/master 会失败吗?

标签 git

当我在工作中提交 PR 时,有时提交 1 次而不是 30 次会更干净(这都是虚荣)。所以通常我可能会这样做:

git add . && git merge origin/master
git commit -am "abc"
# make more changes
git add . && git commit -am "abc"
git merge origin/master

然后为了将事情变成一次提交,我可能会尝试:

git reset --soft origin/dev

问题是我感觉这在历史上重置得还不够远。因为我的 merge 提交。也许正确的唯一方法是:

sha="$(git merge-base --fork-point HEAD origin/master)"
git reset --soft "$sha"

但我感觉 merge-base 命令只会作为 origin/master 和我的分支之间的最新 merge 提交返回?

最佳答案

git reset

将当前头部重置为给定状态。

git reset --soft <commit>

将把头重置为给定提交的状态,或者默认为最后一次提交的状态。因此,如果您想让命令在下一次提交中执行,并且您知道上一次提交的哈希值,那么您可以运行上面的命令,但请确保传递正确的哈希值。

您可以通过浏览提交哈希值

git log

关于git - 如果您一直在使用 git merge origin/master , git reset --soft origin/master 会失败吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60101512/

相关文章:

git - 如何空运行 git push 来检查一个人是否具有对远程的写入权限?

部署时找不到 git-upload-pack

ruby-on-rails - Github 和 heroku 上的应用程序 : Ignore file on one but not the other

ruby-on-rails - 如何在 Ruby 中处理包含空格的文件名(在 Git Bash 中)

ruby-on-rails - 如何在 IDE Aptana Studio 中设置可见的 .gitignore?

bash - git 子模块 foreach 与 awk

git - 无法让 TeamCity 使用默认私钥向 GitHub 进行身份验证

git - 如何使用 dep 管理的开发 vendor 包?

ruby - 如何在我的 git hook 目录之外进行 cd

git 从存储库中删除文件,但将其保留在文件系统中