什么是GIT?
Git是一种版本控制系统,是一种工具,用于代码的存储和版本控制
集中式和分布式
集中式:Svn : 由中央服务器统一管理代码 ,安全性差。
分布式:Git:每个电脑都有一个版本库,安全性高。
四个工作区:
Workspace: 工作区,就是你平时存放项目代码的地方
Index / Stage: 暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息。
Repository: 仓库区(或版本库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本。
Remote: 远程仓库,托管代码的服务器,可以简单的
认为是你项目组中的一台电脑用于远程数据交换。
1.创建一个目录
2.使用git init 命令将其变为一个可以通过git管理的仓库 注意事项:第一次使用git命令提交代码之前,需要先设置用户名及邮箱,之后就不需要了:
stu@stu-virtual-machine:~/myproject$ git config --global user.email
“[email protected]”
stu@stu-virtual-machine:~/myproject$ git config --global user.name “youname”
3.使用git add filename 添加文件到暂存区
4.使用git status 查看仓库状态
5.使用 git commit -m “版本描述信息” 提交版本到仓库
**注意:切换回工作区时并修改了这个文件,用git reset --hard HEAD再切换到版本库最新文件时,然后想切换回之前的工作区,如果没有保护现场,那么将找不到工作区的内容。**所以我们工作区内容想再次利用时应该将其放入保护现场。
7.使用git reflog 查看对仓库的操作日志
8.使用git diff HEAD 比较当前内容与最后一次提交的版本的差异,如下在main.c中添加了一行内容,显示 添加的一行前面有‘+’号标识。如果内容相同则该命令不显示输出结果。HEAD也可以省略默认就是与最近 一次比较。
9.使用git checkout filename 放弃对工作区代码的修改。
10.使用git reset HEAD filename 从暂存区撤销
‘git reset --hard Head^^ 表示回到最近往前第二次的提交’
‘git reset --hard Head^ 表示回到最近往前第一次的提交’
11.使用git rm filename 删除一个文件, 此时提交到暂存区,需要commit后才在版本库中删除
12.使用git reset --hard HEAD^ 回退版本
git分支的操作命令
1.查看分支: git branch
2.创建分支: git branch 分支名
3.切换分支: git checkout 分支名
查看分支现在位于的文件:
4.创建并切换到该分支: git checkout -b 分支名
5.删除分支,不能删除当前所处分支,切换到其它分支再删除: git branch -d 分支名
6.合并某个分支到当前分支: git merge 分支名 ,合并时可能产生冲突,需要解决冲突。 有时需要禁止快速合并,可执行:git merge --no-ff -m ‘描述’ 分支名
7.历史记录一行显示 : git log --pretty=oneline
8.以图表形式显示分支:git log --graph
9.保护现场 git stash,当前工作区有代码修改了,没有提交,是不能切换到其他分支,我们可以先保存现场,再切换其他分支。
10.列出所有保存的现场信息 git stash list
11.取出某次的现场信息,继续工作 :git stash pop “stash@{1}” ,默认是最近一次,如果有多个现场,也 可以加上编号"stash@{1}"指定获取某一个。不同分支的现场,应该回到对应分支再获取,否则会自动合 并现场到当前分支的工作区。
注意:取出某次的现场信息一旦取出就不在list中了,再次使用必须添加到list中去(用git stash)。
远程仓库操作
生成通信密钥:ssh-keygen -t rsa -C “[email protected]” ,生成的公钥在/home/stu/.ssh/下,如下图
上图中的ENTER是修改存放公钥的文件和文件夹的名字 我们直接回车 放在默认位置就可以。
cat ~/.ssh/id_rsa.pub 查看公钥
把得到的公钥放在gitee网站中的个人仓库->设置->左下有个公钥,点进去就可以看见。
测试与github或者gitee(码云)有没有连通。测试github 的命令 :ssh -T [email protected]
克隆项目:git clone 项目地址
这里把gitee网上仓库的文件夹克隆给本地,在以后的上传和下载都要用到这个克隆的地址(文件夹)。
提交分支到远程仓库,并跟踪分支 :git push -u origin 分支名
拉取远程服务器上的分支更新到本地 :git pull origin 分支名
注意上面的username 和password 是gitee网站上的账号和密码,我在最开始设置的时候设置了他们,这个也不设置,按回车跳过就好。