gpt4 book ai didi

git - 如何一劳永逸地将git存储库重置为干净状态

转载 作者:太空狗 更新时间:2023-10-29 13:25:27 26 4
gpt4 key购买 nike

我不经常使用 git 或 linux 命令行,而且我似乎把它搞砸了很多。我是 Windows 用户,我使用 cygwin 来模拟该环境。

情况:

我跟踪了多个存储库,一个是我处理的,另外几个是我只读的。

有时,当我很长一段时间没有从他们那里 pull 出来时(一个超过 2k 提交在我之前)然后有时 git status 告诉我,分支已经分开了。我不知道这是怎么发生的,但我落后 2k 次提交,领先 1 次。由于某些文件导致冲突,无法解决,因此 pull 失败。

这给我留下了一个问题,我现在有一个我不能再从中提取的存储库,因为它有冲突。

所以我的问题是:我怎样才能有效地再次从该存储库中提取数据而不会遇到冲突?我不关心任何变化。

这是我每次搞砸时必须做的解决方案:

git log --max-parents=0 head # copy ID on bottom
git reset --hard <ID-you-have-copied>
git clean -f -d
git pull

这很愚蠢,我喜欢在一个命令中使用它。我知道 git 别名,但我不知道如何将命令 1 中的提交 ID 获取到命令 2 中。我也可以使用可以放在某个地方的 shell 脚本,这对我来说是这样的,但它应该是动态的,没有硬编码 ID。

看起来我必须重置那个不存在的错误提交后面的分支,然后我才能再次转发

有什么明显我遗漏的吗?

最佳答案

我不确定 git --max-parents=0 head 命令是什么。

但我想你可以简单地改为这样做(origin 和 master 可以替换为所需的远程和分支名称):

git fetch origin master
git reset --hard FETCH_HEAD
git clean -f -d

这会将当前分支指针和工作树重置为最新获取的提交(并以与您的命令相同的方式删除未跟踪的文件)。

注意:这会删除存储库中的所有本地更改,包括已提交和未提交的更改。 (虽然提交的更改仍然可以通过引用 git reflog 来恢复)

关于git - 如何一劳永逸地将git存储库重置为干净状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32696310/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com