git使用那些事儿(代码片段)

163yun 163yun     2023-01-03     372

关键词:

本文来自网易云社区

作者:孙有军


工欲善其事,必先利其器,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 "[email protected]

查看是否配置成功:

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分支

远程版本库

比如有远程版本库,https://github.com/FreeSunny/RefreashTabView.git

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使用经验总结一、克隆项目1.通过GitLab查询项目 的地址2.克隆项目(gitAddr需从gitLab中查得)  gitclonegitAddr3.切分支切到dev分支  gitcheckoutdev4.转换为eclipse项目  mvneclipse:eclipse 5.导入到eclipse中 二、提交流程1.&nbs... 查看详情

注解的那些事儿|注解的使用(代码片段)

...义】,点击跳转到原文《注解的那些事儿(三)|注解的使用》学会了如何定义自定义注解,那还要会用起来才行。其实自定义注解使用也非常简单,像我们上篇文章定义的一个Sweet注解。public@interfaceSweetStringsweetLevel();要使用它... 查看详情

handler使用的那些事儿(代码片段)

...何有开发经验的童鞋,对Handler肯定是如雷贯耳,使用也必定非常熟练,当现在我还是想对其来个梳理,总结下常见的疑问: 1.常听人说mHandler.obtainMessage(what,obj).sendToTarget()要比Messagemsg=newMessage;msg.what&#... 查看详情

git关于git那些事儿

 1、关于Git那些事儿https://github.com/FrankKai/FrankKai.github.io/issues/39 查看详情

jdk源码那些事儿之locksupport(代码片段)

...,在AQS中你能看见它的身影,所以需要提前了解其实现和使用机制,便于后面深入AQS的学习前言JDK版本号:1.8.0_171在源码阅读之前希望大家先去阅读几遍注释,其中介绍了LockSupport的设计,实现和使用机制,这里进行简单说明下... 查看详情

ios单元测试的那些事儿(代码片段)

...且成本最低的测试方式。越偏向底层服务的代码,越需要使用单元测试来对可靠性进行保障。一旦单元测试覆盖完成,则之后再进行代码优化和迭代的时候则会有引入新问题的几率会大为减小。Xcode提供了完整的单元测试功能,... 查看详情

注解的那些事儿|如何自定义注解(代码片段)

自定义注解是自己写框架的必备技能,使用注解能极大地提升开发效率,因此自定义注解是一个高级开发者必备的技能。要自定义注解,首先需要了解一个注解的构成部分。一个注解大致可以分为三个部分:注解体、元注解、注... 查看详情

jdk源码那些事儿之常用的arraylist(代码片段)

前面已经讲解集合中的HashMap并且也对其中使用的红黑树结构做了对应的说明,这次就来看下简单一些的另一个集合类,也是日常经常使用到的ArrayList,整体来说,算是比较好理解的集合了,一起来看下前言jdk版本:1.8类定义publi... 查看详情

fastdfs运维友好那些事儿(代码片段)

FastDFS运维友好那些事儿本篇文章转载于FastDFS作者余庆大佬的FastDFS分享与交流公众号。FastDFS运维友好那些事儿(一)FastDFS运维友好那些事儿(二)最近有人在FastDFSQQ技术交流群里爆料,说网上有人吐槽FastDFS... 查看详情

诊断协议那些事儿(代码片段)

诊断协议那些事儿本专栏将以ISO14229、15765-2为基础深入介绍诊断那些事儿,从故障定位到软件刷写……重点掌握各个服务的功能、报文格式,为后续功能开发打下基础!提示:可参考目录索引进行学习一、UDS是什... 查看详情

算法零基础学习关于素数的那些事儿(代码片段)

文章目录关于素数用程序判定一个数是否是素数使用素数的定义优化一推荐题目筛选出n之内的所有素数枚举法埃氏筛📖核心思想👨‍💻代码推荐题目关于素数素数,又称为质数。它是指那些只包含1和它本身两... 查看详情

工具类excel导出那些事儿(代码片段)

...ff0c;或者导出List<map>,现在需要导出双标题Excel。使用poi实现.本篇先介绍基础的导出方法引用的jar包<dependency><groupId>org.apache.poi</groupId><artifactI 查看详情

详解viewmodel的那些事儿(代码片段)

...非常熟悉,无论是新项目还是老项目,基本都会使用到。而ViewModel作为JetPack核心组件,其本身也更是承担着不可或缺的作用。因此,了解ViewModel的设计思想更是每个应用层开发者必不可缺的基本功。随着这两年Vie... 查看详情

工具类excel导出那些事儿(代码片段)

接上一篇博客,继续介绍双标题导出./***双标题excel导出*@paramresponse*@paramfileName文件名*@paramsheetNamesheet页名*@paramfirstTitle第一行表头标题*@paramtitle第二行标题*@paramcontent每一列对应值*@paramlist单元格下拉选项(可... 查看详情

c的那些事儿(代码片段)

...学习、编程的经历中收获的一些经验,我将其命题为C的那些事儿,记录C语言的编程哲学。二、正文auto关键字显然是摆设这个关键字只对创建符号表入口的编译器设计者有意义。它的意思是“在进入程序块时自动进行内存分配“... 查看详情

c++临时对象那些事儿(代码片段)

    C++大概是这个世界上最飘逸、成功、失败的语言吧,临时对象是C++语言中最复杂的东西之一。以下代码段新手大概经常会写吧:std::stringFetchFormat() return"%d";intmain() printf(FetchFormat().c_str(),100);这个代... 查看详情

字符串的那些事儿(代码片段)

一、字符串替换二、字符串排序三、删除字符串中的子串一、字符串替换描述:实现字符串"Goodmorning!"到"Goodevening!"的替换。代码实现:#include<stdio.h>char*MyReplace(char*s1,char*s2,intpos)//自定义的替换函数 inti,j; ... 查看详情

并发编程的那些事儿(代码片段)

1、生产者和消费者模型  作用:用于解耦。  原理:生产者将生产的数据放到缓存区,消费者从缓存区直接取。借助队列来实现该模型(队列就是缓存区)  队列是安全的,自带锁机制。  q=Queue(num)  num为队列的最... 查看详情