git 使用那些事儿
本文来自网易云社区
作者:孙有军
工欲善其事,必先利其器,git是一个开源的分布式版本控制工具,很多文章都写的太长,或者资料太多,难以一时间看完。在此总结了git的一些使用方式,因此该文不是鸿篇巨著,但是如果看完也应该可以上手操作了。
git 安装与配置
安装
Linux: shell 界面输入, sudo apt-get install git-core 回车输入密码Windows:[下载安装包](https://github.com/git-for-windows/git/releases/tag/v2.6.3.windows.1>)
下载对应的exe安装包,双击安装 Mac:terminal : brew install git
配置全局用户名和邮箱,Linux: shell ,Windows: Git Bash ,Mac:terminal 命令如下:
git config --global user.name “wakaka" /user.email "wakaka@gmail.com”
查看是否配置成功:
git config --global user.name / user.email
创建代码仓库(Repository)
仓库是用于保存版本管理所需信息的地方,所有本地提交的代码都会被提交到仓库中,也可以推送到远程仓库中。比如本地有一个Demo项目,cd进入Demo目录。输入git init,目录下会生成隐藏的.git文件夹,如果要删除仓库,删除该文件夹。
git命令
add:把要提交的代码添加进来,可以认为到一个缓冲中[重要]
提交文件test.java :git add test.java 提交目录test :git add test 提交所有文件: git add .
commit:add完成后,真正的代码提交[重要]
git commit -m “commit” // -m 描述信息,不能为空
.gitignore: git会检查是否存在该文件,存在就读取该文件内容,将配置文件或者目录排除在版本之外,文件和目录可以使用“*”通配符。可以手动创建在文件。
TestA.java // 排除该文件testDir // 排除该目录
status: 查看上次提交后文件修改的列表
git status
diff:查看文件修改的内容,-号代表删除部分,+号代表添加部分
git diff TestB.java // 查看TestB.java修改的内容
checkout:撤销未提交的修改(未执行add操作)
git checkout TestB.java // 撤销TestB.java的修改
reset:取消add状态
git reset HEAD TestB.java // 取消TestB.java的add状态
log:查看提交记录(内容包含提交id,提交人,提交日期,描述信息)
git log // 所有记录git log xxxxx(id) -1 // 查看当前id的记录,-1表示一行记录git log xxxxx(id) -1 -p // 查看当前id提交记录的修改
git 分支
分支:可以在现有代码上拉出一个分支,使得代码可以在主干与分支同时开发,并且代码之间互相不会影响。常见使用环境,就是每次版本发布,
已发布的可以拉出一个分支,剩下的功能继续在主干开发,如果发布版本有问题,只用修改分支,最终将代码合并到主干。
分支命令:
git branch -a // 查看所有分支,master主干,分支前有*号,表示当前处于那个分支git branch release1.0 // 创建release1.0分支,git checkout release1.0 // 切换到release1.0分支,主要与文件修改撤销的区别git checkout master // 1: 切换到主干git merge release1.0 // 2: 将release1.0的修改合并到master,如果有冲突解决冲突git branch -D release1.0 // 删除release1.0分支
远程版本库
git clone https://github.com/FreeSunny/RefreashTabView.git // 下载到本地
远程库命令:
push:将代码修改和提交同步到远程库[重要]
git push origin master //origin 指定远程版本库的 Git 地址,master 指定同步到哪一个分支上
fetch:远程库的修改同步到本地, 不会将代码合并到任何分支,会存放到一个origin/master分支上
git fetch origin master // 注释同上
diff:查看远程库修改内容
git diff origin/master // 注意有一个斜线,就是fetch同步后放置的位置
merge:将origin/master分支修改的内容合并到主分支
git merge origin/master // 注意斜线
pull:fetch + merge,拉取并且合并[重要]
git pull origin master // 没有斜线
实例操作 gitbub网址
知易行难,say easy than do, 下面就来一个小小的实例,必须要有git账号,这个步骤就不用say了吧!
创建远程库
a. 点击+号下的New repository 创建一个远程库,命名为GitOperate, b. 版本库类型可以public或者private,程序员都有开源的心,那就public。 c. 还可以勾选Initialize this repository with a README, d. 接下来可以选择添加.gitignore文件,.gitignore文件有很多类型可以选,
比如 Android,Android项目下的bin这些文件一般都不需要提交。
选择遵循的协议。eg:Apache License 2.0, 这个可以自己去查查每种的意思 e. 点击create,远程版本库就创建完成了,远程版本库的地址为 https://github.com/FreeSunny/GitOperate.git。
之后跳转到README.md,该文件主要是对项目的描述。
远程库克隆到本地
a. 本地创建一个GitOperate文件夹 b. 远程库地址为https://github.com/FreeSunny/GitOperate.git,
cd进入GitOperate,输入 *git clone https://github.com/FreeSunny/GitOperate.git* c. 完成后可以在GitOperater文件下的GitOperate文件夹下看到README.md文件(两层文件夹了) d. 将第二个目录下的所有文件全部复制到上一层目录中,这样就只有第一层目录添加到版本控制中。
操作命令为(cp -r GitOperate/ .)
提交代码
git add .// 将提交的代码添加进来,这里指README.mdgit commit -m “add readme” // 本地提交git push origin master // 同步到远程库
网易云免费体验馆,0成本体验20+款云产品!
更多网易研发、产品、运营经验分享请访问网易云社区。
相关文章:
【推荐】 免费领取 | 微服务实践沙龙-上海站 大咖演讲资料分享
【推荐】 分布式存储系统Kudu与HBase的简要分析与对比
【推荐】 使用Prometheus+Grafana对Kubernetes进行性能监控的实践
git 使用那些事儿的更多相关文章
- Git那点事儿
Git的分支你们是怎么管理的?/ Git的分支管理策略 主分支 master 开发分支 develop 功能分支 feature 预发布分支 release bug 分支 fixbug 其它分支 ot ...
- React server rendering —— 网易美学主站同构实录
此文已由作者张硕授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 网易美学主站在最初开发时,因为各种历史原因,引入了例如JQuery,Bootstrop,Angular, Re ...
- KOL运营之——如何与网文作者高效地约稿?
本文来自网易云社区,转载务必请注明出处. 随着网络文学的发展,影响力逐渐扩大,越来越多的同事在工作中遇到需要和这些作者打交道的时候.对于作者这个群体,很多时候都是只闻其书,不见其人.要跟这样的群体打交 ...
- 项目接入apm后错误报警总结
此文已由作者张磊授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 前言: 后端服务一般都有监控措施,一般可以及时发现线上错误,但是很多项目的前端却没有线上报警服务,即使有错误, ...
- iOS开发那些事儿(六)Git分之策略
git 分支策略 将要介绍的这个模型不会比任何一套流程内容多,每个团队成员都必须遵守,这样便于管理软件开发过程. 既分散又集中 我们使用的,且与这个分支模型配合的非常好的库,他有一个“真正”的中央仓库 ...
- Git那些事儿
Git是目前世界上最先进的分布式版本控制系统,适合多人协作开发的大型项目.我平常也经常使用git,来管理自己的几个小项目.简单说说git的原理和git的特点!(只有知道了一个工具的运行原理,设计思路, ...
- 关于AS使用git的那些奇葩事儿
首先致谢: http://blog.csdn.net/a10615/article/details/52135617, 我们不生产代码, 我们只做大自然的搬运工! 总结 1. 首次无法push问题: ...
- 【Git】整合分支那些事儿
对于scm这个岗位来说,基线升级应该是这个岗位需要的必备技能了,现在来说说我司进行高通代码基线升级时选择的方式方法,供大家参考,也供自己学习积累. git这个工具大家都并不陌生,但是对于不经常提交代码 ...
- git rebase 与 merge 的那些事儿~(详细图解,通俗易懂)
什么是 rebase? git rebase 你其实可以把它理解成是"重新设置基线",将你的当前分支重新设置开始点.这个时候才能知道你当前分支于你需要比较的分支之间的差异. 原理很 ...
随机推荐
- 【转】S1 Setup
概念 S1是eNB和MME之间交换应用层配置数据的接口的名称.它是在建立TNL完成后的第一个S1AP的操作,S1的建立意味着eNB和MME之间之前已经存在的所有应用层数据将被全部清空,所有的数据将被重 ...
- 基于人脸识别+IMDB-WIFI+Caffe的性别识别
本文用记录基于Caffe的人脸性别识别过程.基于imdb-wiki模型做finetune,imdb-wiki数据集合模型可从这里下载:https://data.vision.ee.ethz.ch/cv ...
- appium-unittest框架中的断言
1.首先unittest本身是一个python的测试框架,他有他自己的使用规则: 2.如果用其中的方法,需要引入,方法: import unittest class Login(unittest.Te ...
- Ubuntu登录异常: 输入正确的密码, 但是却无法进入系统, 总是返回到登录界面, 但是用ctrl+alt+F1-F文字界面登录都可以进入。
今天打开电脑的时候, 在输入密码之后, 未进入ubuntu的桌面, 而是显示了几行英文之后有返回到了登录界面.显示的英文如下: could not write bytes: Broken pipe ...
- http协议基础教程
引言 HTTP 是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和 扩展.目前在WWW中使用的是HTTP/ ...
- javascript的概述
JavaScript是怎么诞生的???刚开始的是为了验证表单而开发出来的. 什么是JavaScript???a.面向对象的编程语言b.解释性的编程语言(说白了就是不用编译的一种语言)c.脚本语言(说白 ...
- activity的四种加载模式介绍
四种加载模式的介绍: a) Standard : 系统默认模式,一次跳转即会生成一个新的实例: b) SingleTop : 和 standard 类似,唯一的区别就是当跳转的对象是位于栈顶 ...
- 解决iText+freemark导出pdf不支持base64的解决办法
工具类: package test; import java.io.IOException ; import org.w3c.dom.Element ; import org.xhtmlrendere ...
- Opengl创建机器人手臂代码示例
/*******************************************************robot.cpp*基于opengl的机械手臂示例代码*s:机械臂逆时针旋转*S:机械臂 ...
- ZROI2018提高day5t3
传送门 分析我们可以根据性质将这个序列构造成一个环:0,a[1~n],0,a[n~1] 这中间的0是为了起间隔作用的. 我们又知道b[i]=a[i-1]^a[i+1] c[i]=b[i-1]^b[i+ ...