技能篇之GIT使用
目录
GIT的安装
linux下安装
首先试一下git,如出现下面的代码这证明你的机器已经安装了GIT;
$git
usage: git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
These are common Git commands used in various situations:
如果出现下面的提示,则说明你的机器没有安装GIT;
$git
The program 'git' is currently not installed. You can install it by typing:
如果你用的是Ubuntu Linux,通过一条sudo apt-get install git就可以直接完成Git的安装,非常简单。
$sudo apt-get install git
安装完成之后,可以通过git version,查看你的git版本
$git version
git version 2.14.1
windows下安装
在Windows上使用Git,可以从Git官网直接下载安装程序,然后按默认选项安装即可。
安装完成之后,在桌面上点击右键,可以找到Git GUI Here和Git Bash Here,选择Git Bash Here,即可弹出git的操作窗口(在当前目录下)
安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。你也许会担心,如果有人故意冒充别人怎么办?这个不必担心,首先我们相信大家都是善良无知的群众,其次,真的有冒充的也是有办法可查的。
注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
GIT仓库管理
创建本地仓库
只需在你想要的目录下面执行下面的命令即可;
$git init
Initialized empty Git repository in /home/git_ku/.git/
创建完成之后,会生成一个.git的文件,这样就完成仓库的创建。
创建远程仓库
在github或者gitlab上建立远程仓库,则需登录它们的网站建立;
此处以gitlab为例,你只需在你的project上,点击New project,根据步骤完成就可以了;
这里创建了一个test_project的空项目,你可以通过ssh或HTTP地址去拉取的项目代码
Github或Gitlab的基本使用ssh-key的客户端配置
这里以Gitlab为例,Github和Gitlab类似:
linux下的ssh-key配置(windows类似)
1、生成Key
$ssh-keygen -t -rsa -C "邮箱地址"
2、进入.ssh目录下复制你的id_rsa.pub的公钥
$cd ~/.ssh/
3、复制id_rsa.pub的公钥到Github
配置多个SSH
1、在.ssh目录目录下新建config配置(如有直接更改配置)
$cd ~/.ssh/
$vim config
2、新增配置,添加Host/HostName/User/IdentityFile
Host Gitlab的地址
HostName Gitlab的地址
User Gitlab的用户名
IdentityFile id_rsa的路径
多账号直接复制上面配置就可以新增多个(注意id_rsa、id_rsa_pub文件名唯一);
GIT拉取推送操作
克隆项目
命令:git clone 你的git地址;
$git clone ssh://git@gitlab/test/test_project.git
推送文件
$git add 文件名
$git commit -m "新增测试文件"
$git push
当git add 后面加点(.)时,可以一次推送当前目录下所有修改或新增的文件
拉取项目代码
$git pull
查看是否有需要git处理的操作
$git status
On branch test_branch
nothing to commit, working tree clean
GIT分支操作
创建分支
查看本地分支:
$git branch
查看远程分支:
$git branch -a
创建本地分支:
$git checkout -b test_branch
Switched to a new branch 'test_branch'
提交本地分支到远程
$git add 文件名
$git commit -m "新增测试文件"
$git push --set-upstream origin test_branch
删除分支
删除分支不能在本分支上操作,需要切换到其他分支上进行操作
本地删除分支:
$git branch -d test_branch
warning: deleting branch 'test_branch' that has been merged to
'refs/remotes/origin/test_branch', but not yet merged to HEAD.
Deleted branch test_branch (was 9d90619)
删除远程分支:
$git branch -r -d origin/test_branch
Deleted remote-tracking branch origin/test_branch (was 9d90619).
$git push origin :test_branch
To ssh://gitlab/test/test_project.git
- [deleted] test_branch
删除远程分支时,执行删除命令之后,需要推送到远程,推送时,origin和冒号(:)之间有一个空格( )需要注意添加。
合并分支
合并分支,使用“git merge 分支名”命令,意思是合并分支到当前分支上:
$git merge test_branch
解决合并冲突
当合并时产生冲突时,需要自己去解决冲突
<<<<<<< HEAD
Creating a new branch is 冲突。
=======
Creating a new branch is merge冲突.
>>>>>>> feature1
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,我们修改如下后保存,再推送到远程即可
Creating a new branch is merge冲突.
GIT版本操作
版本回退
1、版本回退,“git reset –hard HEAD^”,每加一个“^”回退一个版本;
$git reset --hard HEAD^
HEAD is now at 87c8a80 修改文件
2、版本回退,“git reset –hard HEAD~10”,后面的数字表示回退到上多少个版本;
$git reset --hard HEAD~10
3、回退到指定版本,可以用“git reflog”查找版本编号,然后用“git reset –hard 87c8a80”,回退到指定版本;
$git reflog
70af2eb (HEAD -> master) HEAD@{0}: reset: moving to HEAD~2
87c8a80 HEAD@{1}: reset: moving to HEAD^
083d6b3 (origin/test_branch, origin/master, origin/HEAD, test_branch) HEAD@{2}: checkout: moving from te_branch1 to master
9d90619 HEAD@{3}: checkout: moving from master to te_branch1
083d6b3 (origin/test_branch, origin/master, origin/HEAD, test_branch) HEAD@{4}: checkout: moving from te_branch1 to master
$git reset --hard 87c8a80