强制覆盖本地文件与什么's在原始回购?

我想获取存储库中的最新文件,并覆盖我在本地拥有的文件。我如何使用git客户端做到这一点?

353002 次浏览

如果你只想覆盖一个文件:

git fetch
git checkout origin/master <filepath>

如果你想覆盖所有更改的文件:

git fetch
git reset --hard origin/master

(这假设你正在本地处理master,并且你想要对原点的master进行更改——如果你在分支上,则将其替换。)

完全同步的任务很少:

  • 恢复的变化
  • 删除新文件
  • 从远程存储库获取最新信息

git重置头——硬

Git clean -f

Git拉源主

否则,我更喜欢的是,我可以用远程使用的最新版本创建一个新的分支:

git checkout origin/master -b <new branch name>

Origin是我的远程存储库引用,master是我考虑的分支名称。这些可能和你的不一样。

最简单的版本,假设你工作在你想要的文件所在的同一个分支上:

git checkout path/to/file

我经常这样做,所以我已经将别名设置为gc='git checkout'

这招对我很管用:

git reset HEAD <filename>

我相信你要找的是“git restore”。

最简单的方法是在本地删除文件,然后对该文件执行git restore命令:

$ rm file.txt
$ git restore file.txt

如果你想用特定的分支覆盖所有的本地更改,那么你可以这样做

git reset --hard origin/feature/branchname

特性/ branchname→是我的分支名称,我替换了我的所有本地更改

我打算把所有的变化从feature/branchname分支和提交到我正在工作的分支,我的分支的名称是'mybranch'。然后我首先替换我的本地更改,也就是我已经推送到我的分支mybranch,然后我必须将这个命令推送到我的分支。强制推送命令为

git push --force

它会把我从'feature/branchname'分支得到的任何更改推到'mybranch'。

在遇到这个问题后,我终于尝试了git checkout --force <branch>,它确实做到了。