进阶贡献
进阶贡献
项目贡献流程
git
这是什么
Git (opens new window)是一个强大的分布式版本控制系统,核心目标是高效地管理项目文件的变更历史。它允许你记录代码的每一次改动,并可以轻松回溯到任何历史版本。
在使用 Git 前需要先安装 Git(Git下载链接 (opens new window))
在第一次使用Git需要进行一些配置:
git config --global user.name "yourusername"
git config --global user.email YourEmailAddress
2
可以使用 git config --list 来查看你的配置信息。
仓库(repositories)
一个由 Git 管理的项目目录(文件夹)。仓库内包含你的项目文件和一个名为 .git 的隐藏子目录,该目录存储了所有的版本历史数据。
你可以在希望创建仓库的目录下打开命令行工具cmd,并使用命令 git init 来初始化一个仓库。

例如在桌面创建一个VscodeGitTest的文件夹,内部放入一个Test.md文件。
在打开的命令行工具cmd中使用 cd 命令到达该文件夹内部

执行命令 git init


可以看到文件夹中多出一个隐藏文件夹 .git , 说明该目录已经被git管理了,也就是说现在它是一个仓库了。
当然也可以使用 git clone 来克隆一个远程仓库。
例如,想要克隆 NCEPUwiki 仓库,只需进入你希望存放该项目的目录,打开命令行工具执行命令 git clone https://github.com/NCEPUwiki/NCEPUwiki.git 并等待

完成后NCEPUwiki仓库就被克隆在了本地。

工作区域
工作区(Working Directory):你正在查看和编辑的项目文件副本。
暂存区(Staging Area / Index):一个用于准备下一次提交的中间区域。它记录了工作区中哪些文件的哪些变更将被纳入下一次提交的版本快照中。使用 git add . 可将工作区中的所有修改添加到暂存区,或使用 git add [文件名] 仅添加指定文件。
将上面提到的Test.md添加到缓存区(初始化后的仓库中原来的文件也可以看成一种修改)

可以使用 git status 来查看当前工作区和暂存区的状态

可以看到目前工作区是默认主分支master,没有提交记录,有一个文件Test.md处于暂存区。
本地仓库(Local Repository):存储项目所有提交的版本快照。
提交(Commit)
每次提交会将被暂存的更改永久记录到本地仓库中,并生成一个唯一的哈希值(如 fd6a3a0...)作为标识。
使用 git commit 来将暂存区的修改移入本地仓库中。
提交处于暂存区的Test.md, -m后面写这一次提交的备注,如果不加 -m git会为我们打开vim编辑器让我们写备注

使用 git log 查看提交记录

可以看到现在有一条提交记录,备注就是我们写的commitNote
分支(Branch)
一个指向某个提交的可变指针。默认的主分支通常名为 main 或 master。创建新分支意味着从某个点开始创建一条独立的开发线,分支之间的工作可以互不干扰。
要创建一个新的分支,你可以使用 git branch [新分支名称] 。

要查看已有的分支,可以使用 git branch ,其中当前所在的分支将会用 * 标记。
创建新分支之后可以发现我们仍然在主分支master上

要切换到其他分支,你可以使用 git checkout [分支名称] 。

可以看到现在已经在我们创建的newBranch上了。
Vscode
Vscode (opens new window)(全称 Visual Studio Code)是一款由微软推出的免费、开源、跨平台的代码编辑器。
使用Vscode和git进行版本管理
Vscode 提供了操作git的图形化工具,可以简单直观地使用git。
初始化仓库
准备一个文件夹(项目文件夹) 用Vscode打开这个文件夹,演示中在文件夹中放了一个空md文件Test.md。

在 VSCode 左边的活动栏中找到源代码管理选项。
点击初始化仓库来将当前目录纳入到git版本管理。

点击初始化仓库后

此时我们可以看到新建的文件为绿色,且后面有 U 字提示;U 意为 Untracked 未追踪,也就是说此文件目前仅在我们本地,未被 git 进行跟踪。
添加文件至暂存区
点击所要操作文件后面的 “+”,即可将文件添加至暂存区,相当于执行命令 git add

此时文件名仍然为绿色,但是后面的 U 变成了 A,A 则意为此文件已在暂存区。
在消息框中输入相关备注,然后点击 √提交 即可进行一次提交,也可使用 Ctrl+Enter 快捷键直接提交,这会将暂存区的文件提交至 git, 相当于执行命令 git commit
修改提交后的文件
提交后,点回到资源管理器,对文件进行修改

此时文件名变为黄色,且有提示字母 M;M 意为 modify,即已修改, 想要撤销修改,进入源代码管理,点击返回箭头放弃更改即可。
查看/新建/切换分支
点击 vs code 底部状态栏的分支选项即可显示项目中的分支,此处的 main 意为当前所在分支为 main;如下图所示,项目中只有一个main分支

点击 +创建新分支...,并输入新分支的名字可以创建一个新分支。

此时可以看到已经有两个分支了,切换分支只需点击对应分支名称即可
推送和拉取
如遇推送或拉取操作失败,可能是由于网络连接问题所致,建议尝试使用网络代理工具。
第一次需要配置远程仓库

点击 添加远程存储库... 来添加一个远程仓库,仓库Url可以在仓库的Github中找到

图示为NCEPUwiki Github仓库的Url
配置好后就可以进行拉取推送操作了

若要向默认远程仓库推送或拉取,直接推送和拉取按钮。若要自行选择远程仓库,请使用下方“推送”或“拉取”菜单中的“推送到”与“拉取自”选项。
相当于执行命令 git push 和 git pull
克隆
在Vscode左上角文件栏下选择新建窗口,并在欢迎中的启动选择克隆Git仓库...,输入远程仓库的URL地址以克隆Github中的项目。

相当于执行命令 git clone
Github
这是什么
GitHub (opens new window) 是一个基于 Git 的代码托管和协作平台,它让个人开发者和团队能够更轻松地管理代码版本、协同工作以及分享项目。关于Github全面的快速入门请移步GitHub 入门文档 (opens new window)
与Git的关系
Github不等于Git,Git 是在本地计算机上运行的工具,负责版本控制的所有基础操作。而 GitHub 则提供了一个中心化的服务器来托管本地 Git 仓库,并在此基础上增加了图形化界面、协作工具(如 Pull Requests、Issues)和社交功能。
仓库(repositories)
和git的仓库相似,只不过代码文件是在服务器而非用户本机,因此Github仓库也被称为远程仓库(Remote Repository)。
你可以使用 git remote add [为远程仓库指定的名称] [远程仓库的Url地址] 来添加一个远程仓库。进入一个项目的Code首页(即一点击默认进入的页面),点击绿色的Code按钮,就可以看到一个项目的HTTP Url地址。
使用 git remote -v 可以查看已添加的远程仓库。
分支(branches)
同git的分支,唯一区别在于代码是否在本地。
提交(commits)
同git的提交,只是由远程仓库管理。
结合Github、Vscode和git进行项目开发
个人项目
GitHub 个人项目 就是你存放在 GitHub 平台上的、由你自己独立或主导完成的代码仓库的集合。
Fork
Fork 是对一个仓库的克隆。 forks 常被用于去更改别人的项目(贡献代码给已经开源的项目)或者使用别人的项目作为你自己想法的初始开发点。 比如你想要为NCEPUwiki项目做出贡献,你可以:
●Fork 这个仓库(你可以直接在NCEPUwiki的页面上点击fork按钮以完成fork),将别人的仓库复制一份到你自己的 GitHub 账户下

然后在新的界面点击Create fork,这样就获得了一个克隆仓库
●从Vscode拉取/拉取仓库的代码
●使用Vscode进行代码修改(最好建立一个新的分支以保持主分支的整洁)
●将你本地仓库的修改推送到你的 GitHub 远程仓库(即你 Fork 的那个)。
●在你克隆的项目点击Compare & pull request向NCEPUwiki提交一个pull requset或者在原项目中点击 Pull requests中的New pull request以创建一个pull request


之后等待项目作者合并分支即可。
Pull Request
Pull Request 简称PR。


在仓库页面上,你会看到一个pull request按钮。点击它,选择你的新分支和原始仓库的目标分支(通常是 main 或 master),填写 PR 的标题和描述,解释你的更改和为什么应该接受这些更改。 然后等待项目的管理员同意(或者拒绝)这个合并请求。