Git 版本控制工具(学习笔记)
GIT(分布式)
一、Git 初始版本控制工具
1. 安装Git
Ubuntu系统下,打开shell界面,输入: sudo apt-get install git-core 之后回车输入密码,即可完成git的安装
Windows系统下,访问:https://git-for-windows.github.io/ 下载应用程序,选择相应版本进行安装
2. 创建代码仓库
进入到Git Bash 命令操作,
i. 配置身份信息,用于在提交代码的时候Git知道是谁提交的
执行命令: git config --global user.name "用户名" 回车
git config --global user.email "邮箱号码@gmail.com" 回车
ii. 创建代码仓库(Repository)
进入项目根目录下,输入命令: git init 即可完成创建;
创建成功后,项目的根目录下会生成一个隐藏的.git文件夹。 ——用于记录本地的所有git操作
执行命令: ls -al 可以查看当前目录下的所有文件及文件夹
3. 提交本地代码
主要用到add 和 commit 命令操作: add是用于把想要提交的代码先添加进来,而commit则是真正地去执行提交代码操作。
比如: git add Text.java 是添加单个Text.java文件
git add src 是将src目录下的所有文件进行添加
git add . 是添加项目的所有文件进行添加
git commit -m "描述性文字" 提交代码 (注:描述性文字一定要有,否则会被认为是不合法的)
二、Git 版本控制工具进阶
- 忽略文件
场景分析: Android项目中的 如:bin和 gin 目录下的文件是会自动生成的,不需要添加到版本控制中去
So: Git 提供了一个可适配性很强的机制
---------->>>>>它会检测代码仓库下是否存在 .gitignore 的文件, 如果有的话,会把里面的文件都排除在版本控制之外。
(注:.gitignore 中的文件或目录可以使用通配符“*”)
具体实现:
在需要项目文件夹下 点击鼠标右键 进入git bash 命令窗口
执行命令: touch .gitignore 创建文件夹成功
vim .gitignore 启动编辑器 接下来输入需要忽略的文件或者文件夹名 即可实现目的
2. 查看修改内容
执行命令: git status 可进行查看
执行命令: git diff 文件路径 可以看到更详细的更改信息 (注:--- 表示删除的部分, +++表示添加的内容)
3. 撤销未提交的修改
执行命令:git checkout 可以撤销未提交的更改
对于已经执行 add 操作添加了的文件, 可以执行 git reset HEAD 文件路径 命令操作 使文件变回未添加状态 再。。。git checkout。。。即可
4. 查看提交记录
git log : 可以查看历史提交信息
git log 某条提交记录的id -1 -p : 对于只想查看某条提交内容 具体修改了什么内容
三、Git 版本控制工具的高级用法
- 分支的用法(Branch)
首先了解下分支的作用: 使得代码可以在主干线和分支线上同时进行开发, 且相互之间不会影响。
i. 如何查看当前的版本库中有哪些分支?
使用命令操作: git branch -a 可以完美解决 (注: * 表示当前所在的分支)
ii. 如何创建分支?
git branch version1.0 即创建了一个名为version1.0的分支
iii. 怎样切换到分支上去呢?
比如: 进入到version1.0 分支 可以执行命令: git checkout version1.0
iv. 如何将分支version1.0 上解决bug 修改并提交的内容合并到master主分支上?
git checkout master |----next----> git merge version1.0
v. 用完分支想删掉怎么办?
删除分支: git branch -D version1.0(你想要删除的分支名)
2. 与远程版本库协作
现有一个远程版本库Git地址 为: https://github.com/example/test.git
将代码下载到本地: git clone https://github.com/example/test.git
将本地修改的内容同步到远程版本库上: git push origin master (origin 表示远程版本库的Git地址,master表示同步到主分支)
如何将远程版本库上的修改同步到本地:
方式一: git fetch origin master 之后,同步下来的代码会先放到一个origin/master 分支上,
再执行 git diff origin/master 可以查看远程版本库上修改了哪些东西,
之后执行 git merge origin/master 就可以合并到主分支上了
方式二: git pull origin/master 一步实现代码同步到本地 (将fetch 和 merge 两步放到了一起)
四、Git 将代码托管到GitHub上(实战)
步骤简述:
1、到 GitHub的官网地址 https://github.com/ 注册一个账号
Sign up for GitHub ----> Create an account ----> Finish sign up
2、创建版本库
登录之后 找到New Repository按钮 点击按钮
Repository name : 项目名
项目类型: Android
开源协议: 推荐 Apache Liscense 2
创建后可以得到 版本库主页地址: 如: https://github.com/用户名/项目名
3、开始关联
进入Git bash 执行命令: git clone https://github.com/***(这里是版本库主页地址)
执行成功后 文件目录的下就多出了个 子文件夹 (全小写的项目名) 其中包含隐藏的 .git 文件夹
将里面的文件复制到项目根目录下 再把多余的子文件夹干掉
即可执行项目 同步到远程版本库的操作了
4、开始同步
git add .
git commit -m "First Commit "
git push origin master
SVN(集中式)
缺点: 服务器压力大,不适应开元大项目,无服务器不工作
loading...
Git 版本控制工具(学习笔记)的更多相关文章
- Git版本控制工具学习
Git代码管理工具学习 分布式管理工具:git 相比较svn它更加的方便,基本上我们的操作都是在本地进行的. Git文件的三种状态:已提交,已修改,以暂存. 已提交:表示文件已经被保存到本地数据库. ...
- Git版本控制管理学习笔记1-介绍
几乎所有的版本控制工具都是出于同样的目的:开发以及维护开发出来的代码,方便读取代码的历史,记录所有的修改.这里,介绍的是当前在开源社区内非常流行的版本控制工具Git.它是由Linus Torvalds ...
- Git版本控制管理学习笔记5-提交
这个标题其实有些让人费解,因为会想这个提交是动词还是名称? 提交动作是通过git commit命令来实现的,提交之后会在对象库中新增一个提交对象.提交过程中会发生哪些变化,在上一篇笔记 ...
- Git版本控制管理学习笔记3-基本的Git概念
为了更近一步的学习和理解Git的理念,这一节介绍一下Git中的一些基本概念. 基本概念 对象库图示 Git在工作时的概念 一.基本概念: 1.版本库: Git的版本库就是一个简单的数据库,其中 ...
- Git版本控制管理学习笔记2--起步
首先确保系统中已经安装了git,这里使用的linux系统. 一.命令行初步使用: 1.git命令: 列出它的选项和最常用的子命令.标准命令格式中,COMMAND代表的就是下面列出的子命令. [root ...
- Git版本控制管理学习笔记4-文件管理和索引
可以认为使用Git时,我们会遇到3个空间:工作目录.索引.版本库.我们关心的,就是在新建.修改等操作时,这三者之间发生了怎样的变化. 笼统的讲,就是在工作目录下编辑,在索引中积累修改, ...
- Git版本控制工具(三)----远程仓库GitHub的使用
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...
- git版本控制工具(二)----本地版本库的常用操作
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- Git版本控制工具(一)----git的安装及创建版本库
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
随机推荐
- OS概论1
1.设计现代OS的主要目标是什么? 在计算机上配置操作系统,其主要目标是:方便性,有效性,可扩充性,开放性. 一个没有OS的操作系统,就必须用机器语言书写程序,如果在计算机上配置了OS,系统便可以使用 ...
- 自己实现的库函数2(memset,memcmp,memcpy,memmove)
memset,memcmp,memcpy,memmove是对内存进行管理的库函数,为了更好的理解和使用这几个函数,自己用C语言实现一下~ //内存设置函数void* my_memset(void* d ...
- 关于textjs的tree带复选框的树
通过查阅一些资料和自己之前了解到的一些相关知识,有时项目中需要用到.话不多说,先看一下效果图: 我写的这人员选择的树,主要是改写了TreePanel,如下代码: ExtendTreePanel.js ...
- 转:Stack Overflow通过关注性能,实现单块应用架构的扩展能力
原文来自于:http://www.infoq.com/cn/news/2015/07/scaling-stack-overflow 在New York QCon 2015大会上,David Fulle ...
- 启动python解释器的命令(python manage.py shell和python的区别)
如果你曾经使用过Python,你一定好奇,为什么我们运行python manage.py shell而不是python.这两个命令都会启动交互解释器,但是manage.py shell命令有一个重要的 ...
- Android之TextView组件学习
一.基础学习 1.findViewById返回View类,该类是所有View组件的父类. 2.子类比父类拥有更多的属性和方法,不过子类找不到的话去父类找 3.marquee:华盖,跑马灯效果:orie ...
- 【技术贴】解决vss中提交pdf下载打开空白乱码
vss客户端需要安装一个Vss2005的补丁程序,而且之前上传的pdf文件重新删掉,再次上传进Vss中,再下载打卡就ok了. 补丁名称vs80-kb943847-x86-intl.exe 别人的csd ...
- Swifter初体验;按照惯例,来一个Swift版本的:iOS图片验证码?
不多解释,上图,上代码:代码
- Android UI 设计准则
Design Principles 设计准则 These design principles were developed by and for the Android User Experienc ...
- perl unload utf-8 oracle Wide character in print at unload_oracle.pl line 105.
#!/usr/bin/perl use DBI; use Encode; my $dbName = 'oadb'; my $dbUser = 'vxspace'; my $dbUserPass = ' ...