我有一个文件说 a.java 我已经修改过。
与此同时,在我将更改推送到 master 之前,另一位开发人员删除了该文件(基本上重命名了该包)。
现在当我重新调整我的更改时,我看到
Unmerged paths:
deletedbyus: a.java
Run Code Online (Sandbox Code Playgroud)
现在因为我想保留更改,我做了..我试过 git add a.java 但它似乎不起作用我仍然看到
Unmerged path:
deltedbyus: a.java
Run Code Online (Sandbox Code Playgroud)
如果我执行 git rm 或 rm,该文件将被暂存,但它会显示为已删除,从而将文件全部删除。
在我的更改完好无损的情况下恢复文件的正确方法应该是什么。
假设你是master
分支,而别人推的包更改的a.java
文件,master
而现在你正在做git rebase
上master
提交你的修改后的分支,让我们澄清一下它究竟是指:
在这种情况下,git 正在将HEAD
您的master
分支重置为远程origin/master
分支之一。然后 git 会实际获取你的每一个提交,并在新的 master 的HEAD
.
其实他们是你的提交正在被改写,但是从Git的时候,他们是改变他们,因为他们属于Git是在你当前分支上衍合(实际不更改的分支,但现在我们的分支,因此我们的更改)。
在这种情况下,当 git 告诉你deletedbyus
这意味着在提交时 git 正在重写,该文件再次存在,因为它已经在我们的分支中(被我们)删除了,但是我 (git) 应该如何处理对 a 的更改不再存在的文件?有人故意删除了它,我 (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
Run Code Online (Sandbox Code Playgroud)
但是,您对文件进行了哪些更改?你可以看到它git diff HEAD:file/moved/to/new/package/a.java file/on/old/package/a.java
归档时间: |
|
查看次数: |
826 次 |
最近记录: |