我如何将我的本地分支重新设置为远程存储库的分支类似?

我试过:

git reset --hard HEAD

但 git 状态声明我有修改的文件:

On branch master
Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
      modified:   java/com/mycompany/TestContacts.java
      modified:   java/com/mycompany/TestParser.java

当前回答

使用下面的命令. 这些命令将从本地 git 删除所有未追踪的文件

git fetch origin
git reset --hard origin/master
git clean -d -f

其他回答

唯一的解决方案,在所有情况下工作,我已经看到的是删除和分解. 也许有另一种方式,但显然,这种方式不会留下旧状态的机会,所以我更喜欢它。

REPO_PATH=$(pwd) && GIT_URL=$(git config --get remote.origin.url) && cd .. && rm -rf $REPO_PATH && git clone --recursive $GIT_URL $REPO_PATH && cd $REPO_PATH

* 假设您的.git 文件不受腐败

我需要做(答案中的解决方案):

git fetch origin
git reset --hard origin/master

其次是:

git clean -f

删除本地文件

查看哪些文件将被删除(没有实际删除):

git clean -n -f

这里是一个自动化最受欢迎的答案的脚本... 查看 https://stackoverflow.com/a/13308579/1497139 为支持分支的改进版本

#!/bin/bash
# reset the current repository
# WF 2012-10-15
# see https://stackoverflow.com/questions/1628088/how-to-reset-my-local-repository-to-be-just-like-the-remote-repository-head
timestamp=`date "+%Y-%m-%d-%H_%M_%S"`
git commit -a -m "auto commit at $timestamp"
if [ $? -eq 0 ]
then
  git branch "auto-save-at-$timestamp" 
fi
git fetch origin
git reset --hard origin/master

确保远程存储库的起源,并且您对分支_name感兴趣:

git fetch origin
git reset --hard origin/<branch_name>

此外,您将重新设置现有起源分支到头部。

git fetch origin
git reset --hard origin/HEAD

它是如何工作的:

git fetch 起源从远程下载最新的,而无需尝试合并或拆除任何东西。

然后 git 重新设置将 <branch_name> 分支重新设置为您刚刚抓住的。 --hard 选项将您的工作树中的所有文件更改以匹配原始/branch_name 中的文件。

这个问题在这里混合了两个问题:

如何重新设置一个地方分支到远程是如何清除你的排序区域(也许是工作目录),所以 git 状态说什么不承诺,工作目录干净。

一个停止的答案是:

git fetch --prune (可选) 更新远程 repo 的本地截图. 更多命令仅是本地的. git reset --hard @{upstream} 引导本地分支指标到远程截图的位置,以及将指数和工作目录设置为该任务的文件. git clean -d --force 删除无法追踪的文件和目录,阻止 git 说“工作目录清洁”。