Skip to content

Instantly share code, notes, and snippets.

@gudezhi
Last active November 23, 2023 09:52
Show Gist options
  • Save gudezhi/0d11726ffaeace0b06b8b151e936c38f to your computer and use it in GitHub Desktop.
Save gudezhi/0d11726ffaeace0b06b8b151e936c38f to your computer and use it in GitHub Desktop.
git相关操作

要直接拉取远程服务器的最新版本并覆盖掉本地所有更改,您可以使用一系列 Git 命令来重置本地状态,使其与远程仓库同步。这些操作会丢弃所有本地未提交的更改,因此在执行之前,请确保您不需要这些本地更改。

下面是如何做到这一点的步骤:

1. 切换到目标分支

首先,切换到您想要同步的分支。例如,如果您想要同步 main 分支:

git checkout main

确保替换 main 为您需要同步的实际分支名称。

2. 拉取最新的远程仓库状态

拉取远程仓库的最新状态:

git fetch origin

这个命令会从远程仓库获取最新的提交和分支状态,但不会自动合并到您的本地分支。

3. 重置本地分支

使用 reset 命令将本地分支重置为远程分支的状态。这将会丢弃所有本地未提交的更改和提交:

git reset --hard origin/main

同样,替换 origin/main 为实际的远程分支名,例如 origin/master 或您的特定分支名。

4. 清理未跟踪的文件和目录

如果您还想删除那些在远程仓库中不存在的本地未跟踪文件和目录,可以运行:

git clean -fd

这个命令会删除所有未跟踪的文件和目录(-f 代表强制,-d 代表包括目录)。

要将您的本地项目上传到已经存在的 GitHub 仓库(该仓库已有初始提交,如 README 文件),您可以按照以下步骤在 Windows PowerShell 环境中操作:

1. 初始化本地 Git 仓库(如果尚未初始化)

首先,打开 PowerShell 并切换到您的项目目录:

cd path\to\your\project

然后,初始化 Git 仓库(如果您的项目还没有初始化为 Git 仓库):

git init

2. 重命名本地分支

本地默认分支是master,github默认是main

然后,使用以下命令将本地的 master 分支重命名为 main

git branch -m master main

3. 关联远程仓库

接下来,将您的本地仓库与远程 GitHub 仓库关联起来。您需要使用 git remote 命令来添加远程仓库的 URL:

git remote add origin https://username@github.com/...

4. 拉取远程仓库的变更

由于远程仓库已有初始提交(例如 README 文件),您需要首先拉取这些变更到本地,以避免冲突:

Git 需要知道如何合并这些更改。Git 提供了几种方法来处理这种分叉,包括合并(merge)、变基(rebase)和快进合并(fast-forward)。

您可以根据自己的需要选择一种方法来解决这个问题:

1. 合并(Merge)

合并是将远程分支的更改合并到您的本地分支中。这将保留两个分支的提交历史,并在需要时创建一个新的合并提交。

git pull origin main --allow-unrelated-histories --no-rebase

这个命令会将远程的 main 分支合并到您的本地 main 分支中,并允许合并不相关的历史。

2. 变基(Rebase)

变基是将您的本地分支的更改重新应用在远程分支的顶部。这可以创建一个更干净的线性提交历史,但可能会改变您本地分支的提交历史。

git pull origin main --rebase

如果您选择这种方法,请注意变基可能需要解决冲突,并且会改变提交的哈希值。

3. 快进合并(Fast-forward)

如果您的本地更改是远程分支的直接延续,可以选择快进合并。这种情况下,不会产生新的合并提交。

git pull origin main --ff-only

如果这个命令失败,说明您的本地分支不是远程分支的直接延续,您需要选择合并或变基。

5. 添加本地文件到仓库

将您的项目文件添加到仓库中:

git add .

这会添加当前目录下的所有文件到 Git 仓库。

6. 提交更改

提交您的更改到本地仓库:

git commit -m "Initial commit"

这里 "Initial commit" 是提交信息,您可以根据实际情况更改。

7. 推送到远程仓库

最后,将您的代码推送到 GitHub:

git push -u origin main

要使用本地项目完全覆盖GitHub上的项目,你可以通过以下步骤来实现:

  1. 确保本地分支是最新的: 首先,确保你的本地分支是你想上传的最新版本。

  2. 创建一个新分支(可选): 如果你想保留GitHub上当前的main分支的状态,你可以先创建一个新分支来保存这个状态。

    git checkout -b backup_main
    git push origin backup_main
  3. 切换回你的主分支: 确保你在要上传的分支上,通常是main分支。

    git checkout main
  4. 强制推送到GitHub:

    使用git push命令与--force选项来强制覆盖远程仓库的main分支。这将会使GitHub上的main分支与你的本地分支完全一样。

    git push origin main --force

警告: 使用--force参数会覆盖远程分支上的所有更改,这是一个破坏性的操作。确保你了解这一点,并且在做这个操作之前备份了重要的数据。

在你执行这些步骤之后,GitHub上的项目应该会被你本地的项目所完全覆盖。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment