好吧,我好像把一些事情搞砸了。
直到最近,我曾经能够进行合并提交,然后推送到原点,而无需显示单独的提交。现在,我在管道中只能看到合并提交:
在此开始之前,仅手动提交被推送到原点(或至少显示为这样):
这是行为更改后的团队资源管理器(VS 2019 v16.6.5):
...这是我当地的分支机构历史:
看到变化了吗?
a13adadf这一切都是在我恢复提交、修复并重新发布之后开始的。现在我遇到了某种奇怪的分支效应,我不知道如何让事情回到之前的状态。(我尝试研究这个问题,但是在搜索与 相关的任何内容时,信噪比非常低merge commit。)
如何让我的存储库“忽略”(即停止显示)合并提交?
(注意:我是唯一参与此存储库的开发人员。)
我打算在 dev 分支中测试一些东西(只是版本号 0.1 --> 0.2),所以我提交了更改,但我没有权限直接将其推送到 dev,然后我创建了一个功能分支,我发现数字已经是0.2,然后我将其更改为0.3并推送此分支,然后创建一个合并请求将其合并到dev中。
我是 git 的新手,只是想知道将来如何防止这种混乱?推送被拒绝后如何恢复我的提交?
我将几个开发提交合并到我的存储库的主分支中,只是为了发现 GitAhead 在某个时候搞砸了主分支。
现在我尝试了 SO 上描述的各种方法来撤消这些提交(除了 master 上的合并之外没有其他提交)。这样master确实被重置到了早期版本。
但是,我仍然拥有无头分支中的完整合并历史记录(图像上的灰色路径):

我尝试恢复、重置分支等,但没有成功,唉!
如何完全删除提交(c518859ce4、7574f10f68)?
是否有一种简单的方法来撤消tortoisegit还原?
这里有更多信息:我刚刚提交了一个大型的多文件签入,之后我决定在大版本之前提交一个单独的小签到,以便更容易修改明天的大签入.
所以我提起登录tortoisegit,右键点击最后一次检查,然后选择"恢复".这解决了更改并删除了我工作目录中的一堆文件.我真正想要的是"重置"(回滚签到并按原样保留我的工作目录),而不是恢复(在我的工作目录中创建"撤销签入").
如何撤消我的恢复?
我已将dev分支(具有常量,有时不稳定的更改)合并到我们的主分支(我们存储已发布的稳定代码).我想将master分支恢复到之前的状态,就像从未发生与dev分支的合并一样(并且在将来我们合并dev分支时,我们现在将丢弃的所有更改将再次"合并").
这是主分支的当前状态,我希望它在HEAD上具有'professional-1.1.2'提交/标记.

我试过了:
$ git revert -n professional-1.1.2..HEAD
fatal: Commit 9167e846a387c793edbc089c7ab6bd9eb8260456 is a merge but no -m option was given.
$ git revert -n -m 1 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
$ git revert -n -m 2 professional-1.1.2..HEAD
fatal: Mainline was specified but commit 380169097f35d07466640bc0db1b639278cd25fa is not a merge.
Run Code Online (Sandbox Code Playgroud)
经过一些研究后,我认为更好的选择是做一个git reset --hard professional-1.1.2并git push --force作为Git的答案:如何忽略快进并将原点[branch]恢复到之前的提交?或者还原push'd git commit.其他开发人员在同一个办公室,他们永远不应该承诺任何东西(因为我不应该,但是......是的,我们没有每个分支的权限),所以告诉他们并做任何事都不是一个大问题需要采取的行动.
所以最后的问题是:git revert something或者git …
我正在看最近10次推进,我想退出其中的4个(不连续).
我怎样才能做到这一点?
在SVN中,这将是一个恢复变化并推回"撤消"更改的问题.不确定如何在Git中执行此操作.
我有初始状态的主分支:
touch file
git add file
git commit -m "initial"
Run Code Online (Sandbox Code Playgroud)
然后我做了一些改变:
echo "123" >> file
git commit -am "feature1"
Run Code Online (Sandbox Code Playgroud)
这确实属于一个功能分支,所以我分支了:
git branch TEST
Run Code Online (Sandbox Code Playgroud)
并恢复了主人的变化(我不知道这是否是最好的方法,但它做了当时需要的东西):
git revert <last commit hash>
Run Code Online (Sandbox Code Playgroud)
然后我在功能分支上做了一些更改:
git checkout TEST
echo "456" >> file
git commit -am "feature 1 continued"
Run Code Online (Sandbox Code Playgroud)
现在我在将 master 合并到它时遇到了问题。我想要的是能够将 master 中的所有未来更改合并到 TEST 分支并保留我的功能分支更改。
代码已经推送到远程。
我在一个分支上工作,我在几次提交中更改了文件A,现在我想从它恢复所有更改,以便文件A的状态与我第一次创建分支时的初始状态相同.实现这一目标的最简单方法是什么?
我对 RStudio 和 Git 很陌生,所以我想确保我正确理解我在做什么。
Git 文档说这git revert会创建一个新的提交。当我按下 RStudio 恢复按钮时,没有创建新的提交,它只是回到上次提交。对我来说,这似乎是一个git reset --hard. 我做错了什么吗?
我已经向我的本地分支做了几次提交estimation并将它们推送到远程分支estimation.
现在,我想完全删除最后3次提交.
我试着做git reset HEAD^,并git reset HEAD --hard3次,但是当我试图推动的变化,它抱怨不对齐头部尖.
我该怎么做?
编辑:
历史如下:
commit e572aab4e18
commit e21e7310bc4
commit 4f372a513da
commit 31a4ac607ae
commit a1a6e3f02dd
我想删除前4并返回commit a1a6e3f02dd并在同一HEAD上创建本地和远程分支.
git ×10
git-revert ×10
git-commit ×3
git-reset ×3
git-checkout ×1
git-merge ×1
github ×1
gitlab ×1
rstudio ×1
tortoisegit ×1