同事解决冲突删错我的文件,当我git pull的时候为什么我本地文件直接被删了?

我怎么找回我写的文件,是不是以后用git fetch比较好,

阅读 4k
3 个回答

首先搞清楚你文件消失的原因。

  1. 假如昨天你们完成工作以后,master 分支上有 a b c 三个文件,其中 c 文件是你提交的。
  2. 新的一天你们开始工作,你俩拉取主分支文件到本地。现在你们的文件都一样,都是 a b c。
  3. 然后你同事发现 c 文件有 bug,遂经过某些操作,然后删除掉。提交了这个 commit ,现在 master 只有 a b 两个文件。
  4. 然后你相同一下主分支,于是你 pull 了远程 master 分支。
  5. 此时你本地的分支肯定要和远程的保持一致,所以你本地的文件消失。

解决方法:

  1. 直接将本地代码回退到 pull 之前的那个状态。
  2. 使用 git log 查看 commit 信息。 假设下图 8.8 号是你同事提交代码之前的 commit,也就是昨天你们都拥有 a b c 三个文件的状态。

image.png

  1. 复制这个日期的 commit id
    image.png
  2. 执行 git reset --soft xxxxxx(commit id
    image.png
    下面是执行结果:
    image.png
  3. 此时执行 git stash 将你同事的修改暂存到一个临时区域。(并没有被删除 image.png
  4. 此时的状态 你会发现 c 文件回来了。文件找到了,此时可以和你同事交流了。
    image.png
  5. 剩下的问题你自己就可以解决了。

git reflog
git reset --hard xxxx

用git log -- [file_path]或者git log --full-history -- [file_path]来找到删除这个文件的提交,恢复文件用git checkout [commit_hash]^ -- [file_path],用git fetch确实更安全,只会下载远程更改但不会自动合并,用git fetch然后git merge: 这样你可以先查看更改,然后再决定要不要合并。

推荐问题
宣传栏