一、引言

Github是程序员必不可缺的代码托管平台和全球技术交流社区,如何优雅且熟练地使用它应该是我们的自我要求。

在开始之前,需要确保进行了以下的简单操作,这些步骤我一笔带过,详细教程自行搜索。

1. 安装Git

不论是windows还是linux下安装git都是非常简单的操作,不再赘述。

2. 新建github仓库

仓库取名最好与本地的项目保持一致。公开仓库选public;私有仓库private

3. 密钥设置

  1. 首先在本地生成 ssh key

    1
    ssh-keygen -t rsa -C "your_email@youremail.com"

    这里的邮箱是你在github注册的邮箱

  2. 之后会要求确认密钥存放路径和输入密码(输的时候看不到密码),这里使用默认的路径,(当然也可以自定义路径)。成功的话会在 ~/ 下生成 .ssh 文件夹,打开 id_rsa.pub,所有内容都属于key,复制里面的 key,。

  3. github添加秘钥
    在github个人设置中,点击SSH and GPG keynew SSH key。将上述生成的key粘贴到这里。放心,不会覆盖原有的ssh key。

  4. 验证密钥是否配置成功

    1
    ssh -T git@github.com

二、关联仓库

1. 设置用户名和邮箱

本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。

先查看一下当前git的用户名和邮箱:

1
2
git config user.name
git config user.email

如果正常返回说明曾经配置过,如果没有返回,可通过下方代码进行全局配置:

1
2
git config --global user.name "your name"
git config --global user.email "your_email@youremail.com"

命令中的 --global 参数表示全局,不加这个参数只会修改当前单个仓库的git配置

2. 创建本地仓库

在电脑适当地方创建一个文件夹作为项目目录,进入项目目录,右键选择 Git Bash Here 打开git bash终端,执行 git init 命令以初始化 git 版本库。会自动生成一个 .git文件夹

3. 添加远程仓库

1
git remote add origin git@github.com:yourName/yourRepo.git

后面的 yourNameyourRepo 表示你在 GitHub 的用户名和刚才新建的远程仓库名

加完之后进入 .git文件夹,打开 config ,这里会多出一个 [remote "origin"] 内容,这就是刚才添加的远程地址,也可以直接修改 config 来配置远程地址。也可以通过 git remote -v 命令快速查看当前远程库地址。

4. 修改主分支

git 默认主分支叫 master,为了与 GitHub 保持一致,需要将主分支修改为 main

1
git branch -M main

三、提交代码

以下命令均在项目根目录中打开的git bash终端执行

1. 首次提交

把项目提交到缓冲区(注意命令有个点)

1
git add .

查看状态

1
git status

提交commit,其中-m后面引号里面是本次提交你想添加的注释内容。

1
git commit -m "first commit"

把本地仓库内容推送到远程仓库:

1
git push -u origin main

但是这时候可能会如下报错(如果在前面修改了主分支,此报错就不会出现,请直接跳过本内容):

1
2
3
$ git push -u origin main
error: src refspec main does not match any
error: failed to push some refs to 'github.com:用户名/仓库名.git'

为什么会这样?你可能已经注意到了,在我们每次使用git指令时,git都在一直用蓝色的字提示我们当前处在一个叫master的分支。这是git为我们创建的默认分支,你可能完全无视了这一点,只关心github上的那个main分支。至于为什么它们的默认分支不同,github给出的解释是:

GitHub is working on replacing the term “master” on its service with a neutral term like “main” to avoid any unnecessary references to slavery.

由于受到了“Black Lives Matter(黑命贵)”运动的影响,GitHub觉得 master 有点奴隶主那味儿,于是在2020年10月1日后修改默认分支的名称为 main

我们需要先将本地的master分支重命名为main

1
git branch -m master main

然后重新把本地仓库内容推送到远程仓库,可能会跳出github登录git,登录即可。

1
git push -u origin main

首次提交加上 -u 参数,今后提交时git push origin main可以直接简写成git push

2. 非首次提交

1
2
3
git add .
git commit -m "提交信息"
git push

3. 分支的创建与推送

1
2
3
4
5
6
7
8
# 查看分支
git branch

# 创建并切换到dev分支
git checkout -b dev

# 首次推送dev分支到远程仓库
git push -u origin dev
1
2
3
4
5
6
7
8
9
10
# 查看分支(当前处于dev分支)
git branch

# 查看文件状态
git status

# 推送修改后的dev分支到远程仓库
git add .
git commit -m "完成了dev分支的开发"
git push
1
2
3
4
5
6
7
8
# 切换到main分支
git checkout main

# 把dev分支的更改合并过来
git merge dev

# 推送main分支到远程仓库到远程仓库
git push

4. 本地分支关联远程分支

1
2
3
4
5
6
7
8
# 克隆远程仓库
git clone git@github.com:用户名/仓库名.git

# 本地创建同名分支
git checkout -b demo

# 本地分支关联远程同名分支(已经存在)
git branch --set-upstream-to=origin/demo
1
2
3
4
# 推送修改后的demo分支到远程仓库
git add .
git commit -m "测试demo分支是否关联成功"
git push

四、团队协作开发

  1. 在 GitHub 上 fork 要参与的项目
  2. 从 origin 拉取正在开发的分支代码,一般是 main(master) 分支
  3. 本地完成开发需求
  4. commit 变更的文件
  5. 将修改的代码 push 到 fork 库
  6. 新建合并请求,将修改的代码合并到 origin。这一过程可能需要制定 commiter
  7. commiter 审核代码,没有问题,可以合并到 origin 仓库

五、放弃本地更改

本地代码有修改,但是想放弃这些修改,得到与主干一样的代码,怎么办呢?有以下几种方法:

  • 方法1:删除本地代码,重新pull最新代码
  • 方法2:在Idea(JAVA IDE编程工具)中右键被修改的文件夹或文件,选择rollback
  • 方法3:使用如下git命令
    1
    2
    3
    4
    5
    # 重置索引和工作目录
    git reset --hard

    # 更新代码
    git pull

七、编辑项目信息

进入GitHub项目仓库,查看右侧边栏【About】选项,点击 右上角小齿轮 编辑项目仓库详情。

  1. Description(仓库描述)
  2. Website(项目站点)
  3. Topics(项目标签,使用空格分隔)
  4. Include in the home page(在此仓库主页中包含的内容)
    • Releases(版本)
    • Packages(包)
    • Environments(环境)

八、发布项目版本

进入GitHub项目仓库,查看右侧边栏【Releases】选项,点击 Create a new release 创建第一个版本。

  • 【Choose a tag】选择Tag版本标记,第一次可以输入并创建v1.0.0

    标记建议:通常的做法是在您的版本名称前加上字母v。一些好的标签名称可能是v1.0.0v2.3.4。如果标签不用于生产,请在版本名称后添加预发布版本。一些好的预发布版本可能是v0.2.0-alphav5.9-beta.3

  • 【Target: main】选择分支
  • 【Release title】输入版本标题,此处内容随意。如果想简单点,直接输入版本号v1.0.0作为标题即可。
  • 【Describe this release】填写版本说明。一般是说明一下新增了什么功能(Added),移除了什么代码,修复了什么漏洞(Fixed)等等。(增删改)
  • 【Attach binaries…】拖拽上传发布二进制文件,文件或文件夹(可同时拖拽多个文件)。如果没有其他补充文件,不用上传任何东西,因为上面刚刚选择的仓库分支就是此次将要打包的文件。
  • 【This is a pre-release】是否为预发布程序(正规发版的程序在上线正式版本前一般有预发布版本),若勾选则将被指出此版本被确定为非生产就绪。正常版本无需勾选。
  • 【Publish release】发布版本
  • 【Save draft】保存草稿
  • 发布成功,可以返回项目仓库主页,查看右侧边栏【Releases】部分。

【报错记录】

1. 报错①

1
2
warning: LF will be replaced by CRLF in README.md.
The file will have its original line endings in your working directory

2. 报错②

1
2
3
$ git push -u origin main
error: src refspec main does not match any
error: failed to push some refs to 'github.com:用户名/仓库名.git'

【参考内容】:

学习更多Git操作可浏览廖雪峰的官方网站-史上最浅显易懂的Git教程