我在我的电脑上有一个目录,其中存储了来自GitHub的所有项目。我打开其中一个项目,并在本地进行了更改。该项目出现了问题,现在我想放弃我所做的所有更改并从存储库中拉取最新版本。我相对于GitHub是新手,使用Git Shell。
git pull
命令是否足够?
我需要额外做些什么来放弃本地所做的更改吗?
有人可以帮忙吗?
git reset
是您想要的,但我将添加一些其他答案没有提到但您可能会发现有用的东西。
git reset --hard HEAD
将您的更改重置回本地存储库跟踪的最后一次提交。如果您已经提交了但没有推送到GitHub,并且也想抛弃该提交,请参见@absiddiqueLive的答案。
git clean -df
会丢弃您可能添加的任何新文件或目录,以防您想要将这些内容抛弃。如果您没有添加任何内容,则无需运行此命令。
git pull
(或者如果您正在使用GitHub客户端的git shell)git sync
将从GitHub获取新更改。
来自未来的编辑:
我在几周前更新了我的git shell并注意到默认情况下不再定义git sync
命令。仅供参考,在bash中键入git sync
等同于git pull && git push
。我发现它仍然有帮助,因此将其加入了我的bashrc。
运行以下命令
git log
从这里,您将获得您的最后一次推送提交的哈希键。git reset --hard <your commit hash key>
如果您已经提交了更改,那么您需要撤销更改。
如果您还没有提交,请使用git checkout .
进行干净的检出操作。
我搞砸了我的git本地主分支,本地主分支偏离了远程本地分支。
为了使git本地和主分支同步,按照以下步骤进行:
git fetch --all
git reset --hard origin/master
如果你在其他分支上,可以像下面这样使用分支名称
它是如何工作的?
git fetch 从远程下载最新版本而不尝试合并或变基任何内容。
git reset 将主分支重置为刚才提取的内容
--hard选项将工作树中的所有文件更改为与origin/master中的文件相匹配
如果您想在与远程分支同步之前保留本地更改。
创建一个备份分支以备份
git pull
仍会从远程获取文件。我该如何在远程上为所有分支运行此重置? - Dan Dascalescurm -R <folder>
rd /s <folder>
git clone -v <repository URL>
这将绝对地移除所有本地更改,并从远程仓库拉取最新的内容。请注意,rm -R 命令会删除您的好数据,如果您传入了错误的路径,请小心使用。例如,绝对不要执行以下命令:
rm -R /
编辑:为纠正拼写并强调内容。
在其他人说的基础上,我会做以下操作。如果您已经暂存了更改,也就是说您已经在某个时候执行了 "git add",那么我会执行:
git reset HEAD <file_name>
git checkout .
我通常用以下方式实现:
git fetch "${remote-origin}" &&
git reset --hard @{u}
fetch
从远程获取最新的内容(你可以直接执行 git fetch
或者 git fetch origin
),而 reset 则将本地分支设置为与上游分支引用相同的提交。@{u}
是一个方便的快捷方式,表示 "upstream"。
推送旧仓库。
git push -u origin master --force
我认为 --force
对于拉取也是有效的。
git pull
是 git fetch
和 git merge FETCH_HEAD
的简写。fetch
命令有一个 --force
选项,但它与覆盖当前分支上的修改并无关系。因此,虽然在技术上 git pull --force
是合法的,但它并不会做你认为它会做的事情。 - JDB
git status
应该会有提示。可以参考这个问题:https://dev59.com/VloV5IYBdhLWcg3wmPzp - Codygit clean -fd
。 - Josiah Yoder