fzy-blog

git 常用命令

2019-05-24

git 常用命令

创建版本库

1
2
git clone https://gitee.com/fengzhaoy/mypro.git   #克隆git项目到本地 默认master分支
git init #初始化本地版本库

修改和提交

1
2
3
4
5
git status  #查看文件状态,列出当前目录没有被git管理,以及被修改过还未提交的文件
git add . #将提交的文件添加到索引库中(添加到缓冲区),*可以是路径也可以是.符号,
git add . 代表将当前目录下的所有文件都添加到索引库中,如果指定路径则代表将制定路径的文件添加到索引库中。
git rm -rf <file> #删除本地指定文件
git commit -m 'fix' #提交到本地仓库并加注释 这一步仅仅是放在缓冲区中,还未真正提交到远程

查看提交历史

1
2
3
git log #查看提交历史
git log -p <file> #查看指定文件的提交历史
git blame <file> #以列表方式查看指定文件的提交历史

撤销修改

1
2
3
4
5
git reset --hard HEAD #还原本地未提交的更改
git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态
git checkout HEAD <file> #撤消指定文件的未提交文件的修改内容
git revert <COMMIT> #撤消指定的提交 当用 revert 撤销改动时,它会产生新的提交。
git stash #把所有没有提交的修改暂存到stash里面。可用git stash pop回复。

分支与标签

1
2
3
4
5
6
7
8
9
10
git checkout <branch/tag> #切换到指定分支或标签
git checkout -b <branch> #创建分支
git branch #显示所有本地分支
git branch <new-branch> #创建新分支
git branch -d <branch> #删除本地分支
git branch the_branch_backup #备份一下这个分支当前的情况

git tag #列出所有本地标签
git tag <tagname> #基于最新提交创建标签
git tag -d <tagname> #删除标签

合并与衍合

1
2
git merge <branch> #当前分支合并其他分支
git rebase <branch> #衍合指定分支到当前分支

远程操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
git pull #拉取远程所有分支代码合并到本地
git pull origin <branch> #更新当前分支的代码,获取最新的代码 如:git pull origin dev

git push origin <branch> #上传代码及快速合并到远程branch仓库 如:git push origin dev
git push origin :<branch/tag-name> #删除远程分支或标签
git push --tags #上传所有标签

#git fetch用法:
cat .git/FETCH_HEAD #查看FETCH_HEAD内容
git fetch origin master:tmp #在本地新建一个temp分支,并将远程origin仓库的master分支代码下载到本地temp分支
git diff tmp #比较本地代码与刚刚从远程下载下来的代码的区别
git fetch <remote> #从远程库获取代码

git remote -v #查看远程版本库信息
git remote show <remote> #查看指定远程版本信息
git remote add <remote> <url> #添加远程版本库

全局配置

1
2
git config --global user.name '杨' #设置用户名
git config --global user.email 'zhaoyang10@163.com' #设置邮箱

代码回滚

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
代码库回滚: 指的是将代码库某分支退回到以前的某个commit id
本地代码库回滚:
git reset --hard commit-id #回滚到commit-id,讲commit-id之后提交的commit都去除
git reset --hard HEAD~3 #将最近3次的提交回滚

远程代码库回滚:
这个是重点要说的内容,远程比本地回滚要复杂
应用场景:自动部署系统发布后发现问题,需要回滚到某一个commit,再重新发布
原理:先将本地分支退回到某个commit,删除远程分支,再重新push本地分支
操作步骤:
1、git checkout the_branch
2、git pull
3、git branch the_branch_backup #备份一下这个分支当前的情况
4、git reset --hard the_commit_id #把the_branch本地回滚到the_commit_id
5、git push origin :the_branch #删除远程 the_branch
6、git push origin the_branch #用回滚后的本地分支重新建立远程分支
7、git push origin :the_branch_backup #如果前面都成功了,删除这个备份分支

重命名分支名

1
2
3
4
5
6
7
8
9
10
11
12
13
14
假设分支名称为oldName
想要修改为 newName
一、 本地分支重命名(还没有推送到远程)
git branch -m oldName newName

二.、远程分支重命名 (已经推送远程-假设本地分支和远程对应分支名称相同)
a. 重命名远程分支对应的本地分支
git branch -m oldName newName
b. 删除远程分支
git push --delete origin oldName
c. 上传新命名的本地分支
git push origin newName
d.把修改后的本地分支与远程分支关联
git branch --set-upstream-to origin/newName

拉取远程分支到本地

1
2
3
4
5
6
7
8
9
10
11
12
一、查看所有远程分支
git branch -r
二、拉取远程分支并创建本地分支
方法一
git checkout -b 本地分支名x origin/远程分支名x
使用该方式会在本地新建分支x,并自动切换到该本地分支x。
采用此种方法建立的本地分支会和远程分支建立映射关系。

方式二
git fetch origin 远程分支名x:本地分支名x
使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checkout。
采用此种方法建立的本地分支不会和远程分支建立映射关系。

分支合并

1
2
3
4
5
6
7
8
9
10
假设有一分支dev 是团队共同开发的代码分支
你为了开发一新功能,通过dev分支新建了一个分支叫job分支,你在job分支上把新功能开发完成。
但是因为团队成员在不断提交dev分支,当你要把job分支功能合并到dev分支,则需要先切换到dev分支
git merge job
解决冲突 然后提交到本地git
git add .;git commit -m '合并job分支开发完成功能'
切换到job分支,再把dev分支mege到job分支
git checkout job
git merge dev
git push origin job #这样就可以保证job分支是最新代码,同时也不影响到dev分支。

git 提交规范

公式:

1
<type>(<scope>): <subject>

type 用于说明 commit 的类别,只允许使用下面 7 个标识。

1
2
3
4
5
6
7
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动

scope 用于说明 commit 影响的范围,比如数据层、控制层、视图层等等,视项目不同而不同。
subject 是 commit 目的的简短描述,不超过 50 个字符。

1
2
3
1. 以动词开头,使用第一人称现在时,比如change,而不是changed或changes
2. 第一个字母小写
3. 结尾不加句号(.)

参考:http://blog.didispace.com/git-commit-specification/

git 常用技巧

https://github.com/521xueweihan/git-tips

git fork 仓库保持同步

参考:https://juejin.im/post/5c82181af265da2da835a3e5

git 各种情况的版本回退

参考:http://blog.csdn.net/fuchaosz/article/details/52170105

git 原理

参考:https://github.com/ZXZxin/ZXBlog/blob/master/%E5%B7%A5%E5%85%B7/Git/Git_1_%E5%9F%BA%E7%A1%80%E5%92%8C%E5%85%A5%E9%97%A8.md

使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章