源代码管理软件的介绍
源代码管理软件为了解决什么问题?
- bug无法解决或者需求频繁变动,导致我们需要在源代码处于某种状态时,保存一次,以便以后使用。
- 多人协调工作时,代码需要实时更新,保持所有人都是一个同步的状态。
- 当多个程序员编辑同一个文件并产生覆盖问题(冲突)时,如何处理?
如果由我们来写一个程序解决这个问题,怎么做比较好?
我们写一个服务器,然后所有人把代码都传到服务器上。要编辑代码时,就下载,编辑完之后立刻上传到服务器上,供其他人在此基础上进行编辑。我要编辑那几个文件,我就给哪几个文件在服务器上做标记,对于已经标记过的文件,其他人就不允许修改。
服务器上可以给每给文件一个版本号,每当有修改时,版本号就变化。当我上传时就会确认服务器上的版本号,对不上就得进行修改。
但是这个思路下仍然有一些问题:
太过于依赖服务器了,如果没有服务器,就没办法工作。
git基本的使用步骤
安装git,安装步骤都是默认的步骤
☞创建一个存放项目的文件夹(例如:gitDemo)
☞进入这个文件夹,选择空白处右击选择“Git Bash Here”,进入命令行的界面
☞首先配置自己的用户名和邮箱,主要是为了标识1
2git config --global user.name "Your Name"
git config --global user.email "email@example.com"
初始化一个仓库
1
git init
新建文件
readme.txt
(在你建的文件夹下建所需要的文件,这里是以‘readme.txt’为例)把这个新增操作添加到缓存区
1
2
3git add readme.txt
git add . //缓存文件夹下的所有的修改
git add --all把缓存区中存储的修改,保存成第一个版本
1
git commit -m "this is v0.0.1"
对
readme.txt
做一些修改把我们对
readme.txt
做的修改保存到缓存区。1
git add readme.txt(或者git add .)
把缓存区中存储的修改,保存成第二个版本
1
git commit -m "this is v0.0.2"
回退到第一个版本
- 看一下每个版本的版本号
git log
- 回退到第一个版本
git reset --hard [第一个版本的版本号]
注意:如果手动删除文件夹中的内容,也要把删除后的东西后添加保存缓存中1
2
3
4
5git log //查看版本信息
git log --pretty=oneline //可以看到单行版本
git reflog
git status //查看状态
q //是退出
- 看一下每个版本的版本号
9.分支与合并1
2
3
4Git branch //查看分支
Git branch dev //创建dev分支
Git checkout dev//切换到dev分支
Git checkout -b dev //创建并切换到dev分支
在当前分支里之后,我们还可以切换到master(git checkout master)后再用git merge dev
来合并
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name
,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
;
第一种情况:在同一个文件内操作分支与合并
第二种情况:在不同的文件操作(比较常见)
10 删除文件1
git rm 文件名
远程仓库(使用github作为远程仓库的准备)
1.首先,因为通讯是基于ssh(安全外壳协议secure Shell)的,我们要先有一对rsa加密的公钥和私钥。如果没有配置SSH key就只能clone代码不能push上去(只读),所以要先在Git里面生成SHH Key1
$ ssh-keygen -t rsa -C "youremail@example.com"
找到文件夹下面的id_rsa.pub文件,复制里面全部的内容(这里是生成的密码,以后在公司里面直接交给网管,在这里直接在git上用自己的账号模拟演示)。1
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCuSd5lpjk+pUFFePxPQSIBWzGmasUlJWkE7GRtU0kTacu2tXamvGckSCwwVTdNjRjVdzu7n9FK6fOGB6pjgAW1tAvjnYWzATsIXqWuEqCaI+jt0MQNc+JZBuq28UvH3XW+YzCeuwL6lKp29Y/n7kiSYJ51NFFSR8KQ3kpSTgmx4x9pNkpVPfQpGQFwVMwrRf+OxCjs3QqtBxnPUCc79oEDQrGTkn2aDh1v6FJNwx9f5HEpHCRxRMzlnYRf23BPhEGAJn9QhfYc0vPMt8KPvFyCkYhvnbde3CjKG6AKlZzuTaArdTv9HpHBFCMo+rrZHXdIUYkiE6WPxTLlxt626YPr youremail@example.com
2.在github中创建一个仓储(这里主要是用来模拟公司账号)New repository
生成仓储地址之后,在setting中找到SSH and GPG keys,把电脑上生成的秘钥添加上去,创建秘钥。
确定本地和github的服务器可以通信之后,就可以拉代码、push代码了。
3.新建一个文件夹(准备从git上下载刚刚创建的仓储)
4.进入这个文件夹,空白处右击git bash here
5.输入命令:1
2git clone 仓储地址 //下载的是master分支源代码,而不是所有分支的源代码
git clone xxx.git "指定目录"
推荐用SSH的地址,而不是HTTPS,这样就不用每次输用户名密码了。
6.如果对下载的项目中又添加了一些内容(也就是修改了一些内容或者增加一些功能),我们要把修改之后的项目上传到git上去,就要执行一下命令:1
2
3git add .
git commit -m '版本说明信息'
git push origin master
7.如果其他人和你修改了同一个文件的代码,试图上传到服务器上,就会发生冲突,你可以先git pull下载,然后在本地合并解决冲突再推送。
从本地推送分支,使用git push origin branch-name
,如果推送失败,先用git pull(origin master)
抓取远程的新提交;
如何 clone 非 master 分支的代码 — 切换到指定 branch分支 或者 tag版本
方法1(界面操作)
在github上找到分支,并点击,然后在点击“clone or download”,选择”Download Zip”这时下载的就是指定分支下面的源代码
方法2(命令行操作)
- 在本地使用
git clone git@github.com:ustbhuangyi/vue-music.git
(注意这下载的是master分支的源代码,而不是所有分支的源代码) - 如果要查看所有的分支使用命令
git branch -a
,(绿色表示当前的分支,红色表示远程的分支) - 如果要切换到
chapter1
分支命令为:git checkout chapter1
,这时查看的就是chapter1
分支下的源代码