一、git安装
进入git官网:git官网,下载windows版本并安装。
具体安装教程参考:安装教程。
二、git连接gitlab个人远程仓库
本地git仓库和gitlab网络仓库之间的传输是通过ssh加密的,必须要让gitlab仓库认证你ssh key,因此需要通过ssh key建立连接。其教程为:
1、打开gitbash终端,新建一个.ssh文件夹:
mkdir ~/.ssh
2、进入文件夹:
cd ~/.ssh
3、执行生成ssh key的命令,并按三次回车:
ssh-keygen -t rsa -C "1578070522@qq.com"(将1578070522@qq.com换成自己注册的邮箱)
这时候文件夹下就生成了以下几个文件,其中id_rsa中的内容是私钥,id_rsa.pub中的内容是公钥,可以在C:\Users\用户.ssh目录下找到这两个文件。
4、用记事本打开id_rsa.pub文件,复制所有内容(即公开密钥)
5、打开gitlab并登陆,点击右上角的个人头像,点击Edit profile,
6、进入user setting页面,点击左侧菜单栏SSH Keys,并在箭头指向的框中粘贴复制的内容,再点击Add key。
7、测试连接是否成功
ssh -T git@gitlab.com
连接成功!
8、配置git仓库用户姓名和邮箱:
git config --global user.name chenlunwang(姓名)
git config --global user.email 1578070522@qq.com(邮箱)
(配置完成后,可输入git config -l查看配置信息)
三、将gitlab已有仓库拉取到本地并进行修改上传
1、在本地建立一个文件夹,在gitbash终端进入该文件夹路径下(如我的路径为:D:\e319):
2、进入gitlab中已有的仓库,点击Clone,选择第一个地址并复制。
3、将gitlab上选中的仓库文件克隆到本地:
git clone git@gitlab.com:coherent1/test.git(此处更换为对应仓库的地址)
此时本地就产生一个test仓库,并默认为master分支。
(ps:请勿随便修改本地仓库名称及仓库中.git文件,以免造成不必要的后果)
4、建立个人分支,并从master分支切换到个人分支:
git checkout -b 分支名称
5、在个人分支下,自行修改文件或添加文件后。
将所有修改提交本地git仓库的暂存区:
git add --all
6、将暂存区的修改提交到本地git版本库的开发分支上,并添加注释:
git commit -m "xxx"(xxx更改为自己的注释内容)
7、将远程仓库主分支master文件的最新版本合并到当前分支下:(保证本地仓库的文件是最新的)
git pull origin master
每次在操作完git commit命令后,必须拉取一下master分支代码,保持本地正在开发功能逻辑的代码分支代码是最新的,避免后续在提交时冲突过多或覆盖掉其他人的代码的问题出现。
(若发生冲突,输入git status可以告诉我们冲突的文件)
8、第一次将本地个人分支的内容推送到gitlab远程仓库的个人分支中,若远程仓库中没有个人分支会自动创建,且将本地分支与远程分支关联起来:
git push -u origin 分支名称
后面每次本地提交后,可使用以下两个命令进行提交:
git push origin 分支名称
git push
9、在gitlab仓库中点击Branchs,若上传成功,就会出现新上传分支。
10、最后,点击Merge requests,提交分支请求即可。
四、本地版本回退
每次commit提交的时候,就会生成一个版本快照,并且版本信息通过链表串在一起。如果不小心把文件改乱了或者误删了文件,可以从之前的某一个版本恢复,然后重新工作,而不用把之前的工作全部丢失。
1、查看版本提交的历史记录:
git log
2、回退到之前的某一个版本:
git reset --hard 版本号
3、若已经回退到之前的版本,又想恢复到新版本,先查看历史命令,找到最新一次commit的id:
git reflog
4、恢复到新版本:
git reset --hard 新版本号
五、git常用命令
git log 查看提交历史
git staus 查看当前分支待提交内容的状态
git rm 文件名 删除一个文件
git branch 查看当前本地所有分支
git merge 分支1 将分支1的内容合并到当前分支
git branch -d 分支1 删除分支1
git switch 分支1 切换到分支1
git tag v.0.1 打标签
其它有关git具体教程可参考:廖雪峰的git教程。
git分支冲突的原理及解决方法:分支冲突的产生与解决。