git现在作为一个主流的版本管理工具,掌握它的用法对于开发者来说十分有必要。这里我就总结一下,平时工作中常用的一些git命令。这里就不再说git的安装过程了,一般公司都是将代码放在gitLab上管理的,首先,我们需要从gitLab上来拉取我们的项目代码。这里我们需要先生成SSH密钥,将公钥添加到gitLab上,这样才能拉取代码。
1.git生成ssh密钥
在命令行中,输入ssh-keygen -t rsa -C "youremail@example.com"命令,后面是公司给你开的邮箱账户。这条命令执行完后,检查你的用户名所在目录是否多了一个.ssh文件夹,window下就是C/用户/你的用户名/.ssh。Linux系统就是在/Users/用户名/.ssh,打开.ssh目录里的id_rsa.pub文件,将里面的内容复制,然后打开gitLab,点击Settings,选中SSH keys,将其粘贴,添加keys,这样就可以了。
2.拉取项目
直接克隆:git clone <remote repository address>
克隆指定分支:git clone -b branch(分支名) <remote repository address>
3.提交代码:
提交代码,在git中是有几个步骤的。
3.1 git add <file>
这里可以git add <file1> <file2> <file3> , 也可以 git add <file1>,再执行git add <file2>,再执行git add <file3>, 还可以直接git add -A
3.2 git commit -m "remark"
这一步是将文件提交到本地仓库,remark是提交说明
3.3 git push [origin branch]
这一步是将本地仓库代码推送到远程分支,后面默认可以不写。
4.更新代码
命令 git pull
在多人合作开发项目时,当别人提交代码后,自己的分支就会落后于远程分支,需要先从远程拉取更新代码,自己才能提交。
5.冲突
冲突是不可避免的,当两个人同时修改一个文件时,需要我们自己去解决冲突,这里介绍一些解决冲突的办法。
5.1 当你的代码git push时,出现冲突,这时肯定会失败,因为你的代码版本落后于当前的远程版本,可以先git pull,这个时候如果git无法帮你auto merge,需要你自己去解决冲突,然后在提交代码。
5.2当你本地没有commit,git pull时出现冲突,可以使用git stash命令,然后执行git pull, 这个时候远程代码就被拉取下来了,再执行git stash pop,自己去手动解决冲突。Updated upstream 和=====之间的内容就是pull下来的内容, ====和stashed changes之间的内容就是本地修改的内容。解决完冲突后,就可以提交代码了。
6 代码回退
有时我们需要让远程代码覆盖我们本地的代码,或者我们想回退到某个版本,在那个版本上继续开发,这个时候就需要代码回退的功能。
回退到上一版本:git reset --hard HEAD^
回退到某一历史版本: git reset --hard <vesion-id>
7.查看本地变更了哪些代码
命令:git status
8.查看提交历史信息
命令:git log
9. 比较两个版本之间的代码差异
查看两个版本之间的代码差异:git diff <vesion-id1> <version-id2>
查看两个版本之间的代码差异名单:git diff <version-id1> <version-id2> --name-only
将两个版本之间的代码差异文件拷贝到某个文件夹下:cp --parents $(git diff <version-id1> <version-id2> --name-only) F:/diff/
10.查看分支
查看本地所在分支:git branch ,*表示当前所在分支
查看本地和远程所有分支:git branch -a
11.切换或创建分支
切换分支:git checkout <branch>
创建并切换分支:git checkout -b <branch>
将本地创建分支推送到远程分支(最好是同名):git push orgin <local-branch>:<remote-branch>
12.删除分支
删除本地分支:git branch -d <branch> 或者 git branch -D <branch>
删除远程分支:git push origin --delete <remote-branch>
13.合并代码
我们常常在多个分支上同时开发,这样就需要去将别的分支代码合并到主分支上,需要git merge <branch>这个命令
如果我们需要将sit代码合并到uat上,我们需要在uat分支上执行git merge sit这个命令。
14.常见的换行符转换问题
如果我们的开发人员,有的是在windows环境开发,有的是在mac或者linux上开发,这时就需要关注一下这个问题了,在.gitconfig配置文件中有添加自动转换配置,或者执行命令git config --global core.autocrlf true ,就可以自动转化了。
总结一下:git的命令很多,这里只简单说了一些常用的命令,对于平时工作使用的话应该就够了。