[研学] 项目配置和规范

VS 和 环境配置

头文件和库文件去群里下或者自己编译,似乎把编译好的库文件放代码库里面会违反开源协议?

把头文件和库文件放到你的项目文件夹的同级目录下。在 VS 中上方 文件-启动窗口-创建新项目-空项目,文件夹选你的项目文件夹。

将你的 github 仓库 clone 到你的项目文件夹,clone 操作在下文。

调试-xxx 调试属性-VC++目录,将 includes 文件夹和项目中的 header 文件夹加入包含目录和外部包含目录,libs 文件夹加入库目录,同窗口 链接器-输入-附加依赖项 内加入 glfw3.lib。

在项目文件中新建 path.cpp,里面写入

#include "utils/file.h"

const std::string path = R"([[ 你的项目文件夹 ]])";

e.g const std::string path = R"(C:\Watware\Cpp\source\Rep\)";
(这个操作以后应该会去掉,但是现在先这样吧)

这是你的文件结构应该形如

xxxx
  |- includes
  |- libs
  |- project
        |- header
        |- ...
        |
        |- path.cpp

!!! 最后将 项目-显示所有文件 打开。

git 使用和规范

一个不错的教程

使用

事前准备

这里 下载 git。git 默认不使用代理,使用 git config --global http.proxy http://127.0.0.1:7890git config --global https.proxy https://127.0.0.1:7890 设置 clash 代理。

加入团队,从 团队 fork 项目。在合适的地方建立文件夹(以下称为 project),然后运行命令 git clone https://github.com/[!!!YOURNAME!!!]/Research-Based-Learning.git,git 会把项目从 github 下载到 project 文件夹下一个同名文件夹(以下称为工作区)中。将该文件夹用 VS 打开,并在该文件夹下打开 cmd 运行 git 命令。

在提交代码前你需要将自己的一个 ssh 密钥上传至 github,在 settings-SSH and GPG keys 处,github 有文档说明如何生成。

一些概念

git 分为工作区和暂存区,使用 git add . 将工作区所有修改存入暂存区。
git 的仓库分为本地或者远程,通过 git remote add NAME URL.git 添加一个远程仓库。URL 是你访问仓库首页使用的网址,NAME 任取,通常你 fork 的仓库叫做 origin,被 fork 的仓库叫 upstream。

git 内部维护一个 DAG,有若干节点和边。
每条边是一个 commit,是一系列修改操作的集合。每个点代表你的代码的一个版本,你可以随意查看版本间的修改,回退版本或者合并两个版本。
本地或远程仓库有多个 branch,每个 branch 是一个指向 DAG 某个节点的指针。本地仓库的 branch 直接使用其名字访问,如一个叫 test 的 branch 在命令行中写作 branch,远程仓库的 branch 用远程仓库名和其名字访问,如一个叫 test 的 origin 仓库中的 branch 在命令行中写作 origin test

一些命令

branch

使用 git branch -a 查看所有的 branch。红色的是远程的,绿色的是当前的 branch。

使用 git switch [-c] NAME 切换或创建 branch,-c 表示 create。

使用 git branch -m NEWNAME 更改当前 branch 名字。

默认应该会有一个名字叫 main 的 branch,如果它默认叫 master,请将其名字改成 main 以与 github 同步并且避免对 Sadomasochism 倾向的影射。

commit

使用 git commit -m "DESCRIPTION" 将暂存区的所有修改作为一个从当前 branch 指向修改后节点的 commit 添加到 DAG,并把当前 branch 指向新建的那个节点。DESCRIPTION 是 commit 的描述,尽量写清楚一点以免给未来的自己添麻烦。

使用 git loggit reflog 查看 commit。你应该能看到本地和远程的 branch 都指向 DAG 的什么位置。

使用 git reset --hard COMMITID 将当前 branch 强行回退至 COMMITID,COMMITID 是一长串 16 进制 ID,你可以只写一个前缀。

以上所有更改会存储在你的计算机本地,以下操作可以将本地的数据和远程的数据进行交互:

remote

使用 git push [-u] [-f] REMOTE_NAME BRANCH_NAME 将该 branch 推送到 remote 的同名 branch 中。如果是第一次 push,请加上 -u,表示将本地和远程的 branch 关联起来。如果你前面使用过 reset 操作,那请加上 -f,表示 force 强制。

使用 git pull REMOTE_NAME BRANCH_NAME 将远程库中的数据拉取到你的计算机。

使用 git fetch -p 刷新远程信息。

实际上 REMOTE_NAME BRANCH_NAMEREMOTE_NAME REMOTE_BRANCH_NAME:LOCAL_BRANCH_NAME 的简写,并默认远程仓库和本地仓库 branch 的名字相同。实际开发中保持他们名字相同即可,只要用到简写就好。

规范

当你要负责某项功能的时候,例如地图读取器 loader,新建一个 branch feature/loader,并且在其中进行修改。当完成 并 且 测 试 没 有 出 锅 后在 github 上面向团队仓库提交一个 feature/xxx branch 的 pull request,团队仓库管理会把 feature/xxx 合并到团队仓库的 feature/xxx,然后将团队仓库的 feature/xxx 合并到 main branch。在 pull request 里面尽量写清楚一点,以免你走后洪水滔天。

注意到当团队仓库更新时你的仓库的 main branch 的版本落后了。你可以使用 git fetch upstream main 把团队仓库的 main branch 弄到你的本机,然后把你私人仓库的 main branch 和 feature/xxx merge 到团队仓库的 main branch 以与团队仓库同步,可以看上面 blog 里面的 合并分治 教程多人协作获取最新进度 教程

关于代码的格式,我也不知道啥格式,反正 VS 自己有个代码格式化器,交之前格式化一下就好。

多个人搞一个 feature 的话,只在一个人的私人仓库开 branch 就好了,仓库可以设置那些人可以提交 commit。

posted @ 2023-12-18 21:14  Watware  阅读(42)  评论(0编辑  收藏  举报