我在我的机器上有一个目录,我存储了GitHub上的所有项目。我打开了其中一个,并在我的机器上进行了本地更改。项目被搞砸了,现在我想放弃我所做的所有更改,并从存储库中提取最新版本。我是GitHub的新手,使用Git Shell。git pull命令是否足够?我是否需要执行任何额外操作来放弃本地所做的更改?有人能帮忙吗?
git pull
eqqqjvef1#
git reset是你想要的,但我将添加一些其他答案没有提到的东西,你可能会发现有用的东西。git reset --hard HEAD将您的更改重置回本地存储库跟踪的最后一次提交。如果你做了一个提交,没有把它推到GitHub,并且想把它也扔掉,请参阅@absiddiqueLive的答案。git clean -df将丢弃您可能添加的任何新文件或目录,以防您想要丢弃它们。如果您还没有添加任何内容,则不必运行此操作。git pull(或者如果您使用GitHub客户端的git shell)git sync将从GitHub获取新的更改。
git reset --hard HEAD
git clean -df
git sync
**从未来编辑:**我前几周更新了我的git shell,注意到git sync命令在默认情况下不再定义。需要说明的是,输入git sync相当于bash中的git pull && git push。我发现它仍然有帮助,所以它在我的bashrc。
git pull && git push
2eafrhcq2#
运行以下命令
git log
从这里你将得到你的最后一个push commit哈希键
git reset --hard <your commit hash key>
mqkwyuun3#
如果您已经提交了更改,则必须提交revert changes。如果您还没有提交,只需执行干净的 checkout git checkout .
git checkout .
7qhs6swi4#
除了以上的答案,总有焦土法。
rm -R <folder>
在Windows shell中,命令为:
rd /s <folder>
然后,您可以再次 checkout 项目:
git clone -v <repository URL>
这肯定会删除任何本地更改并从远程存储库中拉取最新的更改。小心使用rm -R,因为如果你放错了路径,它会删除你的好数据。例如,definitely do notdo:
rm -R /
编辑:修正拼写并强调。
gc0ot86w5#
我搞砸了我的git本地master分支,本地master从远程本地转移。要使git本地和master同步,请执行以下步骤。
如果你是在任何其他分支,你可以使用的分支名称如下
它是如何工作的?
xkrw2x1b6#
只是补充一下其他人说我会做下面的事情。如果你已经做了阶段性的修改,也就是说你已经在某个时候做了“git add”,我会这样做:
git reset HEAD <file_name>
如果你还没有声明要更改的文件,就像之前有人提到的那样:
bqucvtff7#
我通常这样做:
git fetch "${remote-origin}" && git reset --hard @{u}
fetch从远程获取最新的提交(你可能只需要执行git fetch或git fetch origin),而reset设置本地分支引用与上游分支相同的提交。@{u}是“上游”的一个方便快捷方式。
fetch
git fetch
git fetch origin
@{u}
fslejnso8#
把旧的回收站推倒。git push -u origin master --force我认为--force也可以用来拉。
git push -u origin master --force
--force
8条答案
按热度按时间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。2eafrhcq2#
运行以下命令
从这里你将得到你的最后一个push commit哈希键
mqkwyuun3#
如果您已经提交了更改,则必须提交revert changes。
如果您还没有提交,只需执行干净的 checkout
git checkout .
7qhs6swi4#
除了以上的答案,总有焦土法。
在Windows shell中,命令为:
然后,您可以再次 checkout 项目:
这肯定会删除任何本地更改并从远程存储库中拉取最新的更改。小心使用rm -R,因为如果你放错了路径,它会删除你的好数据。例如,definitely do notdo:
编辑:修正拼写并强调。
gc0ot86w5#
我搞砸了我的git本地master分支,本地master从远程本地转移。
要使git本地和master同步,请执行以下步骤。
如果你是在任何其他分支,你可以使用的分支名称如下
它是如何工作的?
1.--hard选项更改工作树中的所有文件以匹配origin/master中的文件
如果您希望在与远程分支同步之前保留本地更改。
重置前创建备份分支
xkrw2x1b6#
只是补充一下其他人说我会做下面的事情。如果你已经做了阶段性的修改,也就是说你已经在某个时候做了“git add”,我会这样做:
如果你还没有声明要更改的文件,就像之前有人提到的那样:
bqucvtff7#
我通常这样做:
fetch
从远程获取最新的提交(你可能只需要执行git fetch
或git fetch origin
),而reset设置本地分支引用与上游分支相同的提交。@{u}
是“上游”的一个方便快捷方式。fslejnso8#
把旧的回收站推倒。
git push -u origin master --force
我认为
--force
也可以用来拉。