0 git branch git-push git-amend git-commit
我有一个feature名为的分支featureA,我是唯一正在并将接触该分支直到它合并到master分支的开发人员。
我的 git 命令历史记录是:
但它似乎没有推送到远程存储库。
git status输出:您的分支 和origin/featureA已经出现分歧,并且分别有 1 个和 1 个不同的提交。(用于git pull将远程分支合并到您的分支中)
git diff表明:我的featureA分支将被合并到master分支,所以我不想破坏历史。
我经历了几个线程(建议git pul --rebase,git reset --hard等等),但仍然不清楚什么是最好的解决方案。
我不介意解决方案将处于哪种状态。如果需要,我不介意返回到之前的推送/提交并再次将新更改作为新提交推送,因为这只是单行代码更改。
我感谢您的帮助。
发生这种情况的原因很简单:git commit --amend这是一个谎言。大多数时候这是一个有用的谎言,但它仍然是一个谎言。更改任何现有的 Git 提交实际上是不可能的,所以git commit --amend不要这样做。
相反,在您自己的本地存储库中git commit --amend进行新的和改进的替换提交,将旧提交“推开”。旧的(坏的)提交继续存在\xe2\x80\x94一段时间;最终,如果您不回收它(并且没有理由您应该回收它),Git 将真正删除它。
因为您的本地存储库是与其他存储库(“远程”)不同的存储库,并且“我们应该使用哪些提交”的这种更改仅在此时在本地发生,所以您的分支和他们的分支确实存在分歧。
\n如果您有权限 \xe2\x80\x94Git 本身始终会授予权限,但许多托管站点会剥夺它(在各种条件下)\xe2\x80\x94您可以使用将git push --force新的和改进的提交发送到其他 Git 软件正在使用远程存储库。这种“强制推送”告诉他们的 Git 软件:我知道这个新提交会丢弃一些以前的提交。无论如何都要这样做,尽管放弃一些以前的提交通常是一个非常糟糕的主意。 因为您非常确定您确实想要丢弃提交\xe2\x80\x94,所以它是您“修改”的提交,并且您不希望它再次返回\xe2\x80\x94,所以可以安全地告诉他们这一点。只要非常确定这是您要丢弃的提交:
git fetchgit status仍然显示“分歧”和“1 次提交”:这是您的“修改后”提交与原始提交的比较然后使用远程名称 ( ) 和分支名称运行git push --forceor 。git push --force-with-leaseoriginfeatureA
| 归档时间: |
|
| 查看次数: |
2059 次 |
| 最近记录: |