Git进阶——将本地仓库与远程仓库进行配置以及解决认证问题

705 阅读4分钟

在使用 Git 进行版本控制时,配置远程仓库和处理认证问题是常见的任务。本文将介绍如何将本地仓库与远程仓库进行配置,推送本地分支到新的远程仓库,以及如何解决因认证问题导致的推送失败。

1. 配置新的远程仓库

1.1 查看当前远程仓库

首先,查看你当前配置的远程仓库 URL:

git remote -v

该命令会显示你本地仓库当前配置的所有远程仓库及其 URL。

1.2 添加或更改远程仓库 URL

如果你需要添加新的远程仓库,可以使用以下命令:

git remote add origin <new-repository-URL>

如果需要更改当前的远程仓库 URL(例如,你的当前 URL 指向了旧的仓库),可以使用:

git remote set-url origin <new-repository-URL>

<new-repository-URL> 替换为你的新仓库 URL。

2. 将本地分支推送到新的远程仓库

2.1 推送本地分支

如果你的本地分支尚未与远程分支关联,可以使用以下命令推送并设置跟踪:

git push --set-upstream origin <branch-name>

例如,将本地 develop-sq 分支推送到新的远程仓库并设置跟踪:

1a6d626e75903657a4d8c28761c55006.png

git push --set-upstream origin develop-sq

2.2 检查推送状态

推送完成后,你可以检查当前分支的远程跟踪状态:

git branch -vv

3. 管理多个远程仓库(可选)

如果你需要同时管理多个远程仓库(例如,原始仓库和你自己的 forked 仓库),你可以为每个远程仓库指定不同的名称。

3.1 添加另一个远程仓库

假设你还想添加一个指向原始仓库的远程仓库,可以使用:

git remote add upstream <original-repository-URL>

3.2 查看所有远程仓库

你可以查看所有远程仓库的配置:

git remote -v

4. 更新和同步

如果你在原始仓库或其他远程仓库中有更新,你可以拉取最新的更改并将其合并到你的本地分支中。

4.1 拉取原始仓库的更改

确保你的远程仓库配置正确,然后拉取原始仓库的更改:

git fetch upstream
git merge upstream/main

5. 使用 Gitee 访问令牌

Gitee 出于安全原因不再接受传统的用户名和密码认证,尤其是当你启用了两步验证时。因此,你需要使用 Gitee 提供的访问令牌(Access Token)来代替密码。

5.1 生成 Gitee 访问令牌

  1. 登录 Gitee:访问 Gitee 网站 并登录你的帐户。

  2. 进入安全设置:点击右上角的头像,然后点击“设置”。

  3. 选择“安全设置” :在设置页面中找到“安全设置”部分。

  4. 生成新的访问令牌

    • 点击“生成新令牌”按钮。
    • 为你的令牌取一个名称(例如,git-push-token)。
    • 根据需要选择权限(通常需要 projectspull_requests 权限)。
    • 点击“确定”生成令牌。
  5. 复制访问令牌:生成的令牌将显示在页面上。一定要复制并保存这个令牌,因为以后无法再次查看这个令牌。

5.2 配置 Git 使用访问令牌

当你使用 HTTPS 推送时,Git 会要求输入用户名和密码。你可以使用以下方式配置 Git 使用访问令牌:

  • 在提示输入用户名时,输入你的 Gitee 用户名。
  • 在提示输入密码时,使用生成的访问令牌作为密码。

或者,你可以使用以下命令将访问令牌存储在 Git 配置中:

git config --global credential.helper store

然后在终端中执行一次推送命令:

git push --set-upstream origin develop-sq

按照提示输入你的 Gitee 用户名和访问令牌。凭证将被存储在本地计算机上,以便于后续的认证。

6. 更新 Gitee 认证信息

如果你之前使用过旧的用户名/密码方式认证,可能需要清除旧的认证信息:

  • 清除旧的认证信息

    • 在 Windows 上,你可以通过 Windows 凭据管理器来清除存储的 Gitee 凭据:

      1. 打开“控制面板”。
      2. 选择“凭据管理器”。
      3. 找到存储的 Gitee 凭据并删除。
  • 重新认证:在终端中使用推送命令时,Git 会要求重新输入用户名和访问令牌。