您的位置:首页 > 其它

git常用命令

2018-01-04 18:58 387 查看

git克隆命令,免交互:

$ git clone http://username:password@127.0.0.1/res/res.git[/code] 

gitlab通过token克隆:

git clone https://<username>:<private-token>@gitlab.anydomainhere.com/developers/<projectname>.git 例:
$ git clone http://liuyongzhan:wynkBcMfqfpQVMBVrxRs@192.168.30.45/liuyongzhanTest/liuliuliu.git 
$ git config --global user.name "liuyongzhan"//给自己起个用户名
$ git config --global user.email  "liuyongzhan@opssino.com"//填写自己的邮箱

$ git config --global gitlab.user liuyongzhan
$ git config --global gitlab.token wynkBcMfqfpQVMBVrxRs


git通过ssh协议克隆代码:

1.本地生成ssh秘钥:

ssh-keygen -t rsa


说明:

a.直接敲3次回车

b.第一次回车表示key文件放在默认的路径下,默认key放在家目录下;也可不回车,输入指定的存放目录。

c.第二和第三次回车中会提示你输入一个密码,这个密码会在你提交项目时使用,如果为空的话提交项目时则不用输入。这个设置是防止别人往你的项目里提交内容。

2.在github/gitlab上添加ssh公钥:

cat /root/.ssh/id_rsa.pub


复制公钥文件的内容到github上(Settings–>SSH Keys–>Add key),title随意

3.测试认证是否成功:

ssh -T git@192.168.30.45


4.可以通过ssh协议克隆代码了:

git clone git@192.168.30.45:liuyongzhanTest/liuliuliu.git


注意:

git clone命令的内容会在错误输出里:此为正常现象

Cloning into 'liuliuliu'...


当git仓库为空的时候,第一次在本地库目录执行git pull命令会报一个错误输出:此为正常现象

Your configuration specifies to merge with the ref 'refs/heads/master'
from the remote, but no such ref was fetched.


git全局配置和单个仓库的用户名邮箱配置

配置全局的用户名和邮箱

$ git config --global user.name "github's Name"

$ git c
4000
onfig --global user.email "github@xx.com"

$ git config --list


如果你公司的项目是放在自建的gitlab上面, 如果你不进行配置用户名和邮箱的话, 则会使用全局的, 这个时候是错误的, 正确的做法是针对公司的项目, 在项目根目录下进行单独配置

$ git config user.name "gitlab's Name"

$ git config user.email "gitlab@xx.com"

$ git config --list


git config –list

查看当前配置, 在当前项目下面查看的配置是全局配置+当前项目的配置, 使用的时候会优先使用当前项目的配置

git log相关:

根据需求号去log里筛选文件对应的版本号:

$ git log --pretty=format:"%h,%an,%at,%s" --grep "^AC-1\s" uat --
b780869,liuyongzhan,1514259242,AC-1 add 1


git日志倒序:

$ git log --reverse


git 通过版本号,查出对应文件的修改状态:不需要加分支名:

$ git log c7f9ccc -n 1 --pretty=format: --name-status
M       3.txt
A       5.txt


获取最后一次版本号,用以冲突时进行回退:

git log -n1 --pretty=format:%h


git创建分支

关于创建分支:

git在本地创建uat分支,推到远程去,要执行3步:

git branch uat
git push origin uat:uat
git branch --set-upstream-to=origin/uat uat


git多种撤销

回退到指定版本:

git reset --hard 271eb04


撤销暂存区中某个文件的修改:(那么该文件的修改会回到工作区)

git reset HEAD 1.txt


撤销工作区中某个文件的修改:

git checkout -- 1.txt


清空untracked file:

删除 untracked files

git clean -f


连 untracked 的目录也一起删掉

git clean -fd


连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)

git clean -xfd


在用上述 git clean 前,强烈建议加上 -n 参数来先看看会删掉哪些文件,防止重要文件被误删

git clean -nxfd
git clean -nf
git clean -nfd


git合并代码

摘樱桃:

$ git cherry-pick 53c99db c771517


合并某分支到当前分支:

$ git merge master --no-ff --no-commit

说明:
--no-ff:合并时会产生一个新的commit节点。在删除源分之后,目标分支的合并信息仍然被保留,在以后的代码分析中可以便捷的查看到历史信息,而fast forward方式则无法辨识代码的合并信息。
--no-commit:参数使得合并后,为了防止合并失败并不自动提交,能够给使用者一个机会在提交前审视和修改合并结果。


git查看状态

merge/cherry-pick/revert的时候,可以通过git status -s命令查看文件修改状态:

$ git status -s
UD 1.txt
M  6.txt
A  7.txt
UU 新建文件夹/10.txt
A  新建文件夹/11.txt


git status中文编码问题:

$ git status -s
AA "\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/10.txt"


转为可识别编码:

$ git config --local  core.quotepath false

$ git status -s
AA 新建文件夹/10.txt


例:git整分支合并

克隆:
git clone http://liuyongzhan:liuyongzhan@192.168.xxx.xxx/liuyongzhanTest/liuliuliu.git 
切换分支:
git checkout <name>

合并某分支到当前分支:
git merge master --no-ff --no-commit

提交前的查看合并结果:
git status -s

冲突时,终止merge:
git merge --abort

提交合并:
git commit -m "整分支合并"

推送到远程库:
git push --set-upstream origin <branchName>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: