git操作常用命令
一、使用git
git是什么?
Git是目前世界上最先进的分布式版本控制系统。
- SVN与Git的最主要的区别?
-
SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳闷了。
-
Git是分布式版本控制系统,那么它就没有中央服务器的,每个人的电脑就是一个完整的版本库,这样,工作的时候就不需要联网了,因为版本都是在自己的电脑上。既然每个人的电脑都有一个完整的版本库,那多个人如何协作呢?比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
-
git能做什么?
- 文件版本管理
作为版本管理系统诞生的Git,最重要的是可以帮助团队进行文件管理,各种源代码和文档等。 - 代码评审
代码评审作为软件开发流程中重要的一环,是项目顺利进行提供有效的保障,使用过Github的人对Pull Request应该不会陌生,如果高效进行代码就是另一个问题了。 - 持续集成
持续集成作为软件的开发和发布流程中最重要的一环,通过进行单元测试、自动化测试和自动构建发布,可以非常容易发现和改正Bug, 通过钩子(Hook),Git可以和构建工具(如Jenkins)结合构建持续集成环境。
git如何使用?
需要从git官网下载,然后进行默认安装即可。
二、 git配置
- 查看配置信息:
git config --list
- 设置用户名和邮箱:
git config --global user.name "用户名"
git config --global user.email "邮箱"
如果配置错了,使用unset删除删除某个全局配置:
git config --global --unset user.eamil
- 配置ssh
为了可以使用ssh方式上传和提交代码,需做如下配置, 先在本地生成密钥,然后复制到远程新增的ssh密钥key中, 即复制本地生成的id_rsa.pub文件中的内容
ssh-keygen -t rsa -C 邮箱
- 解决git一直输入用户名和密码的问题:
git config --system --unset credential.helper //在git中输入此命令后,每次拉去代码需要重新输入用户名和密码
git config --global credential.helper store //这样再获取代码提示输入用户名和密码,输入之后后续就不需要再次输入了。
- 设置git是否忽略文件大小写
git config core.ignorecase //查看
git config core.ignorecase false //不忽略
三、git常用命令
git初始化 git init
查看文件是否被git管理 git status
将全部文件提交到暂存区 git add .
提交到本地git仓库 git commit -m "提交描述"
提交到远程仓库 git push
查看git版本日志信息 git log
查看每一次提交的日志信息 git reflog
回退到某个版本 git reset --hard (前六位哈希值)
HEAD^:表示上一个版本
HEAD~100:表示网上100个版本
查看远程仓库地址 git remote -v
新增关联仓库地址 git remote add origin 仓库地址
删除关联仓库地址 git remote rm origin
修改关联仓库地址 git remote set-url origin 仓库地址
四、git分支
//创建和查看分支
查看分支: git branch
创建分支: git branch 分支名
切换分支: git checkout 分支名
既创建又切换: git checkout -b 分支名
创建并切换到没有提交历史的分支: git checkout --orphan 分支名
//删除分支
删除分支: git branch -d 分支名 (删除本地分支)
删除远程分支: git push orgin -d 分支名 (删除远程分支)
如果要丢弃一个没有被合并过的分支,
可以通过强行删除: git branch -D 分支名。
//分支合并
分支合并: git merge 分支名(在master分支上合并子分支)
撤销合并: git reset --merge 解决报错:fatal: You have not concluded your merge
查看分支合并图: git log --graph
普通分支合并: git merge --no-ff -m "普通合并" 分支名
(禁用fast forward,能看出曾经做过合并)
五、git操作github上的项目
克隆github仓库: git clone 仓库路径
提交到远程仓库: git push origin master
线下同步线上项目: git pull origin master
项目常用操作流程
1、本地关联远程仓库:git remote add origin git仓库地址
查看关联远程仓库
git remote -v
2、第一次下载项目(远程-本地):
git clone git 仓库地址
3、第一次发布项目(本地-远程):三步
git add .
git commit -m "描述"
git push -u origin master
4、更新(远程-本地):
git pull
5、提交(本地-远程):三步
git add .
git commit -m "描述"
git push master
六、git合并dev分支到master完整步骤
1、提交dev分支代码
git add .
git commit -m "备注"
git push
2、切换分支到master, 并更新
git checkout mater
git pull
3、将dev分支合并到master, 并解决冲突,解决冲突然后重复第一步操作提交一次,再推送到远程
git merge dev
//如果有冲突,先提交一次
/*
git add .
git commit -m "备注"
git push
*/
git push
七、tag标签
在git代码管理时侯,我们想对某个特定的commit 添加标记,比如要标识版本信息,这时候就可以用的git中的打标签功能。类似给书放书签,可以快速定位到指定位置。
创建标签
git tag -a v1.0 -m "正式版本"
表示给当前分支创建标签,绑定的是最近一次commit的版本,如果给某个commit打标签:
git tag -a v1.0 6d936671f44cd376ebb71c4306ad8df55af564a5 -m "正式版本"
- -a 创建指令 后跟标签名
- -m 备注 后跟备注内容
查看标签
按字母排序,查看当前分支上所有标签:
git tag
显示v1.0的详情,包含备注:
git show v1.0
查看远程所有标签:
git ls-remote --tags
删除标签
删除本地:
git tag -d v1.0
- -d 删除指令 后跟标签名称
删除远程:
git push origin :refs/tags/v1.0
推送到远程
推送所有标签:
git push origin --tags
推送指定标签:
git push origin V1.0
检出标签
git checkout v1.0
实际业务中切换到tag上修改了代码,需要新建一个分支才能提交代码。例如:在v1.0上修改了bug
git checkout -b bugfix
然后再合并bug分支,重新打修改bug后的标签