git入门学习笔记

一、git的认识

git:版本控制工具,免费、分布式版本控制系统;

集中式版中控制系统:svn,最大的问题:中央服务器的单点故障

分布式版本控制系统:git,客户端并不是只提取最新版本的快照,还包括历史版本,git在客户端不仅保存最新的版本的代码,各历史版本的代码客户端也会保存,比svn存的东西多,但是占用内存并不比svn多多少,原因是用了极致的压缩、解压算法;

二、git简史

林纳斯-托瓦兹:主要成就:21岁开发Linux内核,很小就开始写代码了,发明了git;

三、git安装

1.官网 https://git-scm.com

官网下载,安装即可;

四、git本地结构

写代码区   ----git  add---》   暂存区    ---git  commit---》 本地仓库

五、初始化本地仓库

1.设置 Git Base Here 字体大小:

右键-->options,见下图:

2、查看git 安装版本

git --version

清屏:clear

3.git 设置签名

设置全局的用户名

git config  --global user.name ''zs''

设置邮箱

git config --global user.email "***@.163.com"

4.本地仓库的初始化

4.1在本地创建文件夹,作为git的本地仓库,可以在客户端通过cd命令切换,也可以找到新建的文件夹下,右键-->Git Base Here,输入初始化仓库的init命令,如下:

显示创建了一个空的git仓库,显示的git信息:

4.2查看.git文件的内容:

git通过config等文件来管理文件;

5.常用命令  add、commit

5.1在本地仓库文件夹中创建一个txt文档,把txt文档添加到本地仓库:

先把txt文档通过add命令添加到暂存区,再从缓存区通过commit命令添加到本地仓库,命令如下:

-m 是对提交信息的说明

注意:不在本地仓库的文件是不能提交到git上管理的;

6.查看仓库文件的提交状态  git status

查看状态:

添加一个新文件后查看状态:

新文件添加到暂存区后查看状态:

新文件提交到本地仓库查看状态:

修改文件后查看状态:

修改后的文件需要重新从工作区添加到暂存区,从暂存区提交到本地仓库

修改文件的行数都可以看的到;

7.查看历史提交版本:git log

log显示是按照时间倒叙进行显示的,先显示最近提交的,commit 后面的Hash字符长串可以理解为:是git的索引,不会重复,每提交一次就会生成一个。

当log信息比较多时,会有分页,

显示下一页:空格键

显示上一页:b

逐行显示:回车(Enter)

退出:q

8.查看日志的四种方式:

1)git log   显示信息比较多,有分页

2)git log --pretty=oneline   让日志完美的在一行显示

3)git log --oneline   日志在一行显示  但是索引值截取了前7位

4) git reflog   多了HEAD信息,表示返回历史版本需要走的步数

9.git reset命令,前进或回退历史版本

把当前版本回退到3596c5c版本,文件中的内容也已经修改过去了。多次回退之后的日志:

reset各参数说明

git reset --hard [索引]:本地仓库索引值移动的同时,暂存区、工作区同时移动(常用)

git reset --mixed [索引]:本地仓库索引值移动的同时:暂存区移动,工作区不移动

git reset --soft [索引]:本地仓库索引值移动的同时,暂存区、工作区都不移动

10.删除文件并恢复本地仓库文件  只是对本地仓库文件的操作

恢复缓存区中删除的文件与恢复本地仓库删除文件操作步骤是一样的:

git reset --hard [索引] 或者

git reset --hard head@[数字] :恢复到某个步骤

11.比较文件的差异

1)比较工作区与暂存区的差异

git  diff [文件名称]      git是通过行来管理文件的,因此在原来行添加数据,行会全部删除,新增加一行

git diff  对比工作区与缓存区中所有的差异文件

比较缓存区与本地仓库文件的差异,如果与本地仓库当前版本比较:

git diff HEAD [文件名称]

与指定版本对比

git diff [索引] [文件名称]

12.分支

1)查看分支

git branch  -v  目前只有一个master分支,并且显示最新的索引值

2)创建新分支

git branch V1   创建名字为V1的新分支,查看分支,*代表目前所在的分支

3)切换分支

git checkout V1   切换分支到V1

合并分支:切换到要合并的分支上进行合并,例如要把V1合并到master分支,先切换到master分支上,命令如下:git merge V1

如果合并的两个分支有冲突,则会显示(master|MERGING)需要手动解决冲突

文件显示如下,需要手动解决:

解决冲突后再进行合并:需要注意的是从暂存区提交到本地仓库不能加文件名称,否则提交报错

13.在gitHub上创建远程仓库,注册用户名设置密码,登录后页面如下:

点击“+”号创建仓库

14.远程仓库起别名

查看远程仓库的地址:

查看远程仓库有哪些别名并创建新的别名:git remote -v

给远程仓库创建别名:git remote add [别名] [远程仓库的地址]

fetch:表示可以从远程仓库取东西

push:表示可以上传到远程仓库

把本地仓库的东西上传到远程仓库:git push [远程仓库别名] [分支名称]

从远程仓库看,demo.txt已经上传,如下图:

12.克隆远程仓库的东西:git clone [远程仓库的地址]

远程仓库的地址:

克隆完成后查看远程仓库别名:需要切换到test本地仓库中查看

克隆做的三件事情:

1)初始化本地库

2) 把远程仓库的东西完整下载到本地

3) 远程库有的别名,帮我们创建远程库别名

13.邀请其他成员进入项目

windows git信息有缓存,查找git缓存:

git缓存信息

邀请其他成员:

被邀请人接收即可;

14.pull 和fetch 拉取远程仓库的东西

pull操作:fetch + meger 两步操作的合并,拉取后合并到本地代码,即远程仓库的代码会合并到本地工作区

fetch操作:只是下载远程仓库的代码到本地,不会合并到本地工作区;

切换目录到远程仓库的某个分支下:

切换到本地库后并合并本地代码:

git pull [远程仓库] [分支]   拉取之后并合并本地工作区代码

14.跨公司协作

A公司的人创建了项目   B公司的人需要用

A把项目地址发给B:

https://github.com/zhang654/testfork.git

B登陆github后,在地址栏中输入A发的项目地址:https://github.com/zhang654/testfork.git回车后,fork按钮可用了,点击fork后即可复制项目

注意fork的仓库必须是public的,private的看不到,fork的项目图标是这样的:

B下载项目,修改后并提交到本公司的仓库:

B想把改的东西提交到A公司的远程仓库,需要提交一个pull request,操作如下图所示:

提交之后就创建了一个pull 请求,在A公司的远程仓库可以看到,显示如下:

B pull request的请求信息

查看B修改的文件信息:

A通过files changed 查看B修改的文件

A同意合并,则操作如下,还可以给B就行留言

A的留言B会在pull request中看到。

16.SSH免密登陆

1)生成SSH密钥,进入主目录,是windows系统的主目录

在window主目录中,会生成一个.ssh的文件,打开文件如下图所示:

把id-rsa.pub公钥中的内容复制,复制到github中:

给SSH地址起别名,通过别名提交:

17.idea使用git

1)配置git,选择git的安装目录

2)初始化git本地仓库

选择目录,点击OK,git本地初始化完成。

3)提交文件到本地仓库

创建文件会提示是否加入暂存区,加入暂存区后,文件显示绿色,从暂存区提交到本地仓库。

idea这个菜单显示git的操作日志等信息:

4)本地库与远程仓库建立联系

先从远程仓库拉取信息:

git pull https://github.com/zhang123/test.git master --allow-unrelated-histories

添加拉取信息标识

输入 insert 进行输入 ,q退出编辑,输入:wq 进行保存,操作同linux命令一致。

把本地库信息push到远程仓库:

git push -u https://github.com/zhang123/test.git master -f

此时远程库与本地库就建立起了联系;

idea给远程仓库命名别名:

给远程仓库命名别名。

18.从远程仓库克隆代码到本地

idea 从远程仓库克隆代码
输入地址 可以测试
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353