Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突
这篇是接着上篇分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目讲的,上篇主要是说用GUI来图形化界面操作,但是一般我们程序员也不会这么干,用命令又轻松又愉悦,所以,这里我就再开了一篇来专门说一下纯命令是怎么去操作的,但是要注意哦,其实廖雪峰老师的网站就是非常赞的学习资源哦!
我们还是先从安装开始吧,我上篇Ubuntu的配置博客也说了安装,这里我就三个平台一起讲吧!
一.Install
安装其实都是最简单的方法了
Windows
windows的安装只要去下载一个协助工具就可以了,下载地址
安装之后,我们在桌面右键有一个Git Bash Here
- Ubuntu
linux的安装就是一条命令的事情了,我的这篇博客里也有讲Android源码浅析(二)——Ubuntu Root,Git,VMware Tools,安装输入法,主题美化,Dock,安装JDK和配置环境
在终端输入
sudo apt-get install git
如果你是#的root权限的话,可以不用加sudo
X OS
mac的系统安装虽说也是一条命令,但是他需要借助辅助的工具,当然,你也可以直接安装XCode,它就集成了Git,不过需要配置一番,我们作为android开发人员,这个xcode其实看个人兴趣吧,我们用另一种方式安装
只要下载安装Homebrew,mac的终端就可以搜索安装软件了
输入
sudo brew install git
等待安装成功,检查是否安装成功的方式也很简单,只要输入
git version
查看他的版本就可以了
二.Clone
Clone就是从github上下载项目,我们在Github上新建一个项目,叫做GitTest吧!如果这一步不会操作的话,请移步:分布式版本库——Windows下Git的环境部署以及在GitHub上开源自己的项目
我们把这个链接给记住了
https://github.com/LiuGuiLinAndroid/GitTest.git
这里,我先在D盘新建一个git的文件夹,然后进入这个目录,直接右键打开Git Bash,然后输入
git clone https://github.com/LiuGuiLinAndroid/GitTest.git
就可以下载下来代码了
我们进入这个文件夹里面可以看到他只有一个文件README.md,我们输入
vim README.md
去访问他
这里vim是一个编辑的命令,我们推出这个vim环境只要输入
q!
就可以了
三.Commit
提交代码,我们先介绍一下Git的工作模式,其实吧,Git这么出名也是跟他的模式有关,而我们的章节,也是跟着他的模式走的
// add->commit->push
先是add,也就是把你要提交的代码先提交到缓存区,然后commit提交到本地的仓库,最后再push推送到远程仓库,也就是github上,这里,我们先对刚才那个README.md文件进行修改吧,我们编辑一下,加上一点文字
我们保存之后,刚才的绿色文件就变成了感叹号,说明已经有修改了,这点和SVN一样,我们回到命令行,这里,我们有一个很方便的命令
git status
来查看当前的状态
这里就提示你这个文件已经是红色的,改动了,需要提交吗?
所以,我们就输入
git add README.md
也就是添加到缓存区
他什么都没提示说明add成功了,这个时候我们再次查看一下状态,你就会发现
状态是绿色的了,Ok,这个时候我们就需要commit了,输入
git commit README.md
然后他会显示这样一个信息,这里是要你写一些说明,我就写了first commit
这里输入
x
保存退出
然后我们再次查看一下状态
果不其然,这里显示你有一个commit,需要push,也就是推送
四.Push
既然他友好的提示我们可以push,那我们就直接推送吧,只要输入
git push
即可,然后他会提示你输入账号和密码
我们输完之后,稍微等待一会儿,他们也自然会done的
到这里,我们的git的push就OK了,我们去github上看一下就明白了
五.Pull
这个就很好理解了,开原作者对自己的项目进行了一次修改,有新的东西了,我们就去更新一下, 也就去把代码拉下来,这样,我们在github上修改一下
现在的样子就是这样的了
这个很明显和我本地的不一样,所以我们就需要去pusll,输入
git pull
好的,下拉成功
我们可以用vim命令去查看一下
可以看到,代码也是拉了下来
六.版本回退
写代码写着写着发现自己入坑了,怎么办,而且代码还提交了,在队友还没有pull之前,赶紧版本回退,那该怎么做呢?我们可以这样,首先,我们输入
git log
来查看我们提交代码的记录
这里我们可以看到,我们第一次是系统初始化的,第二次也就是我们认为的提交,第三次,也就是我们pull的时候在github上提交的,我现在演示一下怎么退回到first commit
但是我们要注意,上图中,log日志黄色的一长串ID,这就是我们要注意的东西,我们只有通过这个ID才能版本回退,所以,这里我先拷贝一下first commit的ID:
a0c401fcda58304938767820f35d6b4bcaad28db
好的,我们开始了,版本回退的命令是
git reset --hard a0c401fcda58304938767820f35d6b4bcaad28db
好的
他提示已经回退到first commit了,我们验证一下,只要看一下README.md里面的信息就可以,我们用vim命令去看
这里果不其然是显示第一次提交,说明我们已经成功的版本回退了,版本回退有风险,操作需谨慎哈!
如果你说要再回到原来的状态,也是可以的,按照上面的方法再走一遍流程即可,不过要注意的是,这次想要获取到的ID就不是输入git log了,这里又出来一个新的命令了
git reflog
记录的是所有的log,接下来,你就知道怎么去操作了
不过,这里也牵引出我们的撤销操作出出来了
七.撤销更新
前面已经说了这么多,这部分其实就是写命令,所有就不实际演示了
//如果你写代码写错了之后想撤销的话,也就是还原文件初始状态
、git checkout --文件名
//如果你已经add了代码到缓存区
git reset HEAD 文件名
//但是如果你已经commit了,就需要版本回退了
git reset --hard 版本号
//要是你推送到了远程仓库,比如github
.....你就很痛苦了
八.分支的创建和切换
我们都知道,默认是有一个主分支master分支,但是我们有时候如果需要测试某些功能或者怎么样的时候,需要创建一个分支,当觉得分支的代码可以了就合并到主分支,这样的好处也是保证主分支的一个干净性和安全性,好的,我们具体来看一下怎么操作的:
- 查看分支
git branch
- 创建分支
git branch [分支名]
- 切换分支
git checkout [分支名]
这样就可以了,还有另一种比较方便的方法就是
- 创建并且切换分支
git checkout -b [分支名]
这张图,我们可以看到,我们先是查看了自己所在的分支,位于主分支,然后我创建了一个分支叫hello,接着我切换到hello这个分支,再次查看自己所在的分支,就是hello了,然后再切换回主分支,再用创建并切换的命令创建了android这个分支,然后查看分支,我们就位于android这个分支了
九.分支的更新和提交
分支的push和pull,其实和主分支的操作还是有些许区别的,就是命令
- 分支push
git push origin 分支名
看,他可以提交,显示要我们账号密码
这里,我们已经把android这个分支推送上去了,而hello这个分支没有,所以我们输入
git brnch -a
查看所以的分支
这里,白色的是本地分支,绿色的,是你所在的分支,红色的,是远程的分支
- 分支pull
既然push要做处理,那pull肯定要咯,和push一样
git pull origin 分支名
OK,这个是可以的
十.分支合并
这里,我们可以看到,我们所在的分支是android
我们对README.md进行修改
然后add commit
现在我们android分支已经修改了,但是主master分支病没有,我们觉得android分支这段代码可以用了,需要合并到主分支,那我们该怎么做呢?
我们这里可以看到,我们先是切换到了主分支,然后输入
git merge 分支名
去合并代码,现在,我们查看一下
好的,这样,代码就合并成功了
十一.代码冲突
这个代码冲突,在SVN中也是精彩会碰到,还是自己对版本控制这一块的不熟练,一般出现冲突Git的话是两种情况
- 在你push推代码的时候发生代码冲突
- 合并分支的时候发生代码冲突
比如你在分支中写的代码,主分支也有类似的,就极有可能发生冲突,我们来测试一下,我们不演示了,我讲个大概的思路,当出现冲突的时候,命令行会告诉我们哪个文件合并出错,找到这个文件的时候
vim 文件名
你可以看到有个特殊的箭头包裹着一段代码,那就是两个代码块不一样的地方,你需要自己手动修复
然后,需要重新提交,但是再commit的时候
git commit -i -m '更新说明' 文件名
这样提交后就可以直接push了
好了,小伙伴们,Git的使用是否已经学会了
我的群,通往Android的神奇之旅 :555974449,欢迎大家进来交流技术!
Git的纯命令操作,Install,Clone , Commit,Push,Pull,版本回退,撤销更新,分支的创建/切换/更新/提交/合并,代码冲突的更多相关文章
- git最基本的操作: add commit push 哈哈
Git add //添加到本地暂存区 Git commit -m”xxxxx” //添加到本地分支 Git push //添加到远端分支
- idea中Git配置,Git的非命令操作
1.更换Git账户 在idea中File-->Settings-->Appearance-->System Settings-->Passwords,选择不保存密码(Do no ...
- Eclipse 的 git 插件操作 "代码提交"以及"代码冲突"
面向对象:曾经使用过SVN的同学. (因为Git 它 可以说是双重的SVN (本地一个服务器,远程一个服务器)),提交代码要有两次步骤,先提交到本地服务器,再把本地服务器在提交到远程服务器. 所以连S ...
- 在Android Studio 和 Eclipse 的 git 插件操作 "代码提交"以及"代码冲突"
面向对象:曾经使用过SVN的同学. (因为Git 它 可以说是双重的SVN (本地一个服务器,远程一个服务器)),提交代码要有两次步骤,先提交到本地服务器,再把本地服务器在提交到远程服务器. 所以连S ...
- 第二章——建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别-----答题者:徐潇瑞
1.首先下载安装git,很简单所以就不详细说了,当弹出一个类似的命令窗口的东西,就说明Git安装成功 2.因为Git是分布式版本控制系统,所以需要填写用户名和邮箱作为一个标识 3.接着,注册githu ...
- 一、Git的一些命令操作----创建版本库、增加文件到Git库、时光机穿梭、远程仓库
具体详细教程请链接:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 我这里只是记录 ...
- Git 常见的命令操作
克隆 git clone git地址 查看分支 git branch 查看git库状态 git status 切换分支 git che ...
- Git以及github的使用方法(四),版本回退
现在,你已经学会了修改文件,然后把修改提交到Git版本库,现在,再练习一次,修改readme.txt文件如下: Git is a distributed version control system. ...
- 4.Git分支查看&创建&切换&合并
查看分支 git branch -v # 查看分支,*代表当前所在的分支 创建分支 git branch hot-fix # 创建一个hot-fix分支,然后使用-v查看 # 可以看到除了ma ...
随机推荐
- windows资源管理器中配置右键bash here
windows下安装了git后有git bash here 但是安装了cygwin没有bash here 我们可以通过修改注册表的方式自己做一个 Win10下在注册表内有一般有两个默认的 cmd 和 ...
- Docker 控制组
控制组(cgroups)是 Linux 内核的一个特性,主要用来对共享资源进行隔离.限制.审计等.只有能控制分配到容器的资源,才能避免当多个容器同时运行时的对系统资源的竞争. 控制组技术最早是由 Go ...
- Docker内核能力机制
能力机制(Capability)是 Linux 内核一个强大的特性,可以提供细粒度的权限访问控制. Linux 内核自 2.2 版本起就支持能力机制,它将权限划分为更加细粒度的操作能力,既可以作用在进 ...
- Bootstrap3 栅格系统-实例:响应列重置(Responsive column resets)
四层的网格你肯定会遇到问题,可用在特定的断点,你的列不清楚作为一个比另一个高完全正确.为了解决这个问题,结合使用.clearfix和响应的实用工具类. <div class="row& ...
- 解决linux删除文件后空间没有释放问题
linux删除文件后沒有释放空间 今天发现一台服务器的home空间满了,于是要清空没用的文件,当我删除文件后,发现可用空间沒有变化 os:centos4.7 现象: 发现当前磁盘空间使用情况: [ro ...
- C算法实现:将字符串中的数字返回为整型数
今天看linux内核驱动的代码,发现一个算法写得挺简单,也有意思. 分享一下我的测试代码: #include <stdio.h> typedef int U32 ; U32 String2 ...
- Openresty 数据共享API.Data Sharing within an Nginx Worker
摘要自:https://github.com/openresty/lua-nginx-module/#data-sharing-within-an-nginx-worker 每nginx worker ...
- ubuntu挂载的NTFS文件编译失败问题
错误: 编译Android源代码时候出现,权限拒绝的错误 解决方法: sudo apt-get install ntfs-config sudo ntfs-config 我的微信二维码如下,欢迎交流讨 ...
- [struts2学习笔记] 第六节 struts2依赖的jar包还有Could not find action or result 错误解决
本文地址:http://blog.csdn.net/sushengmiyan/article/details/43272061 本文作者:sushengmiyan ------------------ ...
- How to generate the complex data regularly to Ministry of Transport of P.R.C by DB Query Analyzer
How to generate the complex data regularly to Ministry of Transport of P.R.C by DB Query Analyzer 1 ...