Git 的使用


系统的学习了Git简单操作,在这里做一些记录,方便之后的查阅

名字与邮箱

因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

注意git config命令的–global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
查询 名字与邮件

名字与邮箱

创建一个仓库

  1. 创建一个版本库非常简单,首先,选择一个合适的地方,创建一个空目录:
    在这里插入图片描述
    在命令行输入:
$ mkdir GitLearn
$ cd GitLearn
$ pwd

在这里插入图片描述
2. 通过git init命令把这个目录变成Git可以管理的仓库:
还未初始化,可以进入目录看看
在这里插入图片描述
输入命令行

$ git init

在这里插入图片描述
在这里插入图片描述

当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。

上传文件

使用NotePad 编写一个Txt文件。选择NotePad 是因为window自带的有问题不好用,将编码格式选择UTF-8 BOM

文本内容:

Git is a version control system.
Git is free software.

输入命令行

git add readme.txt
git commit -m "第一个上传"

第一步:添加
第二步:上传 -m 后面跟的是 说明 最好是每次都填写
执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。
可以多次添加不同文件,然后只进行一次的上传
在这里插入图片描述

查看状态

git status

git status命令可以让我们时刻掌握仓库当前的状态

git diff 文件名

git diff这个命令可以查看 文件是怎么修改的

在这里插入图片描述

status 查看仓库的当前状态,如果修改过的情况下 会提示修改了,diff 可以知道修改的内容是哪里。

版本回退

git log 

git log命令显示从最近到最远的提交日志

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上 –pretty=oneline 参数

git reset --hard HEAD^

可以将版本回退至上一个版本

git reset --hard 版本ID

可以跳到指定版本

git reflog

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

找到历史中 你想要回退的版本号

可以自己进行操作 查看文件中内容的变化,操作下吧

在这里插入图片描述

Git管理修改

Git跟踪并管理的是修改,而非文件

例如以下流程:

第一次修改 -> git add -> 第二次修改 -> git commit

Git管理的是修改,当你用git add命令后,在工作区的第一次修改被放入暂存区,准备提交,但是,在工作区的第二次修改并没有放入暂存区,所以,git commit只负责把暂存区的修改提交了,也就是第一次的修改被提交了,第二次的修改不会被提交。

删除文件与撤销修改

删除文件

git rm 文件名

撤销删除或者返回修改之前

git checkout 文件名

删除版本库需要执行 删除文件 操作 在提交

关联远程库GitHub

  1. github 创建一个账号 创建仓库
  2. 检查用户主目录 .user 下是否有 .ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
  3. 登陆GitHub,打开“Account settings”,“SSH Keys”页面:点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
  4. 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
  5. 关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
  6. 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

从远程库克隆

要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆。

$ git clone git@github.com:WhatHappenedChuanWei/gitskills.git

创建分支

$ git checkout -b dev
Switched to a new branch 'dev'

相当于

$ git branch dev   //创建
$ git checkout dev  //切换

查看分支

git branch

会显示所有分支,当前分支前面有 *

git checkout 分支名称

分支切换

git merge 分支

一般是在主分支执行此操作,将分支合并到主分支

git branch -d dev

合并完成 删除分支

Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch

切换分支:git checkout

创建+切换分支:git checkout -b

合并某分支到当前分支:git merge

删除分支:git branch -d

解决冲突

两个分支提交

需要手动修改

Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容

修改后 add commit.

分支管理策略

通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息

如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。

$ git merge --no-ff -m "merge with no-ff" dev

合并后

$ git log --graph --pretty=oneline --abbrev-commit
*   e1e9c68 (HEAD -> master) merge with no-ff
|\  
| * f52c633 (dev) add merge
|/  
*   cf810e4 conflict fixed

在实际开发中,我们应该按照几个基本原则进行分支管理:

首先,master分支应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;

那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;

你和你的小伙伴们每个人都在dev分支上干活,每个人都有自己的分支,时不时地往dev分支上合并就可以了。

所以,团队合作的分支看起来就像这样:

在这里插入图片描述

后续补充:

Bug 分支

Feature分支

多人协助

标签管理

自定义Git

参考 https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/001374027586935cf69c53637d8458c9aec27dd546a6cd6000

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值