git学习
来源:互联网 发布:淘宝网运费模版 编辑:程序博客网 时间:2024/06/06 02:38
本篇博客将从以下几个方面总结Git:
- Git是什么
- Git安装
- Git常见命令
1 Git是什么
Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git主要有如下功能特性(摘自百度百科):
一般开发者的角度来看:
- 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
- 在自己的机器上根据不同的开发目的,创建分支,修改代码。
- 在单机上自己创建的分支上提交代码。
- 在单机上合并分支。
- 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
- 生成补丁(patch),把补丁发送给主开发者。
- 看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
- 一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
主开发者的角度来看:
- 查看邮件或者通过其它方式查看一般开发者的提交状态。
- 打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
- 向公共服务器提交结果,然后通知所有开发人员。
2 Git安装
从官网https://git-scm.com/downloads上下载对应系统的的git客户端版本,安装后从启动栏中进入git bash中
初始化Git客户端配置
git config --global user.name "wygu"
git config --global user.email "wygu@sysnew.com"
3 Git常见命令操作
(1) Git配置SSH公钥
大多数Git服务器都使用SSH公钥进行认证,git添加SSH-Agent配置步骤如下:
- 查看目录cd ~/.ssh下是否存在id_rsa和id_rsa.pub两个文件,如果存在删除
- 生成密钥: ssh-keygen -t rsa -C “个人邮箱”,连续三个回车
- 获取其中的公钥: cat ~/.ssh/id_rsa.pub
- 将公钥添加到git账户下的profile setting下的SSH keys
- 添加后在在终端输入:ssh -T git@172.17.249.122,如果结果为:Welcome to GitLab, 顾为玉,表示添加成功。
(2) Git基本命令
1) 迁出代码
迁出主干代码:git clone git@172.17.249.122:upchat-public-team/upchat-public.git,
迁出指定分支的代码:git clone -b 分支名仓库地址,比如git clone -b sys_admin git@172.17.249.122:upchat-public-team/upchat-public.git
2) 分支操作(假设分支为sys_admin)
- 创建分支:git branch sys_admin
- 显示当前分支:git branch -a
- 切换到分支:git checkout sys_admin
- 删除本地分支:git branch -d sys_admin
- 删除远端分支:git push origin –delete sys_admin
3) 提交代码
- 如果本地分支sys_admin1和远程分支sys_admin2之间还没有建立任何联系,需要先执行:git branch –set-upstream-to=origin/sys_admin2 sys_admin1
- 查看本地分支更新情况:git status
- 提交代码到本地: git add .; git commit -m “first commit”或者直接git commit -am “first commit”,注意如果存在新增的类只能采用第一种方式
- 本地仓库代码push到远程分支中:git push origin remote_branch:local_branch,如果远程分支不存在,直接创建一个远程分支
如果出现”![rejected]”,此时表示有人提交先你提交了代码,需要先更新代码,再PUSH:
– 更新代码:git pull –rebase
– 如果出现冲突,逐个手动修改冲突文件为最终状态并add:git add <冲突文件路径>
– 继续提交:git rebase –continue
注意补充冲突解决方式:如果出现下述问题:
error: Your local changes to the following files would be overwritten by merge: xxx/xxx/xxx.java Please, commit your changes or stash them before you can merge. Aborting
stash方式
- git stash: 备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
- git stash pop: 从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。
- git stash list: 显示Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复。
- git stash clear: 清空Git栈。此时使用gitg等图形化工具会发现,原来stash的哪些节点都消失了。
放弃本地修改,直接覆盖掉修改的代码
- git reset –hard
- git pull
在本地的git提交了又想撤销,像没发生过一样
git reset HEAD^ —撤销最近一次
git reset HEAD~3 —撤销最近三次
如果已经push到远端,又发现自己不应该push,想反悔
- git revert HEAD —撤销前一次 commit
- git revert HEAD^ —撤销前前一次 commit
- git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)
4)合并分支
- 合并远程master分支至当前分支:git merge origin/master
- 合并提交ff44785404a8e的修改:git cherry-pick ff44785404a8e
(3) Git 标签相关操作
标签可以针对某一时间点的版本做标记,同CVS一样,git也可以打标签,作用于版本的发布
1)显示标签
- 列出标签:git tag
- 搜索符合模式的标签:git tag -l ‘v0.1.*’
- 查看标签的版本信息:git show v0.1.2
2)打标签
git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象。
创建轻量标签: git tag v0.1.2-light
创建附注标签: git tag -a v0.1.2 -m “0.1.2版本”
创建轻量标签不需要传递参数,直接指定标签名称即可。创建附注标签时,参数a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
3)标签相关操作
- 切换到标签:git checkout [tagname]
- 删除标签:git tag -d v0.1.2
- 针对某次提交补打标签:git tag -a v0.1.1 9fbc3d0
标签发布,通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作:
— 将v0.1.2标签提交到git服务器:git push origin v0.1.2
— 将本地所有标签一次性提交到git服务器:git push origin –tags
4)删除远端tag
使用如下方式删除远程tag:
git push origin --delete tag <tagname>
或者使用推送一个空tag到远程tag
git tag -d <tagname>
git push origin :refs/tags/<tagname>
- 【git】git学习笔记
- 【Git】Git学习手册
- Git学习 -- Git 安装
- Git学习-GIT安装
- 【Git学习】git常用命令
- git学习:git常用命令
- git 学习
- git 学习
- Git学习
- Git 学习
- GIT学习。
- git学习
- Git 学习
- git 学习
- Git学习
- Git学习
- git 学习
- git学习
- okhttp源码分析(二)-RetryAndFollowUpInterceptor过滤器
- 浅谈UML的概念和模型之UML九种图
- 第四周第一节课(第三章——栈和队列)
- 渗透测试常规流程
- AWT 实现计算器 界面 设计
- git学习
- spring 定时器
- 学习笔记之指针
- 进程一般具有哪三个主要状态?举例说明状态转换的原因
- es6语法-字符串扩展
- Android RecyclerView 实现横向滚动效果
- CvvImage.h 和 CvvImage.cpp,dirent.h头文件
- ubuntu下解决sublime3不能使用Fcitx输入中文
- 爬格子呀5-3