Mac OS Git 安装

一、Git是一个分布式的代码版本管理工具。类似的常用工具还有SVN,CVS。最大的特点也是优点在于提供分布式的代码管理

1、分支代码只有一份!

使用过svn的童鞋想必都知道,当我们要开发一个新功能或者增加一个新版本或者修改一个复杂bug的时候,通常需要copy整份代码到本地一个目录,然后添加到svn服务器上进行代码管理。

而Git不同,Git可以创建许多branches,每个branch都是独立的,当我们需要修改代码的时候,commit也只是对本地仓库的修改。如果使用SourceTree,我们会发现在工具栏的Git Flow功能,已经很好的为此做了准备。

2、log在本地!

svn的log都是存储在服务器上的,当我们要查阅修改记录的时候,必须要能够连接上远程服务器,并且具有权限。而Git不同,Git对于本地仓库的修改记录都是在本地上的,方便查阅。

3、合并代码更加方便!

因为Git支持本地无限Branches,当我们个体在本地创建多个branches用于不同目的的时候(修改,新增,探索),合并一份代码显然要比svn合并一堆工程copy更加简单。

4、更加安全!

Git的commit命令不同于SVN,commit只是对本地仓库代码的一次更新。当需要提交到master远程仓库,或者其他远程分支仓库的时候,需要使用push功能。虽然增加了一个过程,却可以防止随意修改导致后期合并出现大问题的风险。 在用户工作的时候,从本地仓库修改文件(modified),写入git的暂存区域(staged),将暂存区域的内容提交到本地仓库(committed)。这一系列的工作都是在用户本机的本地仓库上进行的。当你将本地的仓库push到远程服务器上的仓库之前,远程仓库里是没有你的工作成果的。

5、目录更加简洁!

在Git本地仓库根目录,只有一个.git文件,它包含了所有的管理信息。而SVN想必大家都知道,每个子目录下都有噁心的.svn。这个当需要修改文件冲突等问题时,就需要考虑了。肯定是一个文件简单。

 

二、安装

在进行安装前,要说一下,Git和SVN一样,都需要创建一个服务器的,他们都可以创建自己的版本管理服务器。对于个人和小团队来说,使用托管服务器可能更合适。

常见的有Github 和 Bitbucket。Github没有个人免费仓库使用,代码放上去就是开源的。Bitbucket的个人仓库相关页面已经基本汉化了。注册流程也比较简单。

MAC上最好的GIT免费GUI工具是SourceTree(没有之一)。此外,最好的GIT代码开源网站是GitHub,最好的GIT代码私有库是BitBucket。

安装过程:

1,下载Git installer,地址;http://git-scm.com/downloads

2,下载之后打开,双击.pkg安装

3, 打开终端,使用git --version或者which git命令查看安装版本,有就是安装成功了

4,创建一个全球用户名、全球邮箱

git config --global user.name "shengyao"

git config --global user.email "MY_NAME@example.com"

5、安装成功后打开终端

cd ~进入根目录

输入命令ssh-keygen生成ssh-key,如果有提示,一直按回车

6、将SSH key添加到GitHub。登录到GitHub页面,Account Settings->SSH Public Keys->Add another key

将生成的key(id_rsa.pub文件)内容copy到输入框中,save。

commd+shift+g进入/Users/chen/.ssh/就可以看得见私钥和公钥

私钥的名字是 id_rsa,是服务器确定你身份的唯一凭证。

公钥的名字是id_rsa.pub。把这个文件发给仓库管理员,仓库管理员会把这个公钥放到服务器上,以后git就通过上面的私钥跟服务器交互了。如果使用github就是自己把公钥内容添加上去

7、找一个目录执行git clone http://xxx.git(从服务器端克隆git库,当然这个要服务器管理员给你权限和帐号),以后xxx目录就是一个git目录,可以在这个目录下执行git操作

三、 linux基础命令

sudo -s   获取绝对用户权限

cd xxx    进入xxx目录

ls (-a/-A)   显示当前路径下所有文件(隐藏的)

pwd       显示当前绝对路径

mkdir  xxx   创建文件夹xxx

man xxx     查看xxx命令手册

 

然后介绍下Git基础命令的含义;

clone   克隆远程仓库

init       初始化仓库

remote 连接远程仓库

pull      从远程仓库下拉获取新数据

push    将本地仓库新增或修改文件上传到远程仓库

add     添加文件或者修改文件,commit以及push之前使用

log      当前仓库提交过的日志信息

status  当前仓库版本状态

commit 提交到当前仓库中

branch 分支命令,相关增删查操作

checkout 使用远程仓库最后一个版本完全覆盖当前仓库内容/选择分支branch

diff      对比版本内容

merge   合并版本内容

 

 

 

 

参考:

https://help.github.com/articles/set-up-git/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249207.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubeadm安装k8s 1.13版本

一:环境初始化 1.关闭selinux,iptables 2.做好本地的dns解析,我这里用的是/etc/hosts 3.做一下免密传输 4. master:10.0.18.210 node1:10.0.18.211 node2:10.0.18.212 二:配置yum源 [rootmaster yum.repos.d]# vim kuberbetes.repo [kubernet…

MyBastis 三种批量插入方式的性能比较

数据库使用的是MySQL,JDK版本1.8,运行在SpringBoot环境下 本文章源代码:https://github.com/runbeyondmove/mybatis-batch-demo 对比3种可用的方式 1、反复执行单条插入语句2、xml拼接sql3、批处理执行 先说结论:少量插入请使用反…

JS对象与jQuery对象

JS对象大致可以分为三种,如下图: JS常用内置对象(JS自身所持有的对象,不需要创建,直接可用): String:API跟java的字符串API大致相同 两种创建对象的方式:String s1 “…

Vue-router 中hash模式和history模式的区别

Vue-router 中hash模式和history模式的关系 在vue的路由配置中有mode选项 最直观的区别就是在url中 hash 带了一个很丑的 # 而history是没有#的 mode:"hash"; mode:"history"; hash模式和history模式的不同 对于vue这类渐进式前端开发框架&#xff0…

Nginx Slab内存管理

L38 Slub内存管理适用 ngx_http_limit_conn_module、ngx_http_limit_req_module 模块场景 我们可以用阿里第三方模块Slab_Stat模块 并且用add-module 方式编译进openresty中 转载于:https://www.cnblogs.com/jackey2015/p/10684151.html

day2---while else

# -*- coding:utf-8 -*-while 条件&#xff1a;循环体终止循环 else&#xff1a; while else 解释&#xff1a;当循环体中没有被break打断则会运行else&#xff0c;打断则不会运行else# 例子 a 0 while a < 5:print(a)a 1break else:print(循环结束) # 0 转载于:https:/…

jQuery中this与$(this)的区别总结

https://www.cnblogs.com/gfl123/p/8080484.html

2019前端必会黑科技之PWA

一、背景 从2018年到现在&#xff0c;作为号称下一代web应用模型的PWA&#xff0c;逐渐成为了一个各大前端厂商争先恐后进行涉足&#xff0c;布局的一个新的技术&#xff0c; 其主要的对标物Native app&#xff0c;作为现在最主流的mobile端应用&#xff0c;它的安全&#xff…

Tcpdump抓包工具的使用

# Tcpdump抓包工具的使用## 简介tcpdump是linux下最常用的命令行抓包工具&#xff0c;可以在线安装## 安装- sudo apt install tcpdump## 查看网卡- ip addr查看网卡名称## 简单的使用示例- sudo tcpdump -i enp032 抓取指定网卡的数据包&#xff0c;并- sudo tcpdump -i enp03…

Node.js异步库async

async的使用需要安装第三方包 1.串行无关联 async.series 函数依次执行,后面不需要调前面步骤的结果 程序执行时间为所有步骤之和 2.并行无关联 async.paraller 某步出错不影响其他步骤执行 程序执行时间为最长的那个时间 3.串行有关联 async.waterfall 函数依次执行,后面需要…

Java技术栈---语言基础

基础语法 面向对象 接口 容器 异常 泛型 反射 注解 I/O

Mongodb 查询时间类型

$where: this.CreateDate.toJSON().slice(0,13) "2019-04-04T05"转载于:https://www.cnblogs.com/kevin1988/p/10685075.html

vue prop不同数据类型(数组,对象..)设置默认值

vue prop 会接收不同的数据类型&#xff0c;这里列出了 常用的数据类型的设置默认值的写法,其中包含&#xff1a; Number, String, Boolean, Array, Function, Object refAge: { type: Number, default: 0 }, refName: { type: String, default: }, hotDataLoading: { typ…

正则表达式——基础

正则表达式的基本符号使用&#xff1a; 1。基本符号&#xff1a; a . 匹配任意单个字符&#xff0c;如&#xff1a;.000就可以匹配到1000&#xff0c;2000&#xff0c;3000&#xff0c;a000,b000等。 b | 匹配满足其中一个条件&#xff0c;如&#xff1a; 1000|2000|3000 可以…

谈一谈并查集QAQ(上)

最近几日理了理学过的很多oi知识。。。发现不知不觉就有很多的知识忘记了。。。 在聊聊并查集的时候顺便当作巩固吧。。。。 什么是并查集呢? ( Union Find Set ) 是一种用于处理分离集合的抽象数据结构类型。 具体一点: 当我们给出两个元素的一个无序对&#xff08;a,b&#…

vue的双向绑定原理及实现

前言 使用vue也好有一段时间了&#xff0c;虽然对其双向绑定原理也有了解个大概&#xff0c;但也没好好探究下其原理实现&#xff0c;所以这次特意花了几晚时间查阅资料和阅读相关源码&#xff0c;自己也实现一个简单版vue的双向绑定版本&#xff0c;先上个成果图来吸引各位&a…

python后端将svc文件数据读入数据库具体实现

如何用python将svc文件的数据读入到MySQL数据库里&#xff0c;在此直接上代码了&#xff0c;感兴趣的朋友可以贴代码测试&#xff1a; import pandas as pd import os from sqlalchemy import create_engine # 初始化数据库连接&#xff0c;使用pymysql模块 # MySQL的用户&…

作业——8

这个作业属于哪个课程C语言程序设计Ⅱ这个作业的要求在哪里C语言作业评价标准我在这个课程的目标是指针与字符串这个作业在哪个具体方面帮助我实现目标使用指针与字符串参考文献指针和字符串&#xff08;基础知识&#xff09;第七周作业 一 1 、使用函数删除字符串中的字符 输入…

Vue实现组件props双向绑定解决方案

注意&#xff1a; 子组件不能直接修改prop过来的数据&#xff0c;会报错 方案一&#xff1a; 用data对象中创建一个props属性的副本 watch props属性 赋予data副本 来同步组件外对props的修改 watch data副本&#xff0c;emit一个函数 通知到组件外 HelloWorld组件代码如下…

统计词频问题

adict{} xinput().lower() #把单词大写字母改为小写字母 for i in x:if i in [,,.,"",",!]:xx[:x.index(i)]x[x.index(i)1:] #把句子中的非字母字符用切片操作删掉 asetset(x.split( )) #集合的好处在于不重复 alstx.split( ) for n in aset:tempdict{n:alst.…