【发布时间】:2020-09-08 11:36:37
【问题描述】:
我是 GIT 的新手,我正在努力理解它的概念。因此,我有一些基本问题。请原谅我的天真。我搜索了互联网,但最终变得更加困惑。以下是我的问题:-
$ git log -n 10 --oneline
170daa2 (HEAD -> master, origin/master, origin/HEAD) Revert "Undo Pull request from feature branch test"
e3f0714 Revert pull request test This reverts commit c6b3b1a
c6b3b1a Revert commit
b72e92e Undo Pull request from feature branch test
3077d10 (origin/feature/test1, feature/test1) First commit
1ba77e8 Updated test1
8fceee2 Revert Commit 1
ecddd63 Test for remote status
6c5a094 Cherry Pick 1
3b66732 Fixed conflict
$ git log -n 6 --oneline feature/test1
3077d10 (origin/feature/test1, feature/test1) First commit
1ba77e8 Updated test1
8fceee2 Revert Commit 1
ecddd63 Test for remote status
6c5a094 Cherry Pick 1
3b66732 Fixed conflict
从上面看到,当我在
master branch上执行git log时(上面的第一个输出)为什么它还显示我的提交feature分支 (feature/test1) 以及我主人的分支? 当我明确指定 git log 中的分支,然后显示与之相关的提交 只有分支,对吧?是不是因为git会显示所有提交 (不考虑任何分支)按时间顺序组合在一起 ?谁能解释一下。-
如何删除
remote分支上的提交? -
假设我在feature分支上创建了2commits并通过拉动将它们合并到remote master请求。
现在,我意识到那些是错误的提交,我想清理 并回滚到我的远程主机(以及 local master) 分支在拉取请求被批准之前。一世 知道我可以使用:git reset --hard HEAD~2
摆脱本地master上的这两个提交 分支,但是我如何从 remote master 中摆脱它们 分支,因为它们已经合并到 master ?是reset用于本地提交而revert用于远程提交吗?这两个命令有什么区别?以及如何解决我的问题 -- 做,我需要先在本地
resetmaster 然后“强制推送” 通过运行此状态到远程主机:git push origin +master?这是正确的方法吗? 或 - 我是否使用
git revert -m 1 <commit-hash>撤消提交 远程分支,需要注意的是恢复将回滚和 做出新的承诺。有没有办法在两个遥控器上回滚 和本地主分支而不进行新的提交?请 建议最佳方法。
- 做,我需要先在本地
由于我刚刚开始使用 git,因此我可能问了一个错误的问题。无论哪种方式,请原谅我的幼稚。 任何帮助表示赞赏。
【问题讨论】:
-
请问您能具体说明您想要做什么吗?我的意思是在您提供的示例中,您到底想实现什么? cz 你问了一个一般性的问题,如果你问一个一般性的问题,你会得到一个一般性的答案,如果你是初学者,那么我认为一般性的答案对你没有帮助。所以,如果你能具体化你的问题并明确你的目标,那就太好了。
-
@Alan- 我的远程 master 已通过拉取请求与来自我的功能分支的错误提交合并。我怎样才能将远程主机恢复到其早期状态。示例中的提交是我为测试所做的一些随机提交。
-
如果你想删除对远程分支的提交,那么你自己回答,如果你在同一个分支上,只需
git reset --hard <commit_hash>和git push --force