【阶段小结】协同开发——这学期的Git使用小结
一、Git简介
1. Git简单介绍
Git
是一个分布式版本控制软件,最初由Linus Torvalds
创作,于2005年以GPL
发布。最初目的是为更好地管理Linux
内核开发而设计。
2. Git工作流程以及各个区域
- Workspace:工作区
- Staging/Index:暂存区
- Local Repository:本地仓库(可修改)
- /refs/remotes:远程仓库的引用(不可修改)
- Remote:远程仓库
3. Git文件状态变化
二、Git安装&Git基本配置
由于网上教程很详尽了,此处省略简单的安装与配置,总的来说只需要配置好相应的git平台的账号配置即可。
就个人而言,我目前使用的git平台主要是github与gitee,主要是搭配git+vscode来使用,个人感觉开发效率极高。
三、个人踩坑
Git是我们“程序猿”常用的协同开发工具,由于本学期修了很多开发相关的课程,频繁地使用了Git。与之前简单的git push/pull,我也遇到了很多的新问题。
1. xcode project“抽风式”问题
对于简洁的C/C++/Golang等项目,使用git往往不需要太多配置。而对于基于objective-c的xcode project开发而言,如果不谨慎地设置gitignore文件,简直就会让协同开发效率事倍功半。
比如,我们很容易就很会出现由于新增了项目文件,在merge项目之后导致项目不能运行的情况(连编译都无法通过),这是由于xcode project有一大堆编译相关的文件,在merge之后往往会出现各种冲突,另外也有许多不必要的文件也被上传上去,导致项目仓库很臃肿,因此一个好的gitignore文件是很有必要的。
在这里我提供一个gitignore文件,虽然还不是很完善,但也比网上多数的要全面,仅供参考【其中Group8是项目名】:
.DS_Store
*/.DS_Store
*/**/.DS_Store
code/Group8/Pods/
code/Group8/Podfile.lock
*/UserInterfaceState.xcuserstate
code/Group8/Group8/.DS_Store
2. 如何拯救git仓库
在协同开发过程中,虽然我们可以建立个人分支,防止污染主分支,但是也有可能会出现一不小心把远程仓库弄“烂”或者向把远程仓库强制替换的情况。
这里我们主要聚焦于两个问题,即本地仓库强制替换为远程仓库与远程仓库强制替换为本地仓库,就个人而言,这两个操作足以避免我一开始减了几个个人分支的尴尬局面。
假设本地分支的仓库为henry,远程仓库为origin/henry
①本地仓库强制替换为远程仓库
git log #找到commitid
git reset --hard commitid #回滚本地仓库
git push origin henry --force #本地仓库强制替换为远程仓库
②远程仓库强制替换为本地仓库
git reset --hard origin/henry