13、git
安装Git
网上有很多Git安装教程,如果需要图形界面,windows下建议使用TortoiseGit,linux建议使用Git GUI或者GITK。(windows下载exe安装包,linux可以使用命令行)
1. Git基本配置
配置用户名及邮箱
在使用Git提交前,必须配置用户名和邮箱,这些信息会永久保存到历史记录中。
git config --global user.name "yuorname"
git config --global user.email "youremail"
配置好之后可以使用(查看配置)
git config -l
2. 创建Git仓库
可以直接调用git init初始化当前目录,即创建Git仓库。
3. 获得Git仓库远程仓库
如果需要克隆远程仓库,可以使用git clone,比如:
git clone https://github.com/vuejs/vue.git
4. 提交更新
Git中每个文件都有三种状态:committed、staged、modified。它们之间关系如下:
commit <-- stage <-- modify
commit --> --- --modify
我们获取的Git仓库中的所有文件都是committed状态,如果你在本地修改了文件a,a的状态就变成modified的;如果使用git add a,a的状态变成staged;如果使用git commit,a的状态就变成commited。这种状态变化也说明复制代码是很方便的,但是提交更新请慎重。
当然还有一种文件状态,未跟踪状态(unversioned/untracked),通过使用git add可以把未跟踪状态变更为staged;通过git rm可以将staged或者committed状态变为未跟踪状态。
git status
通常提交前先检查下修改了什么内容,当前Git目录下各文件的状态。
git add
git add可以添加文件或者目录,也可以使用通配符。比如:
git add Readme.md # add file only
git add *.cpp # add all cpp files
git add /home/code/ # add all files in /home/code
git diff
git diff可以查看当前目录的所有修改。
提交之前,还是单独确认下处于staged状态的文件有哪些,并保证修改正确。在实际应用中,可能还需要使用git diff导出PATCH做代码走读。
可以使用git diff --staged或git diff --cached查看staged与上次提交快照之间的区别。
git commit
提交前需慎重。直接调用git commit会弹出编辑器,输入提交日志(如果是多行日志,建议使用)。
针对单行日志提交的情况,可以使用如下命令: git commit -m "add readme"。
还有一种快捷的提交方式,直接跳过stage缓存区,直接提交当前目录下的所有修改git commit -a(使用这个命令前建议确认下当前目录的修改是否正确、必须)。
git rm
git rm会把文件从当前目录删除(不会保存删除的文件)。如果需要从Git仓库中删除,但保留在当前工作目录中,亦即从跟踪清单中删除,可以使用 git rm --cached readme.md。
5. 提交历史查看
可以使用git log查看当前工程的所有提交的日志。
git log --stat # 仅显示摘要选项
git log --pretty=oneline # 定制记录格式
git log --graph # 图像化分支和版本更新
6. 撤销更新
7. 远程仓库
可以使用git remote查看当前的远程库。
git remote -v可以显示对应的克隆地址。(对于多个远程仓库很有用)
添加远程仓库
git remote add [short_name] [url] 可以添加新的远程仓库。
从远程仓库抓取数据
git fetch [remote-name] 可以从远程仓库抓取数据到本地。
也可以使用 git pull
推送数据到远程仓库
git push [remote_name] [branch_name]
默认使用origin和master。
查看远程仓库信息
git remote show origin
远程仓库的删除和重命名
git remote rename [old_name] [new_name]
git remote rm [remote_name]
8. 打Tags
可使用git tag显示当前库中的标签。
添加标签(含附注)
git tag -a v0.1 -m "my version 0.1"
使用如下命令查看Tag日志信息(指定对应标签的名字)
git show v0.1
也可使用SHA-1的提交表示创建tag:
git tag -a v0.2 [SHA-1] -m "my version 0.2"
分享标签
默认的,git push不会推送标签信息到远程仓库,需要通过命令显式推送。
git push origin v0.1
如果需要推送所有标签,使用
git push origin --tags
9. Git分支
git分支是轻量级的,速度很快,仅记录索引信息。
显示所有分支
使用git branch 可显示当前所有分支。
可以使用--merged和--no-merged查看已经合并、未合并的分支。
创建及切换分支
可以使用下面命令直接切换并创建分支
git checkout -b testing
等价于
$ git branch testing # 创建testing 分支
$ git checkout testing # 切换到testing分支
注意切换分支时请保持工作目录没有未提交的修改。Git鼓励使用分支,处理完问题之后合并分支即可。
分支合并
将hotfix分支合并到master(主分支)上,需要通过下面命令:
$ git checkout master
$ git merge hotfix
合并之后可以使用git branch -d hotfix 删除分支。
如果合并时存在冲突,需要手工修改。
创建远程分支:
克隆:git clone https://github.com/szc-sun/lagou-vue.git
创建本地的dev分支: git checkout -b dev
在本地创建dev分支并与远程dev分支对应: git checkout -b dev origin/dev
查看本地分支:git branch
切换到本地dev分支:git checkout dev
本地master分支推送到远程的dev分支:1.本地切换到master分支,2.git push origin master:dev
dev分支修改上传:1.本地切换到dev分支,2.git push
dev分支合并到master:1.本地切换到master分支,2.git merge dev(如果遇到冲突解决完后再次提交即可),3git push origin master
冲突:
git stash
git pull
git stash pop
13、git的更多相关文章
- 『现学现忘』Git基础 — 13、Git的基础操作
目录 1.Git最基础的使用方式 (1)初始化本地版本库 (2)查看文件的状态 (3)把文件添加到暂存区 (4)把暂存区的内容提交到本地版本库 2.总结本文用到的Git命令 1.Git最基础的使用方式 ...
- Pull Request的过程、基于git做的协同开发、git常见的一些命令、git实现代码的review、git实现版本的管理、gitlab、GitHub上为开源项目贡献代码
前言: Pull Request的流程 1.fork 首先是找到自己想要pull request的项目, 然后点击fork按钮,此时就会在你的仓库中多出来一个仓库,格式是:自己的账户名/想要pull ...
- ABP(现代ASP.NET样板开发框架)系列之13、ABP领域层——数据过滤器(Data filters)
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之13.ABP领域层——数据过滤器(Data filters) ABP是“ASP.NET Boilerplate P ...
- k8s版jenkins--master/slave模式实现CI/CD---带solo开源博客项目--带maven、djk、git工具
k8s环境: 192.168.0.91 master 192.168.0.92 node 192.168.0.96 gitlab 192.168.0.98 harbor k8s集群安装请参照:http ...
- CVS、SVN、Git、GitHub :版本控制系统
1 1 1 Git常用命令 1 1 1 1 1 1 https://www.codecademy.com/learn/learn-git Learn Git You have now been int ...
- 4、git和gitlab的配置(2)
4.10.使用 gitlib 模拟开发流程: 1.项目经理指定开发计划: project01 需求 开发者 完成日期 v1.0 首页 dev01 4.28 支付 dev02 4.30 2.rpm(项目 ...
- 小迪安全 Web安全 基础入门 第七天 - 资产泄漏、CMS识别、Git监控、SVN、DS_Store、备份
一.CMS指纹识别源码获取方式 1.网站特有文件.如/templets/default/style/dedecms.css-dedecms. 2.网站独有文件的MD5.如favicon.ico但是该文 ...
- 『现学现忘』Git基础 — 25、git log命令参数详解
目录 1.git log命令说明 2.git log命令参数 (1)不带参数 (2)常用显示参数 (3)--pretty参数 (4)--date=参数 (5)筛选参数 git log命令主要用于查看G ...
- 代码回滚:git reset、git checkout和git revert区别和联系
git reset.git checkout和git revert是你的Git工具箱中最有用的一些命令.它们都用来撤销代码仓库中的某些更改,而前两个命令不仅可以作用于提交,还可以作用于特定文件. 因为 ...
随机推荐
- A Small Definition of Big Data
A Small Definition of Big Data The term "big data" seems to be popping up everywhere these ...
- CSU 1259 bfs找最短路
题目大意: 不想介绍,题目链接:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1259 bfs求最短路. 这里因为2-9,到达同样的点不计步数,那我 ...
- noip模拟赛 分组
分析:暴力分挺多,也挺好想的,个人感觉两个特殊性质没什么卵用. 对于K=1,n ≤ 1024的情况,从后往前贪心地分,如果能和上一组分在一起就分在一起,否则就再开一组,这样可以保证字典序最小.ai ≤ ...
- hihocoder #1034 : 毁灭者问题 平衡树(set)+线段树
#1034 : 毁灭者问题 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在 Warcraft III 之冰封王座中,毁灭者是不死族打三本后期时的一个魔法飞行单位. 毁 ...
- bzoj4553 [Tjoi2016&Heoi2016]序列 树状数组(区间最大值)+cqd
[Tjoi2016&Heoi2016]序列 Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 1006 Solved: 464[Submit][ ...
- [NOIP2004] 提高组 洛谷P1090 合并果子
题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...
- 【BZOJ4583】购物(组合计数)
题意:商店出售3种颜色的球,分别为红.绿.蓝. 城市里有n个商店,第i个商店在第First_i天开始营业,连续营业Red_i+Green_i+Blue_i天,每个商店每天只能出售一种颜色的球. 每天最 ...
- codevs 1378 选课
题目描述 Description 学校实行学分制.每门的必修课都有固定的学分,同时还必须获得相应的选修课程学分.学校开设了N(N<300)门的选修课程,每个学生可选课程的数量M是给定的.学生选修 ...
- QT-Embedded-4.5.3在海思35xx上移植
QT4.5.3在海思3520A上移植步骤-修订版 2015年3月29日星期日, 16:59:03 1.首先要保证已经安装了海思的交叉编译器: #arm-hi + Tab key to show wh ...
- Thinkphp5.0 的使用模型Model查询
Thinkphp5.0 的使用模型Model查询 一.查询多条记录 获取多个数据可以使用:select()方法和all()方法. 示例一:使用all()方法. //(1)筛选条件使用闭包函数 $res ...