Git & Github
虽然说Git在计算机科学里用的很多,但是完全可以推广到所有文本类的工程(包括软件开发、论文撰写)。尤其是在大学里会有很多小组作业、大作业、竞赛之类的东西,用Git进行协作开发其实能够做到事半功倍,远比在微信群里来回传文件要高效得多。
推荐学习资料:
为什么你需要Git?
想象一下这些场景:
- 写论文时保存了"终稿"、"最最终稿"、"打死不改稿"等20个版本
- 小组作业中A同学改动了B同学写的部分却没说改了哪里
- 需要找回三周前删除的一段精彩内容
- 想同时尝试两种不同的方案又怕搞乱原文件
Git正是为解决这些问题而生!它能:
- 自动记录每次修改内容
- 方便多人协作不冲突
- 随时回退到任意历史版本
- 支持并行开发不同功能
Git核心概念
1. 仓库(Repository)
就像项目的专属文件夹,但能记住所有修改历史。新建项目时创建一个仓库即可。
2. 提交(Commit)
给当前版本拍张"快照",需要填写说明(如"添加实验数据图表")。建议每完成一个小功能就提交一次。
3. 分支(Branch)
主分支(main)像正式报告,可以新建分支(如"数据分析方案B")做实验性修改,成功后再合并到主分支。
常用操作(命令行示例)
# 初始化仓库(在项目文件夹中执行)
git init
# 添加文件到暂存区(准备存快照)
git add 论文.doc
# 提交版本(写清楚修改内容)
git commit -m "添加文献综述"
# 查看修改记录
git log
# 回退到指定版本(前7位版本号)
git checkout d3f4a7b
# 创建新分支
git branch 图表优化
# 合并分支到当前分支
git merge 图表优化
GitHub:云端协作平台
1. 基础认知
- GitHub是Git的云端存储服务之一(类似网盘+协作平台)
- 注册地址:github.com
Github不是简单的代码托管平台,而是“开源项目托管平台”。除了Git的功能以外,还可以汇报bug、接受建议、解答疑问、管理进度、自动化编译/部署(这个Wiki就是这么来的)等等。善用Github的这些基础功能,可以大幅提升你的工作效率,解答困惑。
Issues
这里是提问/汇报bug/提出建议的地方,用户和开发者可以在这里充分协作、沟通,促进这个项目的发展,是开源项目中非常重要的一环。
为了能够高效沟通,每个人都应该遵守各个项目的Issues规范。常见的规范会要求你在提问之前:
- 尝试在互联网上查找解决方案
- 看看Issues里是否已经有相关内容
- 检查是否投到了正确的分区(bug, enhancement, ...)
当然,对于一些很大的开源项目,新人很难再几千条Issues里寻找是否有相关的内容,仅靠关键字查找不一定能够解决问题。此时,我们就要善用LLM解决问题。现在的Github有Chat with Copilot功能,可以和LLM对话,咨询当前repo的相关信息。在页面的最上端就可以找到。通过Copilot可以更快、更精准地找到相关的Issues,以防重复提问。
2. 关键操作
# 将本地仓库关联到GitHub
git remote add origin [你的仓库地址]
# 上传本地内容
git push -u origin main
# 下载云端最新版本
git pull
# 克隆已有项目(小组作业常用)
git clone [仓库地址]
协作流程示例(小组论文写作)
- 组长创建GitHub仓库,邀请组员加入
- 每人克隆仓库到本地:
git clone <https://github.com/xxx/毕业论文.git
> - 小明负责摘要部分:
- 创建分支:
git branch xiaoming-abstract
- 切换分支:
git checkout xiaoming-abstract
- 完成修改后提交并推送到云端
- 创建分支:
- 组长审查后合并到主分支
- 所有人执行
git pull
获取最新版本
常见问题处理
文件冲突解决
当多人修改同一文件时,Git会提示冲突:
用文本编辑器手动选择保留的内容,删除标记符号后重新提交即可
如果弄不明白也没有关系,现在的IDE里自带Git的图形化界面,根据指引处理即可
推荐工具
我知道很多人看到要在命令行里写指令觉得很费劲,其实在实际操作的时候,很多常用操作是不需要写指令的,大部分代码编辑器都会有图形化界面帮你快速处理。比如说Visual Studio Code,在左侧的工具栏里有“源代码管理”,你可以很轻松地提交更改,编写提交消息、拉取最新内容。只有在遇到冲突的时候才需要用到命令行指令,但并不困难。
推荐使用以下工具(任选其一即可
- Visual Studio Code内置Git功能
- GitHub Desktop(图形化界面)
- 网页版GitHub直接编辑
入门建议
- 从个人项目开始练习(如课程论文、小的代码项目)
- 每次提交写清楚修改说明
- 重要文件提前备份
- 善用
.gitignore
文件排除临时文件
开始可能会有点挑战,但一旦掌握这个技能,你会发现:
- 再也不用满屏找"最新版"文件
- 组员修改内容清晰可见
- 实验性修改可以大胆尝试
- 所有历史版本随时可取
附:Git指令速查表