如何放弃本地更改并从GitHub存储库中拉取最新版本

pod7payv  于 2023-05-12  发布在  Git
关注(0)|答案(8)|浏览(256)

我在我的机器上有一个目录,我存储了GitHub上的所有项目。我打开了其中一个,并在我的机器上进行了本地更改。项目被搞砸了,现在我想放弃我所做的所有更改,并从存储库中提取最新版本。我是GitHub的新手,使用Git Shell。
git pull命令是否足够?我是否需要执行任何额外操作来放弃本地所做的更改?有人能帮忙吗?

eqqqjvef

eqqqjvef1#

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相当于bash中的git pull && git push。我发现它仍然有帮助,所以它在我的bashrc。

2eafrhcq

2eafrhcq2#

运行以下命令

git log

从这里你将得到你的最后一个push commit哈希键

git reset --hard <your commit hash key>
mqkwyuun

mqkwyuun3#

如果您已经提交了更改,则必须提交revert changes
如果您还没有提交,只需执行干净的 checkout git checkout .

7qhs6swi

7qhs6swi4#

除了以上的答案,总有焦土法。

rm -R <folder>

在Windows shell中,命令为:

rd /s <folder>

然后,您可以再次 checkout 项目:

git clone -v <repository URL>

这肯定会删除任何本地更改并从远程存储库中拉取最新的更改。小心使用rm -R,因为如果你放错了路径,它会删除你的好数据。例如,definitely do notdo:

rm -R /

编辑:修正拼写并强调。

gc0ot86w

gc0ot86w5#

我搞砸了我的git本地master分支,本地master从远程本地转移。
要使git本地和master同步,请执行以下步骤。

  • git fetch --all
  • git reset --hard origin/master

如果你是在任何其他分支,你可以使用的分支名称如下

  • git reset --hard origin/<branch_name>

它是如何工作的?

  1. git fetch可以从远程下载最新的数据,而不需要尝试合并或重新建立任何基础。
  2. git reset将master分支重置为您刚刚获取的分支
    1.--hard选项更改工作树中的所有文件以匹配origin/master中的文件
    如果您希望在与远程分支同步之前保留本地更改。
    重置前创建备份分支
  • git checkout master(或本地分支名称)
  • git分支新分支名称
  • 按照上述步骤将接头重置为远程分支接头。
xkrw2x1b

xkrw2x1b6#

只是补充一下其他人说我会做下面的事情。如果你已经做了阶段性的修改,也就是说你已经在某个时候做了“git add”,我会这样做:

git reset HEAD <file_name>

如果你还没有声明要更改的文件,就像之前有人提到的那样:

git checkout .
bqucvtff

bqucvtff7#

我通常这样做:

git fetch "${remote-origin}" &&
git reset --hard @{u}

fetch从远程获取最新的提交(你可能只需要执行git fetchgit fetch origin),而reset设置本地分支引用与上游分支相同的提交。@{u}是“上游”的一个方便快捷方式。

fslejnso

fslejnso8#

把旧的回收站推倒。git push -u origin master --force
我认为--force也可以用来拉。

相关问题