gpt4 book ai didi

git - 解决我们删除的 git rebase

转载 作者:行者123 更新时间:2023-12-03 16:23:40 30 4
gpt4 key购买 nike

我有一个文件说 a.java 我已经修改过。

与此同时,在我将更改推送到 master 之前,另一位开发人员删除了该文件(基本上重命名了该包)。

现在当我重新调整我的更改时,我看到

Unmerged paths:
deletedbyus: a.java

现在因为我想保留更改,我做了..我试过 git add a.java 但它似乎不起作用我仍然看到
Unmerged path:
deltedbyus: a.java

如果我执行 git rm 或 rm,该文件将被暂存,但它会显示为已删除,从而将文件全部删除。

在我的更改完好无损的情况下恢复文件的正确方法应该是什么。

最佳答案

假设您在 master分支,别人推送了a.java的包变更文件到 master而你现在正在做 git rebasemaster提交更改后的分支,让我们澄清它的确切含义:

在这种情况下,git 正在重置 HEAD您的 master分支到远程 origin/master 之一分支。然后 git 会实际获取您的每个提交,并在新主人的 HEAD 之上重写它们。 .

实际上,它们是您正在重写的提交,但从 git 的角度来看,它们是它们的更改,因为它们属于分支分支,因此我们的变化)。

在这种情况下,当 git 告诉你 deletedbyus这意味着在提交git正在重写时,该文件再次存在,因为它已经在我们的分支中(被我们)删除了,但是我 (git) 应该如何处理对不再存在的文件的更改? 有人故意删除了它,我 (git) 无法在没有确认的情况下再次创建文件(这确实是正确的)。

那么,您应该怎么做才能解决这种情况?实际上,您应该将您的更改(在 rebase 期间从 git 的角度来看是他们的更改)包含在文件现在存在的位置(在新包上,假设您要保留包更改)。一旦你这样做了,你应该这样做

# Manually carry the changes you made to 
# file/on/old/package/a.java
# to file/moved/to/new/package/a.java

git add file/moved/to/new/package/a.java # To confirm your changes
git rm file/on/old/package/a.java # To confirm deletion
git rebase --continue # To continue with your rebase

但是,您对文件进行了哪些更改?你可以用 git diff HEAD:file/moved/to/new/package/a.java file/on/old/package/a.java 看到它

关于git - 解决我们删除的 git rebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56028940/

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