前世今生
自2002年开始,林纳斯·托瓦兹(Linus Torvalds)决定使用BitKeeper作为Linux内核主要的版本控制系统用以维护代码。因为BitKeeper为专有软件,这个决定在社群中长期遭受质疑。在Linux社群中,特别是理查德·斯托曼与自由软件基金会的成员,主张应该使用开放源代码的软件来作为Linux内核的版本控制系统。林纳斯·托瓦兹曾考虑过采用现成软件作为版本控制系统(例如Monotone),但这些软件都存在一些问题,特别是性能不佳。现成的方案,如CVS的架构,受到林纳斯·托瓦兹的批评。
2005年,安德鲁·垂鸠(Andrew Tridgell)写了一个简单程序,可以连接BitKeeper的仓库,BitKeeper著作权拥有者拉里·麦沃伊认为安德鲁·垂鸠对BitKeeper内部使用的协议进行逆向工程,决定收回无偿使用BitKeeper的许可。Linux内核开发团队与BitMover公司进行磋商,但无法解决他们之间的歧见。林纳斯·托瓦兹决定自行开发版本控制系统替代BitKeeper,以十天的时间编写出git第一个版本。
Git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL许可协议发布。最初目的是为了更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools(一个类似Norton Commander界面的文件管理器)不同。
git最初的开发动力来自于BitKeeper和Monotone。git最初只是作为一个可以被其他前端(比如Cogito或Stgit)包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制。很多被广泛使用的软件项目都使用 git 进行版本控制,其中包括 Linux 内核、X.Org服务器和OLPC内核等项目的开发流程。
使用
在一个项目开发过程中,我们通常会需要用到 git 作为版本管理工具,下面为具体流程(超详细哦!!)
1、准备工作
首先我们要创建一个代码仓库,本文以github作为代码仓库,编辑器以goland来做演示。
- 新建好的代码仓库如下图,仓库中有个自动生成的.md文件
- goland编辑器页面,test是个空的文件夹。
2、初始化生成本地仓库
- 输入 git init 进行初始化,此时文件下会生成一个 .git文件,也是我们的本地仓库。
git init
这个文件需要到本地文件夹去查看
3、对目录下做修改操作,这里我们添加一个 text.go 文件
4、将代码提交到本地仓库
git status //查看文件状态
git add 自己要提交的文件名 //使用 . 为所有更改过的文件提交到缓存区
git commit -m"提交信息" // 提交到本地仓库
5、将本地仓库与远程仓库进行绑定
- 输入git remote add origin 远程仓库地址(使用git clone克隆下来的代码默认已经进行了远程仓库绑定)
git remote add origin
- 然后我们可以使用 git remote -v 查看我们的远程仓库地址
git remote -v
6、建立本地分支与远程分支匹配
一般在一个多人的开发项目中,不能把自己代码直接提交到主分支(各个仓库平台主分支名称不同),而是建立一个自己的远程代码分支,然后让自己本地分支跟踪到自己的远程代码分支。
- 图中cong为自己的远程代码分支
- 新建本地代码分支并切换到该分支(要与远程代码分支名称相同)
git checkout -b cong
- 查看本地分支
git branch
- 将本地分支与远程分支合并
git pull origin main --allow-unrelated-histories
- 将本地分支与远程分支关联
git branch --set-upstream-to=origin/cong cong
这样就把本地分支与远程分支关联上了。
7、提交本地代码到远程仓库
- 最后 git push提交就好了
git push
以后修改文件操作就可以直接常规四步了
git status //查看文件状态
git add 自己要提交的文件名 //使用 . 为所有更改过的文件提交到缓存区
git commit -m"提交信息" // 提交到本地仓库
git push //提交远程仓库