如何丢弃本地更改并从GitHub存储库中提取最新信息

Cod*_*ess 47 git github

我的机器上有一个目录,我存储了GitHub的所有项目.

我打开了其中一个并在我的机器上进行了本地更改.

该项目搞砸了,现在我想丢弃我所做的所有更改,并从存储库中提取最新版本.

我对GitHub相对较新(使用Git Shell).

git pull足够吗?

我是否需要做额外的事情以丢弃在本地进行的更改?

Cod*_*ody 69

git reset是你想要的,但我会添加一些额外的东西你可能会觉得有用,其他答案没有提到.

git reset --hard HEAD将您的更改重置为您本地仓库已跟踪的上次提交.如果你做了一个提交,没有把它推到GitHub,并且想把它扔掉,请参阅@absiddiqueLive的回答.

git clean -df将丢弃您可能添加的任何新文件或目录,以防您想要丢弃它们.如果您尚未添加任何内容,则无需运行此操作.

git pull(或者如果你在GitHub客户端使用git shell)git sync将从GitHub 获得新的更改.

从未来的方式编辑: 我在另一周更新了我的git shell,并注意到git sync默认情况下不再定义该命令.对于记录,键入git sync等同git pull && git push于bash.我发现它仍然有用,所以它在我的bashrc中.


abs*_*ive 16

运行以下命令

git log
Run Code Online (Sandbox Code Playgroud)

从这里你将得到你的最后一次推送提交哈希键

git reset --hard <your commit hash key>
Run Code Online (Sandbox Code Playgroud)


Gen*_*ham 10

如果您已提交更改,则必须还原更改.

如果你还没有提交,只需要做一个干净的结账 git checkout .

  • 恢复时要小心.简单地重置通常会更好.Revert创建一个新的提交,删除或添加先前提交中的内容.但是,当您稍后尝试与另一个分支合并时,这些删除和"添加回"可能会导致问题,因为它们被视为更改.例如,如果您不小心在分支A中进行了更改,则还原更改然后在分支B中进行相同的更改,推送分支B后跟分支A,分支A可能最终删除您在分支B中所做的更改. (6认同)

小智 8

我弄乱了我的 git local master 分支,其中本地 master 是从远程本地转移的。

要使 git local 和 master 同步,请按照以下步骤操作。

  • git fetch --全部

  • git reset --hard origin/master

如果您在任何其他分支,您可以使用分支名称,如下所示

  • git reset --hard origin/<分支名称>

怎么运行的?

  1. git fetch 从远程下载最新版本,而不尝试合并或变基任何内容。

  2. git reset 将 master 分支重置为您刚刚获取的内容

  3. --hard 选项更改工作树中的所有文件以匹配 origin/master 中的文件

如果您想在与远程分支同步之前保留本地更改。

重置前创建备份分支

  • git checkout master (或本地分支名称)
  • git 分支 新分支名称
  • 按照上述步骤将头重置为远程分支头。


Sco*_*ttM 5

除了上面的答案,还有焦土法。

rm -R <folder>
Run Code Online (Sandbox Code Playgroud)

在 Windows shell 中,命令是:

rd /s <folder>
Run Code Online (Sandbox Code Playgroud)

然后你可以再次签出项目:

git clone -v <repository URL> 
Run Code Online (Sandbox Code Playgroud)

这肯定会删除任何本地更改并从远程存储库中提取最新的。使用 rm -R 时要小心,因为如果您输入错误的路径,它会删除您的好数据。例如,绝对不要这样做:

rm -R /
Run Code Online (Sandbox Code Playgroud)

编辑:修复拼写并增加重点。

  • 坦白说,我很尴尬我需要经常依靠这个 (2认同)