git笔录
【一】git介绍

初始的项目版本管理可以在本地赋值备份之前版本代码,项目较小时还可以,但项目较大时,这种方法显得有点捉襟见肘 ... ...
后期也出现了很多版本管理工具,例如svn、vcs、vss等等...
【二】git安装
安装时分为32位和64位


下载好安装包后,安装即可
(1)安装验证,右击查看菜单栏
    
一般使用指令界面即可
【三】初始化git仓储
PS:这里举例是本地新建项目,并非导入已有项目
(1)本地新建项目文件
  
(2)当前项目目录下右击打开Git工具,路径为当前打开的项目路径
  
(3)初始化仓库
git init

翻译为:已经初始化了一个空的Git仓库在当前文件夹下,如下所示

有的计算机如果无法查看该隐藏文件,则可以设置显示隐藏文件,如下所示

然后将隐藏文件设置为显示状态即可


【四】配置用户名+邮箱
分析:项目开发完后,将项目备份至本地.git隐藏目录

同一个项目可能有多个人协同开发,为了知道项目具体代码贡献者,最好给每个项目贡献人员一个身份识别,所以接下来配置个人信息。
1、姓名:git config --global user.name "tony"
分析:config表示配置,global表示当前配置为全局配置,以后不用再进行配置 2、邮箱:git config --global user.email "xxx@qq.com"
分析:user.email为邮箱配置
.

以后可以在.git的logs日志文件里查看提交日期、备案名、贡献者等等... ...
【五】存储代码至本地git仓储
(1)首先验货
git status
查看项目文件变化
(2)门岗验货,将代码放置大门门口
Git有一个暂存区,可以放入新添加的文件或者加入新的改动
git add .或者git add./具体文件路径
解析:
git add .为一次性将所有文件加入缓存区,git add ./url为将指定文件加入缓存区
添加所有文件到门口
(3)将代码从门口放置到仓库
git commit -m"备注"
分析:commit为提交


【六】代码开发新功能,然后提交
步骤与之前类似,先验货→放门口→入仓库
git status
git add .
git commit -m"备注"
注意:提交时一定要添加备注,不然会进入vim编辑器模式(功能强大的跨平台文本文件编辑工具),如下所示

相关编辑语法:
一般模式切换到编辑模式:
i,I:进入插入模式,i为从目前光标所在处插入。I为在目前所在行的第一个非空格字符处开始插入。
a,A:进入插入模式。a为从目前光标所在处的下一个字符处开始插入。A为从所在行的最后一个字符处开始插入。
o,O:进入插入模式。o为在下一行插入。O为在上一行插入。
r,R:进入替换模式。r只替换光标所在那个字符一次。R会一直替换光标所在字符,直到按下Esc键。 一般模式切换到命令行:
:w:将编辑的数据写入到硬盘中。
:q:离开vi.后面加!为强制离开。
:wq:保存后离开。:wq!为强制保存后离开。
q为quit退出
【七】查看状态
git status
git status命令用于显示工作目录和暂存区的状态。使用此命令能看到那些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。
【八】查看日志
git log

精简方式查看日志
git log --oneline


【九】忽略文件

【十】git版本回退+版本切换(通过版本号进行切换)
(1)查看简洁日志
git log --oneline

版本回退,只是本地的。不会影响git库中的内容
(2)查看具体版本号
git log --pretty=oneline

(3)回退到具体的版本号
git rset --hard 版本号

(4)撤销回退
git reset --hard HEAD@{}
直接回到刚才的那个结点,{}中表示的是结点的序号
(5)除了以上回退方法,还有另一种
git reset --hard Head~0
0为当前
1为上一个

【十一】创建+切换+合并+删除分支
前言:默认主分支master
(1)创建分支
git branch 分支名
(2)切换分支
git checkoout 分支名
切换到指定分支

(3)查看当前分支
git branch

(4)分支合并
git merge 分支名
将新建分支合并到主分支,也可以合并到其他指定分支


(5)删除分支
git branch -d 分支名
注意:不能在当前分支上删除本分支
例如,主分支上删除其他分支

【十二】合并分支时冲突
冲突场景:在其他分支上做完操作后,最后切换回主分支进行合并,但在合并前不小心修改了主分支上代码,此时再合并便会合并失败,出现合并冲突

接下来需要手动处理冲突,此时打开文件查看

接下来人为判断进行删减,如下所示

最后重新提交即可


【十三】本地git库部署到线上
(1)前言
目前为止,只是在一个电脑上做版本管理,当进行团队协作时,便需要结合线上代码部署平台,进行线上线下团队管理

PS:GitHub不是git

如果想把本地代码提交到线上,这里需要用到git push指令
(2)登录代码托管平台,这里我先选择GitHub,国内常用的还有码云

(3)新建线上仓库


创建后如下所示

(4)复制HTTPS地址

提交→将本地git主分支代码提交到线上主分支
git push https://github.com/dfs12/test.git master

(5)身份验证
第一次提交时,会要求输入用户名和密码,这里的用户名和密码指的是GitHub的用户名和密码。

【十四】克隆/拉取线上代码
(1)新开发人员加入后需要拉取线上仓库到本地,所以首先需要在本地建立项目文件夹,并初始化git仓库



(2)拉取代码
往线上部署是推送git push,从线上往本地拉取为git pull

git pull 远程git地址 master

接下来查看本地文件,发现已经拉取成功

(3)除了使用git pull拉取远程仓库,还可以使用克隆方法
git clone 线上地址

(4)git pull和git clone区别
git clone会在本地创建与远程仓库相同名字文件夹
git pull需要先在本地初始化仓库,再拉取远程主分支
(5)开发规范
开发过程一般部署git push,拉取git pull
【十五】通过ssh方式上传代码
目前为止,通过HTTP方式上传代码时,需要GitHub用户名和密码,如果多人开发需要同时知晓,安全性较低,此时可以通过SSH方式

ssh方式上传代码,可以无需输入用户名和密码,即可通过验证。
这里验证方式,涉及到公钥和私钥
(1)添加生成公钥
生成公钥
ssh-keygen -t rsa -C <your_email@example.com>( 你的邮箱),连续点击 Enter 键即可
查看公钥
cd ~/.ssh
ls
cat ~/.ssh/id_rsa.pub
https://coding.net/help/doc/git/ssh-key.html
然后将公钥复制到GitHub
(2)查看公钥
除了上面方式,也可以根据路径找到相应文件进行查看

.pub后缀为公钥
另一个为私钥
(3)添加

之后便可以通过SSH方式直接push代码

这个公钥和私钥的作用有什么用?
公钥我们一般是给服务器的,他们到时候在权限中加入我给的公钥,然后当我从远地仓库中下载项目的时候,我在git clone xxx的时候,
那个服务器我通过他的绑定的公钥来匹配我的私钥,这个时候,如果匹配,则就可以正常下载,如果不匹配,则失败.
【十六】模拟两个用户同时开发

(1)前言
当前小明已经push推送完毕,接下来新加入的人员小红开始拉取代码
(2)拉取
git pull方式拉取代码时
、新建本地文件夹
、初始化本地git仓库,生成隐藏目录.git
、git pull 远程仓库地址 master

【十七】多人协同开发
多人协同开发经常出现代码冲突,此时手动人为判断即可
【十八】push与pull先后顺序
多人协同开发时,每次先拉取git pull,然后再推送 git push

【十九】git pull与git push简写
目前为止,每次拉取或者上传代码时,都会要求输入远程仓库地址,有些麻烦
使用以下命令配置远程存储库
git remote add 变量名 远程仓库地址
remote译为远程,添加远程地址
例如
git remote add origin 远程仓库地址
输入完成后,以后再次提交时便不用再输入git远程仓库地址,将origin替换其即可
注意:只针对当前配置好的目录下有效,如果没有配置,则在其他目录下均无效。
【二十】关联当前本地分支与远程分支
第一次提交时可以通过
git push origin -u master
通过-u将本地分支与远程分支进行关联,此后再次提交,便不用在最后输入origin与master
以后再提交时只需
git push

同理,此时拉取时也直接输入git pull即可。
【小结】
()初始化git仓库
git init
()配置用户名+邮箱
姓名:git config --global user.name "tony"
邮箱:git config --global user.email "xxx@qq.com"
()存储代码至本地git仓储
git status查看项目文件变化
git add .为一次性将所有文件加入缓存区,git add ./url为将指定文件加入缓存区
git commit -m"备注"
()vim编辑器模式(功能强大的跨平台文本文件编辑工具)
    一般模式切换到编辑模式:
    i,I:进入插入模式,i为从目前光标所在处插入。I为在目前所在行的第一个非空格字符处开始插入。
    a,A:进入插入模式。a为从目前光标所在处的下一个字符处开始插入。A为从所在行的最后一个字符处开始插入。
    o,O:进入插入模式。o为在下一行插入。O为在上一行插入。
    r,R:进入替换模式。r只替换光标所在那个字符一次。R会一直替换光标所在字符,直到按下Esc键。
    一般模式切换到命令行:
    :w:将编辑的数据写入到硬盘中。
    :q:离开vi.后面加!为强制离开。
    :wq:保存后离开。:wq!为强制保存后离开
(5)查看日志
git log查看完整日志
git log --oneline查看简洁日志
(6)版本回退/切换
1、git reset --hard Head~0
2、查看具体版本git log --pretty=oneline,然后切换到指定版本git rset --hard 版本号
3、撤销回退git reset --hard HEAD@{1}
(7)创建+切换+合并+删除分支
1、创建:git branch 分支名
2、切换:git checkoout 分支名
3、查看分支:git branch
4、合并分支:git merge 分支名
5、删除分支:git branch -d 分支名
(8)GitHub不是git
(9)本地git库部署到线上
1、登录代码托管平台,这里我先选择GitHub,国内常用的还有码云
2、新建线上仓库
3、复制仓库HTTPS地址
4、提交→将本地git主分支代码提交到线上主分支
5、身份验证:第一次提交时,会要求输入用户名和密码,这里的用户名和密码指的是GitHub的用户名和密码
(10)克隆/拉取线上代码
1、新开发人员加入后需要拉取线上仓库到本地,所以首先需要在本地建立项目文件夹,并初始化git仓库
2、拉取代码:往线上部署是推送git push,从线上往本地拉取为git pull
3、除了使用git pull拉取远程仓库,还可以使用克隆方法:git clone 线上地址
(11)git pull与git clone区别
1、git clone会在本地创建与远程仓库相同名字文件夹
2、git pull需要先在本地初始化仓库,再拉取远程主分支
(12)通过ssh方式上传代码
1、目前为止,通过HTTP方式上传代码时,需要GitHub用户名和密码,如果多人开发需要同时知晓,安全性较低,此时可以通过SSH方式.
ssh方式上传代码,可以无需输入用户名和密码,即可通过验证。这里验证方式,涉及到公钥和私钥
2、添加生成公钥
ssh-keygen -t rsa -C <your_email@example.com>( 你的邮箱),连续点击 Enter 键即可
3、查看公钥
两种方式,一种在本地查看,一种通过指令查看
①cd ~/.ssh
②ls
③cat ~/.ssh/id_rsa.pub
另外除了上面方式,也可以根据路径找到相应文件进行查看
.pub后缀为公钥,另一个为私钥
(13)这个公钥和私钥的作用有什么用?
公钥我们一般是给服务器的,他们到时候在权限中加入我给的公钥,然后当我从远地仓库中下载项目的时候,我在git clone xxx的时候,
那个服务器我通过他的绑定的公钥来匹配我的私钥,这个时候,如果匹配,则就可以正常下载,如果不匹配,则失败
(14)git pull与git push简写
目前为止,每次拉取或者上传代码时,都会要求输入远程仓库地址,有些麻烦
使用以下命令配置远程存储库
指令:git remote add 变量名 远程仓库地址
输入完成后,以后再次提交时便不用再输入git远程仓库地址,将origin替换其即可
(15)简化提交git push
第一次提交时可以通过
指令:git push origin -u master
通过-u将本地分支与远程分支进行关联,此后再次提交,便不用在最后输入origin与master
以后再提交时只需git push
(16)添加关联本地分支+远程分支
git remote add origin https://dev.33.cn/wangdong/alioss-file.git
(17)取消关联本地分支+远程分支
如果本地代码,已经关联了远程分支,则需要先解除关联
git remote remove origin
.
git笔录的更多相关文章
- git仓库管理笔录
		
Git是目前世界上最先进的分布式版本控制系统(没有之一). 小明做了个个人博客,放到了Git 仓库里面.第二天换了台电脑,只需要 git clone 克隆一下git 远程仓库的代码到本地即可.然后他 ...
 - Java标准I/O流编程一览笔录
		
I/O是什么 I/O 是Input/Output(输入.输出)的简称,输入流可以理解为向内存输入,输出流是从内存输出. 流 流是一个连续的数据流,可以从流中读取数据,也可以往流中写数据.流与数据源,或 ...
 - Java 标准 IO 流编程一览笔录( 下 )
		
8.回推流:PushbackInputStream与PushbackReader PushbackInputStream/PushbackReader 用于解析InputStream/Reader内的 ...
 - Git 子模块 - submodule
		
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目. 也许是第三方库,或者你 独立开发的,用于多个父项目的库. 现在问题来了:你想要把它们当做两个独立的项目,同时又想在 一个项目中使用另 ...
 - Git 在团队中的最佳实践--如何正确使用Git Flow
		
我们已经从SVN 切换到Git很多年了,现在几乎所有的项目都在使用Github管理, 本篇文章讲一下为什么使用Git, 以及如何在团队中正确使用. Git的优点 Git的优点很多,但是这里只列出我认为 ...
 - Git与Repo入门
		
版本控制 版本控制是什么已不用在说了,就是记录我们对文件.目录或工程等的修改历史,方便查看更改历史,备份以便恢复以前的版本,多人协作... 一.原始版本控制 最原始的版本控制是纯手工的版本控制:修改文 ...
 - Git Bash的一些命令和配置
		
查看git版本号: git --version 如果是第一次使用Git,你需要设置署名和邮箱: $ git config --global user.name "用户名" $ gi ...
 - 在Ubuntu 16.10 安装 git 并上传代码至 git.oschina.net
		
1. 注册一个账号和创建项目 先在git.oschina.net上注册一个账号和新建一个project ,如project name 是"myTest". 2.安装git sudo ...
 - 史上最详细git教程
		
题外话 虽然这个标题很惊悚,不过还是把你骗进来了,哈哈-各位看官不要着急,耐心往下看 Git是什么 Git是目前世界上最先进的分布式版本控制系统. SVN与Git的最主要的区别 SVN是集中式版本控制 ...
 
随机推荐
- Scrapy 下载图片时 ModuleNotFoundError: No module named'PIL'
			
使用scrapy的下载模块需要PIL(python图像处理模块)的支持,使用pip安装即可
 - 8. Vue - Router
			
一.Vue Router 的使用 JavaScript: 1.创建组件:创建单页面应用需要渲染的组件 2.创建路由:创建VueRouter实例 3.映射路由:调用VueRouter实例的map方法 4 ...
 - MVC(基础一)
			
MVC学习之前必须掌握的c#基础知识 一.类自动属性 public class Person { //自动属性 public string Name { get; set; } private int ...
 - Log4j2之ThreadContext
			
简介 系统中使用log4j2作为日志系统,然而在高并发的情况下,多次请求的日志参杂在一起,要跟踪某个用户一次的请求操作所有日志是很麻烦的.幸运的是log4j中有相应的解决方案. NDC和MDC NDC ...
 - 集成Hive和HBase
			
1. MapReduce 用MapReduce将数据从本地文件系统导入到HBase的表中, 比如从HBase中读取一些原始数据后使用MapReduce做数据分析. 结合计算型框架进行计算统计查看HBa ...
 - super()方法详解
			
目录 一.单独调用父类的方法 二.super() 方法基本概念 2.1 描述 2.2 语法 2.3 单继承使用super() 2.4 多继承使用super() 三.注意事项 四.练习 一.单独调用父类 ...
 - ROS Tricks
			
Gazebo 第一次进入 Gazebo 会卡在开始界面,此时是在加载模型文件,为保证模型顺利加载,可以提前将模型文件下载并放在本地路径 ~/.gazebo/models 下,模型文件下载地址: htt ...
 - python--numpy生成正态分布数据及randint randn normal的使用
			
正太分布:也叫(高斯分布Gaussian distribution),是一种随机概率分布 机器学习中numpy.random如何生成这样的正态分布数据,本篇博客记录这样的用法 import numpy ...
 - python-pandas读取mongodb、读取csv文件
			
续上一篇博客(‘’selenium爬取NBA并将数据存储到MongoDB‘)https://www.cnblogs.com/lutt/p/10810581.html 本篇的内容是将存储到mongo的数 ...
 - 序列化禁止使用Optional
			
1: 概论 Optional 是Java8用来改变java引发NPE的解决办法,但是不是绝对的解决办法 2: 例子: 很多博文一上来就给力以下使用例子 @Data public class User ...