首页 > 代码库 > 170425-git命令详解

170425-git命令详解

1.gitlab版本管理工具的使用
1.1 配置git
1.2 创建版本库
1.3 删除文件
1.4 建立基于git的文件跟踪.
1.5 把文件提交到仓库
1.6 查看当前仓库的状态
1.7 比较当前文件和已提交文件的不同
1.8 查看提交日志
1.9 版本回退
1.10 创建本地分支
1.11 查看本地分支
1.12 切换分支
1.13 提交修改
1.14 撤销修改
2远程仓库:
2.1 创建SSH Key:
2.2 关联远程仓库
2.3 第一次推送内容到远程仓库:
2.4 后续提交变更到远程仓库:
2.5 从远程仓库克隆数据:
2.6 查看远程分支
2.7 推送本地分支到远程服务器上;
2.8 推送本地分支到远程分支的情况:
2.9 创建远程分支到本地
2.9 切换到远程分支
2.10 删除远程分支
2.11 删除本地分支
2.12 重命名本地分支
2.13 查看远程和本地分支
2.14 拉取分支
3分支管理:
3.1 创建分支并切换到分支上:
3.2 查看分支
3.3 创建分支
3.4 切换分支
3.5 将其他分支的提交合并到当前分支
3.6 合并冲突
3.7 查看合并过程:
4 Bug分支
4.1 保存现场
4.2 修复bub过程
5 标签管理
5.1 创建标签
5.2 查看标签列表
5.3 给历史commit打标签
5.4 查看标签详情
5.5 创建标签的时候附带上标签说明
5.6 删除本地标签
5.7 推送指定标签到远程服务器上
5.8 推送所有标签到远程服务器上
5.9 删除远程标签
5.10 github
5.11 给git 增加颜色
5.12 忽略特殊文件
5.13 给命令取别名
把一个分支的修改合并到当前分支
拉取代码的时候采用rebase的形式
git revert
分支合并的建议
重要概念
创建temp分支, 将远程master分支下载到本地temp分支中.
比较当前分支和temp分支的区别

1.gitlab版本管理工具的使用

1.1 配置git

git config –global user.name "Your Name"
git config –global user.email "email@example.com"

1.2 创建版本库

git init // 将当前目录变成git可以管理的仓库;[如果代码已经存在也可以使用该命令]

1.3 删除文件

rm 文件
git rm 文件
git rm –cached 文件 //撤销某个文件的追踪.
git commit -m ‘删除文件‘
[如果删除错了,也可以从版本库中检出文件进行恢复]

1.4 建立基于git的文件跟踪.

git add //提交
git add 文件名 //提交单个文件
git add . //提交所有
git add –all //提交所有

1.5 把文件提交到仓库

git commit -m ‘xxx‘ -m后是提交的说明信息

1.6 查看当前仓库的状态

git status

1.7 比较当前文件和已提交文件的不同

git diff 文件
git diff HEAD – 文件

1.8 查看提交日志

git log //查看每次提交的版本信息
git log –pretty=oneline //单行模式显示(只显示版本号和版本注释)

  1. commit 3f90684cd8049f14dc5b0f53ca631d06583d5e31
  2. Author: qiang <qiang.wu@lefu8.com>
  3. Date: Tue Mar 21 10:07:17 2017 +0800
  4. 7.rest framework 简单配置使用

1.9 版本回退

版本回退到某个时间点后通过log是看不到该时间点以后的版本号的,要想穿越到未来的版本只有靠记住未来版本的版本号.
[git reflog 命令操作历史,这里没准也能找到你曾今的版本号],然后执行git reset –hard 版本号穿越到未来版本;

git reset –hard
git reset –hard 版本号[每次commit都会生成一个版本序列号]
git reset –hard 3f90684cd8049f14dc5b0f53ca631d06583d5e31

1.10 创建本地分支

git checkout -b develop1

1.11 查看本地分支

git branch

1.12 切换分支

git checkout 分支名称 //和撤销很像 就差‘–‘ 两个横杆

1.13 提交修改

git add 文件1 //放入暂存区
git add 文件2 //放入暂存区
git add -f 文件 //强制放入暂存区[被.gitignore忽略了的文件]
git check-ignore -v 文件 检查.gitignore文件规则和提交文件的冲突
git commit -m ‘‘ //提交暂存区中的文件

1.14 撤销修改

git add 文件 //后发现文件修改不对
git checkout – 文件 //将文件撤销到文件最近一次git commit或git add状态[文件还未进行git add]

如果文件已经git add 了需要 git reset HEAD file 撤销到git add之前.
如果文件已经 git commit了 需要 进行版本回退.
git reset –hard

2远程仓库:

2.1 创建SSH Key:

ssh-keygen -t rsa -C ‘xxx@lefu8.com‘

2.2 关联远程仓库

git remote add origin git@10.10.116.61:qiang.wu/kubo.git

2.3 第一次推送内容到远程仓库:

git push -u origin master

[Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。]

2.4 后续提交变更到远程仓库:

git push origin master

2.5 从远程仓库克隆数据:

git clone git@10.10.116.61:qiang.wu/kubo.git

2.6 查看远程分支

git remote
git remote -v 会显示权限[fetch push推送信息的权限]

2.7 推送本地分支到远程服务器上;

git push origin master //master是本地分支
git push origin dev //将dev的本地分支推送到远程服务器上

master分支 dev分支都需要和远程服务器保持一致;

2.8 推送本地分支到远程分支的情况:

a.远程已有remote_branch分支并且已经关联本地分支local_branch且本地已经切换到local_branch
git push

b.远程已有remote_branch分支但未关联本地分支local_branch且本地已经切换到local_branch
git push -u origin/remote_branch

c.远程没有有remote_branch分支并,本地已经切换到local_branch
git push origin local_branch:remote_branch

2.9 创建远程分支到本地

git checkout -b dev origin/dev

2.9 切换到远程分支

git checkout –track origin/dev

2.10 删除远程分支

git push origin :remote_branch //方法一
git branch -d -r branchname //方法二

2.11 删除本地分支

git branch -d local_branch

2.12 重命名本地分支

git branch -m old_branchname new_branchname
如果new_branchname已经存在使用
git branch -M old_branchname new_branchname

2.13 查看远程和本地分支

git branch -a // 查看所有分支
git branch -r //查看远程分支

2.14 拉取分支

设置本地分支和远程分支的链接
git branch –set-upstream dev origin/dev
git pull

git commit -m ‘merge & fix ‘
git push origin dev

3分支管理:

3.1 创建分支并切换到分支上:

git checkout -b dev

基于远程分支创建一个分支
git checkout -b dev origin/dev

3.2 查看分支

git branch

3.3 创建分支

git branch dev

3.4 切换分支

git checkout dev

3.5 将其他分支的提交合并到当前分支

git checkout master //切换到主分支
git merge dev //将dev分支合并到主分支
git branch -d dev //删除分支. [当分支未合并时候,会报错]
git branch -D dev //强制删除;

3.6 合并冲突

git merge dev
git status //查看冲突

然后直接打开冲突的文件
解决冲突
git add 冲突文件
git commit -m ‘aaa‘
然后当前的版本合并就完成了;

3.7 查看合并过程:

git log //查看日志完整版
git log –graph //查看合并完整版
git log –graph –pretty=oneline –abbrev-commit //查看合并的精简版
git log –pretty=oneline –abbrev-commit //查看日志的精简版

git merge –no-ff -m ‘merge with no-ff‘ dev //非fast forward的合并模式;

git log –graph –pretty=oneline –abbrev-commit

技术分享

4 Bug分支

4.1 保存现场

git stash

4.2 修复bub过程

git checkout master //切换到主分支
git checkout -b issue-101

修改bug
修复完成
git add 文件
git commit -m ‘fix bug 101‘

切换回主分支
git checkout master
git merge –no-ff -m ‘merged bug fix 101‘ issue-101

删除修复bug分支
git branch -d issue-101

返回到自己的分支
git checkout dev
git status
查看现场
git stash list
恢复现场
git stash apply stash@{0} //恢复但是不删除现场
git stash drop 现场 //删除现场

git stash pop 现场 //恢复的同时删除现场

5 标签管理

发布一个版本时,我们首先在版本库中打一个标签(tag).标签是版本库的一个快照;

5.1 创建标签

git checkout master //切换到需要打标签的分支[一般这个分支是master]
git tag v1.0

5.2 查看标签列表

git tag

git log –pretty=oneline –abbrev-commit
644a1a0 增加用户登录功能 editor page_head.html.
ce365a8 增加用户登录功能.
ea26444 Modify Admin display interface and use the local language.
b32f957 add 404.html

5.3 给历史commit打标签

git tag v0.9 644a1a0 //指定commit提交的版本号

5.4 查看标签详情

git show v0.9

5.5 创建标签的时候附带上标签说明

git tag -a v0.9 -m ‘version 0.1 released‘ 644a1a0

给tag加上签名:
git tag -s v0.2 -m ‘signed version 0.2 released‘ 644a1a0

5.6 删除本地标签

git tag -d v0.1

5.7 推送指定标签到远程服务器上

git push origin v0.1

5.8 推送所有标签到远程服务器上

git push origin –tags

5.9 删除远程标签

1.
先删除本地标签
git tag -d v0.9
2.
再删除远程标签
git push origin :refs/tags/v0.9

5.10 github

http://blog.jobbole.com/76854/
pull request

  1. 开发者在本地仓库中新建一个专门的分支开发功能.
  2. 开发者先push自己的分支到公开的bitbucket仓库中;
  3. 开发者通过bitbucket发起一个pull request.
  4. 团队的其他成员review code.讨论并修改.
  5. 项目维护者合并功能到官方仓库中并关闭pull request.

5.11 给git 增加颜色

git config –global color.ui true

5.12 忽略特殊文件

在git工作区的根目录下创建一个特殊的文件.gitignore
https://github.com/github/gitignore

忽略文件的原则是:

忽略操作系统自动生成的文件,比如缩略图等;
忽略编译生成的中间文件、可执行文件等,也就是如果一个文件是通过另一个文件自动生成的,那自动生成的文件就没必要放进版本库,比如Java编译产生的.class文件;
忽略你自己的带有敏感信息的配置文件,比如存放口令的配置文件。

5.13 给命令取别名

  • git config –global alias.st status
  • git config –global alias.ci commit
  • git config –global alias.br branch

  • git ci -m ‘bala bala bala‘

  • git config –global alias.last ‘log -1‘
  • git config –global alias.unstage ‘reset HEAD‘

把一个分支的修改合并到当前分支

git checkout mysite
git rebase origin
将本地的commit转换成补丁,然后将当前工作区更新为最新的origi分支.然后再将转换后的补丁应用到mysite中;

当rebase存在冲突的时候;
解决冲突:
git rebase –continue
git rebase –abort 随时终止rebase行动.

拉取代码的时候采用rebase的形式

git pull –rebase //向本地拉取代码的时候,将本地的commit保存为补丁

git revert

git revert 是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留
git reset 是回到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区
http://blog.csdn.net/hudashi/article/details/7664460

分支合并的建议

建议一般我们把别的分支合并到master时用merge,而把master合并到别的分支时会用到rebase的原因,这是因为master分支一般commit会比较频繁。

重要概念

pull=fetch+merge
![](/assets/Git Data Transport commands.png)

创建temp分支, 将远程master分支下载到本地temp分支中.

git fetch origin master:temp

比较当前分支和temp分支的区别

git diff temp
解决冲突



null


170425-git命令详解