下载 Git 并上传本地项目到 GitHub
> 这篇文章保留了原始操作流和截图,但我修正了几个现在已经过时的点:
>
> 1. GitHub 新仓库现在通常默认使用 main 分支,而不是 master
> 2. GitHub.com 从 2021 年 8 月 13 日 起,已经不再支持用“账号密码”做 Git 操作认证
> 3. 生成 SSH key 时,今天更推荐使用 ed25519,而不是旧教程里常见的 rsa
- windows用户 下载Git软件:https://git-scm.com/downloads

- 安装就是一路next,安装完成后你可以在安装目录下找到git-bash,可以由个人喜好把它放到桌面,git-bash操作命令就是linux的操作命令。 
- 安装好git后,在命令行或终端中使用下面的命令可以设置git自己的名字和电子邮件。这是因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
#在git bash界面输入如下内容即可完成邮箱的注册:
git config --global user.name "user.name"
#(说明:双引号中需要你的用户名,这个可以随便输入,比如“twodog”)
git config --global user.email "yourmail@youremail.com.cn"
#(说明: 双引号中需要输入你的有效邮箱,比如“12131312@163.com”)
- 查看是否存在密钥ssh keys
#命令
ls ~/.ssh- 如果没设置,就创建新的ssh keys,不然git无法上传文件
ssh-keygen -t ed25519 -C "yourmail@youremail.com.cn"
#yourmail@youremail.com.cn 写自己的邮箱
Enter file in which to save the key (/c/Users/你的用户名/.ssh/id_ed25519):
#按Enter 会自动保存在 ~/.ssh 目录下 ~代表home
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
#以上同样可以直接按Enter跳过;如果你想提高安全性,也可以设置一段 passphrase
#这样操作可以在 C:\Users\TWODOG\.ssh 下生成 ssh keys。包括两个文件 id_ed25519 和 id_ed25519.pub(Linux 下就在 ~/.ssh)。
#[windows ]打开 id_ed25519.pub 文件、复制内容、打开自己的 GitHub,找到 Settings --> SSH and GPG keys,粘贴到 key 里面,点击 Add SSH key,具体看下图

密钥添加完成,下次在使用时就不需要再添加密钥了。
- 开始上传本地文件到git上。我们需要先创建一个本地的版本库(其实也就是一个文件夹)。你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建。现在我通过命令行在桌面新建一个gittest文件夹(你也可以在其他任何地方创建这个文件夹),并且进入这个文件夹。

- 通过命令把这个文件夹变成Git可管理的仓库
git init
git branch -M main

- 这时候你就可以把你的项目粘贴到这个本地Git仓库里面(粘贴后你可以通过git status来查看你当前的状态),然后通过git add把项目添加到仓库(或git add .把该目录下的所有文件添加到仓库,注意点是用空格隔开的)。在这个过程中你其实可以一直使用git status来查看你当前的状态。如果文件内有东西会出现红色的字,不是绿色,这不是错误。

#把文件夹下的所有文件添加到仓库
git add .
#把项目提交到仓库并添加更新注释
git commit -m "更新注释"
- 在Github上创建一个Git仓库。

- 在Github上创建好Git仓库之后我们就可以和本地仓库进行关联了,根据创建好的Git仓库页面的提示,可以在本地仓库的命令行输入

# 关联一个github远程仓库 <address>是仓库地址 【请忽略<>】origin是我们命名远程仓库的名字,可以随意取名,但是一般我们看到origin就是远程仓库
git remote add origin <上图复制的地址>
# 由于新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,
git push -u origin main
#下次再从本地库上传内容的时候只需下面这样就可以了:
git push origin main
这时候你再重新刷新你的Github页面进入刚才新建的那个仓库里面就会发现项目已经成功上传了:

一些坑
你以为完了其实并没有:就是在上面第七步创建远程仓库的时候,如果你勾选了Initialize this repository with a README(就是创建仓库的时候自动给你创建一个README文件),那么到了第九步你将本地仓库内容推送到远程仓库的时候就会报一个 (to https://github.com/codetwodog/gittest 的错)

这是由于你新创建的那个仓库里面的README文件不在本地仓库目录中,这时我们可以通过以下命令先将内容合并以下:
# 远程仓库与本地合并
git pull --rebase origin main然后再push就可以了
另一个坑
如果你在提交之后再进行远程仓库和本地合并,会报一个错,,如下图

#原因:如果有未提交的更改,是不能git pull的
#解决:
#1.先执行
git stash #可用来暂存当前正在进行的工作
#再执行
git pull --rebase origin main
git stash pop #从Git栈中读取最近一次保存的内容
再进行add 和commit操作就可以了。
总结一下:(注意:如果中途弹出输入框要求认证,GitHub.com 现在不能再直接填账号密码。你应该使用 SSH key,或者在 HTTPS 模式下使用 Personal Access Token。)
- ==在本地创建一个版本库(即文件夹),通过git init把它变成Git仓库。==
- ==把项目复制到这个文件夹里面,再通过git add .把项目添加到仓库。==
- ==再通过git commit -m "注释内容"把项目提交到仓库。==
- ==在Github上设置好SSH密钥后,新建一个远程仓库,通过git remote add origin 仓库url地址将本地仓库和远程仓库进行关联==
- ==最后通过git push -u origin main把本地仓库的项目推送到远程仓库(也就是Github)上==
- <font color=red size=6 face=“黑体”>遇到坑看上面</font><table><tr>
补充说明
1. 为什么这里把 master 改成了 main
现在 GitHub 上新建的大多数仓库,默认分支通常已经是 main。如果你继续照抄旧教程里的 master,经常会在推送时碰到“找不到对应分支”之类的问题。
所以这篇文章里的命令统一改成了:
git branch -M main
git push -u origin main2. 为什么“输入 GitHub 用户名和密码”已经不适用了
GitHub.com 从 2021 年 8 月 13 日 起,已经停止支持账号密码用于 Git 操作认证。
也就是说,旧教程里那种:
输入 GitHub 用户名 + 密码现在对于 GitHub.com 已经不成立了。
你现在应该使用下面两种方式之一:
SSH keyHTTPS + Personal Access Token
本文使用的是更省心的 SSH key 方案。
3. 为什么这里推荐 ed25519
旧教程里常见的是:
ssh-keygen -t rsa -C "yourmail@youremail.com.cn"但今天更推荐:
ssh-keygen -t ed25519 -C "yourmail@youremail.com.cn"原因很简单:它是现在更常见、更新的默认推荐方案。
参考:
- GitHub Docs: [Adding a new SSH key to your GitHub account](https://docs.github.com/github/authenticating-to-github/connecting-to-github-with-ssh/adding-a-new-ssh-key-to-your-github-account?platform=windows)
- GitHub Changelog: [Git password authentication is shutting down](https://github.blog/changelog/2021-08-12-git-password-authentication-is-shutting-down/)