git bash操作中,可能出现各种网络连接问题,请不要使用校园网,试试手机热点或者别的网络,如果还有网络超时问题,先进行ssh密钥认证,且优先使用SSH协议,然后再测试,而再考虑HTTPS协议
Git与 GitHub SSH密钥认证过程1. 生成 SSH 密钥对2. 添加 SSH 公钥到 GitHub 账户3. 配置本地 Git 仓库(如果是clone项目则跳过)4. 测试 SSH 连接两种工作流 Git Clone(对应后面内容的情况一)Git Init + Git Remote(对应后面内容的情况二)注意事项:情况一:从远程仓库克隆项目到本地的工作流情况二:将已经存在的本地项目同步到远程仓库
Git与 GitHub SSH密钥认证过程
使用 SSH 密钥进行 Git 和 GitHub 的身份验证可以提供更安全和便捷的访问方式。下面是使用 SSH 密钥进行认证的常见步骤:
1. 生成 SSH 密钥对
- 打开终端或命令提示符窗口。
- 输入以下命令生成 SSH 密钥对:
替换
your_email@example.com
为你在 GitHub 上注册的电子邮件地址。
- 按照提示,选择保存密钥对的文件路径和设置密码(可选)。
2. 添加 SSH 公钥到 GitHub 账户
- 在 GitHub 网站上登录到你的账户。
- 点击头像图标,选择 "Settings"(设置)。
- 在左侧菜单中,选择 "SSH and GPG keys"(SSH 和 GPG 密钥)。
- 点击 "New SSH key"(新建 SSH 密钥)按钮。
- 在 "Title"(标题)字段中,为该密钥提供一个描述性名称。
- 打开之前生成的公钥文件(通常位于 C盘用户目录下的
/.ssh/id_rsa.pub
),记事本了打开复制,将公钥的内容复制到 "Key"(密钥)字段中。
- 点击 "Add SSH key"(添加 SSH 密钥)按钮,将公钥添加到你的 GitHub 账户。
3. 配置本地 Git 仓库(如果是clone项目则跳过)
如果是本地没有项目,准备从远程clone项目到本地,则跳过这段内容
- 在终端或命令提示符窗口中,进入到你的本地 Git 仓库所在的目录。
- 执行以下命令,将远程仓库的 URL 更改为 SSH 协议的 URL:
替换
your_username
和your_repository
为你的 GitHub 用户名和仓库名称。
4. 测试 SSH 连接
- 在终端或命令提示符窗口中,执行以下命令测试 SSH 连接:
- 如果一切配置正确,你将收到一条欢迎消息。
现在你已经完成了 Git 与 GitHub 的 SSH 密钥认证配置。通过 SSH 进行身份验证将允许你在不输入用户名和密码的情况下进行推送和拉取操作,提供了更便捷和安全的访问方式。
两种工作流
Git Clone(对应后面内容的情况一)
git clone
命令用于从远程仓库克隆代码到本地。基本语法:
使用示例:
git clone
在本地创建一个新文件夹,并将远程仓库的内容完整地复制到该文件夹中。
- 克隆操作会包括所有分支、历史记录和文件。
- 远程仓库会自动与本地仓库建立关联,远程仓库通常被命名为
origin
。
- 适用情况:
- 当你想要获取整个远程仓库的所有内容,并在本地开始工作时,使用
git clone
是最常见和方便的方式。 - 对于初次克隆远程仓库或者需要更新本地仓库的代码时,使用
git clone
是最常见的操作方式。
Git Init + Git Remote(对应后面内容的情况二)
git init
和 git remote
命令组合用于在已有的本地文件夹中初始化一个 Git 仓库,并与远程仓库建立关联。基本步骤:
- 在本地文件夹中执行
git init
命令,初始化一个空的 Git 仓库。
- 使用
git remote add
命令将远程仓库与本地仓库建立关联。
示例:
git init
在当前文件夹中初始化一个新的 Git 仓库。
git remote add
命令将远程仓库的 URL 添加为远程别名,通常命名为origin
。
origin
是远程仓库的别名,可以使用其他名称。
- 完成以上步骤后,可以执行其他 Git 命令来操作和同步远程仓库的内容。
- 适用情况:
- 当你已经有一个本地文件夹,并希望将其初始化为 Git 仓库,并与远程仓库建立关联时,可以使用
git init
和git remote add
组合的方式。 - 当你想要手动创建一个空的 Git 仓库,并手动与远程仓库建立关联时,使用
git init
和git remote add
是常见的操作方式。
如果进行远程仓库操作时提醒:
fatal: refusing to merge unrelated histories
则是由于本地和远程仓库版本历史不一致导致的,可以执行git pull origin main
--allow-unrelated-histories
这个标记的参数(允许不相关历史提,强制合并)注意事项:
- 在使用
git clone
时,Git 会自动为你初始化一个新的 Git 仓库,并与远程仓库建立关联。
- 在使用
git init
和git remote add
时,需要手动执行这两个步骤来初始化本地仓库并与远程仓库建立关联。
- 如果你已经通过
git clone
进行了克隆操作,那么不需要再执行git init
和git remote add
。
这些是关于
git clone
和 git init
+ git remote
的更详细的操作和用法的总结。通过这些命令,你可以克隆远程仓库或在本地文件夹中初始化一个新的 Git 仓库并与远程仓库建立关联。请根据实际情况选择适合你的操作方式,并注意执行步骤的正确性。情况一:从远程仓库克隆项目到本地的工作流
以下是从远程仓库克隆项目到本地的常见工作流程:
- 打开命令行或终端,进入你想要存储项目的文件夹。
- 使用
git clone
命令来克隆远程仓库到本地:
其中,
<remote URL>
是远程仓库的 URL,优先使用SSH协议。如果想要更换链接协议,请看情况二的第3点中的更改协议条目。- 等待克隆完成后,会在当前文件夹下生成一个与远程仓库同名的文件夹,里面包含了远程仓库的所有文件和历史记录。
- 进入克隆下来的项目文件夹:
其中,
<repository name>
是远程仓库的名称。- 现在你可以在本地进行修改、添加新文件等操作。可以使用
git status
命令查看项目的状态。
- 如果你修改了文件,并想要将这些更改推送到远程仓库,首先使用
git add
命令将修改的文件添加到暂存区:
这将添加所有修改的文件到暂存区,准备提交。
- 使用
git commit
命令提交修改:
替换
"提交说明"
为本次提交的描述信息。- 最后,使用
git push
命令将本地的提交推送到远程仓库:
这将把本地的
main
分支的提交推送到远程仓库。注意事项:
- 在执行
git clone
命令时,Git 会自动为你创建一个本地仓库,并与远程仓库建立关联。
- 克隆操作只需要执行一次,之后的操作都是在本地仓库进行。
- 在进行修改和提交操作之前,建议先使用
git pull
命令拉取最新的远程代码,以避免冲突。
- 如果你想要克隆远程仓库到一个新的文件夹而不是当前文件夹,可以在
git clone
命令中指定新的文件夹路径。
总结:通过克隆远程仓库到本地,你可以获取远程仓库的所有文件和历史记录。在本地进行修改后,使用
git add
、git commit
和 git push
命令来提交并推送修改到远程仓库。请确保在推送之前先拉取最新的远程代码,以避免冲突。情况二:将已经存在的本地项目同步到远程仓库
当你有一个本地项目想要关联到 GitHub 上的远程仓库并同步代码时,可以按照以下步骤进行操作:
- 在 GitHub 上创建一个新的远程仓库。在 GitHub 界面上点击 "New repository"(新建仓库)按钮,并按照提示填写仓库名称、描述等信息,然后点击 "Create repository"(创建仓库)按钮。
- 打开终端或命令行,在本地项目的根目录下执行以下命令,将本地项目初始化为 Git 仓库:
- 使用
git remote add
命令将本地仓库与远程仓库建立关联。将<remote URL>
替换为在 GitHub 上创建的远程仓库的 URL,例如: - 确保你已经为该远程仓库设置了正确的权限,以便能够推送代码到新的 URL。
- 修改后的 URL 必须是有效的,否则 Git 将无法连接到远程仓库。
- 如果你使用了多个远程仓库,可以使用
git remote -v
命令查看当前远程仓库的详细信息,确认要修改的远程仓库的名称。 - 如果你只是想添加一个新的远程仓库而不是修改现有的仓库 URL,可以使用
git remote add
命令来添加新的远程仓库。 - 你的本地仓库是新创建的,没有任何 commit 历史。
- 远程仓库的
main
分支是在你本地仓库的main
分支创建之后才被创建的。 - 运行以下命令来拉取远程分支的更改,并允许合并不相关的历史:
- 如果没有冲突,Git 会自动合并远程分支的更改到你的本地分支。
- 接下来,再次尝试推送你的更改:
更改远程仓库链接或协议URL
git remote set-url origin
命令用于修改已有远程仓库的 URL。有时候你可能需要更改远程仓库的 URL,例如更换远程仓库的协议(从 HTTPS 切换到 SSH)或更换远程仓库的地址。这时就可以使用
git remote set-url
命令来修改。命令的语法如下:
其中,
origin
是远程仓库的名称,<new URL>
是新的远程仓库的 URL。使用这个命令时需要注意以下几点:
总结:
git remote set-url origin
命令用于修改已有远程仓库的 URL,可以帮助你更改远程仓库的地址或协议。注意在使用该命令前,确保你有权限访问新的 URL,并且新的 URL 是有效的。注意检查本地的git是否在main
分支
(远程仓库是
main
分支,但是我发现git init
后默认是master
分支,为了方便可以先改为main
分支)改master名字为main(不知道这样操作好不好)
或者创建新main分支
如果已经push了master分支,在github页面提示:
master had recent pushes xx minutes ago
Compare & pull request
也可以这样解决:
本地切换main分支,
从远程仓库pull main分支(可能遇到网络超时,切ssh协议链接可能解决),如果有冲突,如报错:
$ git pull origin main
。。。。。。
branch main -> FETCH_HEAD
fatal: refusing to merge unrelated histories
这个错误是因为 Git 发现你要合并的两个分支(本地的
main
分支和远程的 main
分支)没有共同的 commit 历史,被认为是两个不相关的分支。出现这种情况可能有以下原因:
为了解决这个问题,你可以使用
--allow-unrelated-histories
参数来强制合并两个不相关的分支。请执行以下步骤:这样应该可以成功将你的本地更改推送到远程仓库的
main
分支。请确保在执行合并命令之前了解两个分支的内容,并确保没有冲突或不相关的更改。- 使用
git add
命令将项目的文件添加到暂存区。可以使用git add .
添加所有文件,或者使用git add <file>
添加指定文件。
- 使用
git commit
命令提交代码到本地仓库:
- 最后,使用
git push
命令将本地代码推送到远程仓库:
这个工作流程的步骤如下:
- 创建远程仓库:在 GitHub 上创建一个新的远程仓库。
- 初始化本地项目:在本地项目中执行
git init
命令初始化 Git 仓库。
- 关联远程仓库:使用
git remote add
命令将本地仓库与远程仓库建立关联。
- 添加文件到暂存区:使用
git add
命令将项目的文件添加到暂存区。
- 提交代码到本地仓库:使用
git commit
命令将代码提交到本地仓库。
- 推送代码到远程仓库:使用
git push
命令将本地代码推送到远程仓库。
通过这个工作流程,你可以将本地项目同步到远程仓库,并随时进行代码的提交和推送。在以后的开发过程中,你可以使用
git add
、git commit
和 git push
命令来管理和同步代码的变更。