当我执行 Git Push 时,代码消失了
Code is disappearing when I do a Git Push
我在一个由 5 名开发人员组成的小团队中工作,当我用我的一个更改进行 git 推送时,最后 10 天的代码对其他开发人员来说消失了。我的什么都没发生。作为一个团队,我们无法找到此问题的根本原因。
回顾提交历史,没有显示过去 10 天的任何推送。有没有人知道这可能是什么根本原因以及如何解决?
这些是我遵循的步骤:
git commit(保存本地更改)git pull(这不是拉取确切的更改在远程。我的本地与远程不同步。所以我做了“git reset --hard origin/master”,后来也没有用我做了“git clean -f”。之后,我又做了一个 git pull 并从远程获取了最新的代码,然后我做了一个 git 推.
现在我的同事做了一个 "git pull"
git reset --hard origin/master
是这里的罪魁祸首。将该命令读作 "reset the index, discard all modified files, check out all the files at origin/master, and move the current branch head to the commit at origin/master." 听起来您遇到了合并冲突,您用一把有点太锋利的刀来处理它。
好消息是,只要您拥有在其中进行操作的原始存储库,您至少可以取回之前提交的任何文件。使用 git reflog
查找您提交的先前版本并使用 git reset --hard <commit hash>
。这将使您当前的分支恢复到开始之前的状态。
不,您需要将遥控器上的更改集成到您当前的更改中(您所做的是用遥控器上的更改替换本地更改。对此您有两个选择,git merge
和git rebase
:
首先获取以获取远程上的所有内容并更新您的远程引用。 (git pull
本质上是 git fetch
和 git merge
合并到一个命令中,认为它可以配置为变基)。提取是非破坏性的,允许您准确决定要如何处理问题。
如果您不介意合并提交和稍微混乱的历史记录,您现在可以 运行 git merge origin/master
并处理出现的任何冲突。然后你可以推送,你会是最新的。
如果您更喜欢直线历史,您可以 运行 git rebase origin/master
这将在 master head 之上重播您的不同提交。冲突可能发生在多个提交回复时,解决每个,阶段和 运行 git rebase --continue
恢复。
在这两种情况下处理冲突都有很好的文档,所以我不会在这里详述。
我在一个由 5 名开发人员组成的小团队中工作,当我用我的一个更改进行 git 推送时,最后 10 天的代码对其他开发人员来说消失了。我的什么都没发生。作为一个团队,我们无法找到此问题的根本原因。
回顾提交历史,没有显示过去 10 天的任何推送。有没有人知道这可能是什么根本原因以及如何解决?
这些是我遵循的步骤:
git commit(保存本地更改)git pull(这不是拉取确切的更改在远程。我的本地与远程不同步。所以我做了“git reset --hard origin/master”,后来也没有用我做了“git clean -f”。之后,我又做了一个 git pull 并从远程获取了最新的代码,然后我做了一个 git 推.
现在我的同事做了一个 "git pull"
git reset --hard origin/master
是这里的罪魁祸首。将该命令读作 "reset the index, discard all modified files, check out all the files at origin/master, and move the current branch head to the commit at origin/master." 听起来您遇到了合并冲突,您用一把有点太锋利的刀来处理它。
好消息是,只要您拥有在其中进行操作的原始存储库,您至少可以取回之前提交的任何文件。使用 git reflog
查找您提交的先前版本并使用 git reset --hard <commit hash>
。这将使您当前的分支恢复到开始之前的状态。
不,您需要将遥控器上的更改集成到您当前的更改中(您所做的是用遥控器上的更改替换本地更改。对此您有两个选择,git merge
和git rebase
:
首先获取以获取远程上的所有内容并更新您的远程引用。 (git pull
本质上是 git fetch
和 git merge
合并到一个命令中,认为它可以配置为变基)。提取是非破坏性的,允许您准确决定要如何处理问题。
如果您不介意合并提交和稍微混乱的历史记录,您现在可以 运行 git merge origin/master
并处理出现的任何冲突。然后你可以推送,你会是最新的。
如果您更喜欢直线历史,您可以 运行 git rebase origin/master
这将在 master head 之上重播您的不同提交。冲突可能发生在多个提交回复时,解决每个,阶段和 运行 git rebase --continue
恢复。
在这两种情况下处理冲突都有很好的文档,所以我不会在这里详述。