向Github仓库提交项目文件

From Github:
Beginning August 13, 2021, we will no longer accept account passwords when authenticating Git operations and will require the use of token-based authentication, such as a personal access token (for developers) or an OAuth or GitHub App installation token (for integrators) for all authenticated Git operations on GitHub.com. You may also continue using SSH keys where you prefer.

说明

Git 是目前世界上最先进的分布式版本控制系统,使用 Git 来管理自己的项目或代码不失为一种十分安全高效的方式( Linus Benedict Torvalds 就是饱受手工整理庞大的 Linux 代码库之苦…)。当然也可以使用 Github 网站提供的免费的 Git 存储来进行文件存储和版本控制。

自 2021.8.13 之后 Github 官方不再支持使用账号密码的方式进行登录验证,而是强制使用了更加安全的 Personal access tokens,因此和原先向 Github 远程仓库 push 的方式相比将有所变化(token-based authentication required)。本文就是为了简单记录一下基本的向用户的 Github 仓库提交代码的流程和一些可以关注的点。

可能会用到的 Git 命令(大致按顺序列出):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$ git init # 在目录中初始化 Git 仓库
$ git add # 添加文件到暂存区
$ git status # 查看仓库当前的状态,显示有变更的文件

# 将暂存区内容添加到仓库中
$ git commit
$ git commit -m "描述信息"

$ git diff # 比较文件的不同,即暂存区和工作区的差异

# 远程仓库操作
$ git remote add origin https://github.com/用户名/仓库名.git

$ git push -u origin master # 上传远程代码并合并
$ git log --all --graph --decorate # 图形化方式查看历史提交记录

更多:强烈推荐阅读Pro Git。通读第 1-5 章应该会教您熟练使用 Git 所需的大部分内容。

步骤:

1.新建本地项目

新建一个要作为本地仓库上传的文件夹。如果对象是已存在的文件夹,可以跳过这一步。

1
$ mkdir 文件夹名

2.创建 Git 本地仓库

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

1
$ git init

此时会在当前文件夹下自动创建一个.git文件夹,它是Git用来跟踪和管理版本库的。如果你看不到,是因为它默认是隐藏文件,那你就需要设置一下让隐藏文件可见,或者命令行输入ls -a也可。

3.向 Git 本地仓库的缓存写入文件

这时候你就可以把你的项目粘贴到这个本地Git仓库里面(粘贴后你可以通过git status来查看你当前的状态)。然后通过git add把项目添加到仓库(或git add .把该目录下的所有文件添加到仓库,注意点是用空格隔开的)。

1
2
$ git add
$ git add .

在这个过程中你可以一直使用git status来查看你当前的状态。

当然,可以使用git add 完整文件名.后缀进行单个文件添加。

另外,如果git add的内容包含中文,git add会失败报错。这是由于git默认是不能识别中文的。需要在终端修改使之能识别中文。

1
git config --global core.quotepath false

core.quotepath设为false的话,就不会对0x80以上的字符进行quote。中文显示正常。

4.将缓存区内容添加到 Git 本地仓库

1
$ git commit

使用此命令会自动弹出你的系统默认的编辑器,输入版本信息即可(自己任意输入,一般是对于此次提交的描述性信息)。也可以git commit -m "描述信息"直接添加信息,这样不会弹出编辑器。

5.关联 Git 本地仓库和 Github 远程仓库

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

1
2
3
$ git remote add origin https://github.com/用户名/仓库名.git
# https的内容是仓库地址,比如我的一个仓库是:
$ git remote add origin https://github.com/Jinstorm/Dotfiles.git

若运行成功不会显示内容。Linux命令行不报错即为命令运行无误。

6.推送至 Github 远程仓库

关联好之后我们就可以把本地库的所有内容推送到远程仓库(也就是Github)上了,通过:

1
$ git push -u origin master

由于新建的远程仓库是空的,所以要加上-u这个参数,等远程仓库里面有了内容之后,下次再从本地库上传内容的时候只需下面这样就可以了:

1
$ git push origin master

自2021.8之后Github官方不再支持使用账号密码的方式进行验证,而是强制使用了更加安全的 Personal access tokens

配置tokens:右上角头像->Setttings->Developer settings->Personal access tokens->Generate new token,日期我选择No expiration(无限期),不过推荐加上一个期限更加安全,授权范围的话全部选上。

  • 填写Note,例如:code-settings;
  • 选择Expiration,选择无期限;
  • 选择Select scopes,全选

点击Generate token生成,令牌保存成功。记住,这个生成的令牌一定要保存好
注意这里:在push时可能需要输入Username和Password,输入用户名和tokens即可,注意Password处输入tokens而不是注册时的密码。

上传项目的过程可能需要等一段时间,完成之后是这样的:

这时候你再重新刷新你的Github页面,进入刚才新建的那个仓库里面(分支选择master不是main),就会发现项目已经成功上传了。

还可以在命令行通过以下命令查看提交 commit 信息:

1
$ git log --all --graph --decorate

至此就完成了将本地项目上传到Github的整个过程。