Git学习

6 篇文章 0 订阅

目录(学习记录)

一、Git初始设置

二、Git简介

三、Git的一些基本操作命令和实践

四、Git上传到远程仓库(这里拿Github举例)


一、Git初始设置

安装成功后能够在开始菜单中看见这些部件,打开Git Bash

 

Git使用的是Linux环境下的操作语言,下面命令是设置签名(名字和邮箱,为了能够辨别你是谁):

$ git config --global user.name "Your Name"

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

接下来创建版本库

选择一个文件夹下创建空文件夹(可以利用mkdir创建,用cd前往相应目录,以下是我创建了文件夹后进行初始化的步骤)

创建完成后通过 git init 命令把这个目录变成Git可管理的仓库

这样Git环境就差不多搭建好了。

二、Git简介

Git是分布式版本控制系统,所以,没错,还有集中式版本控制系统。

先理解下版本控制系统。

版本控制工具具有以下几个功能:

协同修改:多人一起修改服务器端的同一个文件

数据备份:能够记录修改日志和提交过的历史状态

版本管理:保存版本文件信息时不保存重复数据。Git采取了文件系统快照的方式(保存的是文件系统的快照)

权限控制:对团队中参与开发的人员进行权限控制,对团队外开发者贡献的代码进行审核(Git独有特点)

历史纪录:查看修改人、修改时间、修改内容和日志信息,还可以将本地文件恢复到某一个历史状态

分支管理:允许开发团队在工作过程中多条生产线同时推进任务。

但集中式版本控制系统版本库是集中存放在中央服务器中的,需要联网,假如服务器崩坏,那整个系统也无法运作,这也叫做单点故障

Git大部分操作都在本地完成,,能够避免单点故障问题,有完整性保证,且分支操作非常快捷流畅。

三、Git的一些基本操作命令和实践

(1)查看或设置签名

 

项目级别/仓库级别:仅在当前本地库范围有效(去掉用户名和邮箱就可以查看现在的用户名和邮箱)

git config user.name 用户名
git config user.email 邮箱

 

系统用户界别:登录当前操作系统的用户范围,这里就不展示了

git config --global user.name 用户名
git config --global user.email 邮箱

 

级别优先级:项目级别>系统用户级别(不允许二者都没有)

(2)提交文件(将文件从工作区→暂存区→本地库)

以下为示意图:

 

命令:

git status:显示工作区、暂存区状态

git add <file>将工作区放入暂存区   git rm --cached <file> 撤销放入暂存区

git commit -m  “commit message” <file>暂存区提交到本地库

 

(3)查看日志

git log 修改日志(会出现哈希指针,多屏显示:空格向下翻页,b向上翻页,q退出)

git log --pretty=oneline(每条日志显示一行)

git log --oneline(只出现部分哈希指针)

git reflog:在oneline基础上显示移动到当前状态的步数

(4)版本回退(也可用在撤销)

git reset --hard <哈希指针的head>:移动到某个位置(哈希指针相当于索引)

git reset --hard HEAD^ :退回上次修改的状态(一个^表示回退一步)

git reset --hard HEAD^^^=git reset --hard HEAD~3

这里对reset三个参数进行对比:

  •   soft:仅在本地库移动HEAD指针
  •   mix:在本地库移动HEAD指针,重置暂存区
  •   hard:在本地库移动HEAD指针,重置暂存区,重置工作区

撤销修改:

git checkout – <file>
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”

 

(5)删除

rm <file>:从版本库删除文件,可以找回,因为这不会删除版本,再上一个版本中还存在此文件(利用git reset --hard)

注意:先输入rm <file>再输入git rm <file>

(6)比较文件差异

git diff <file> 将工作区和暂存区的文件进行比较

git diff <某个历史版本><file> 将工作区文件和本地库历史记录比较(不带文件名就是比较多个文件)

(7)分支

git branch -v 查看分支

git branch <分支名> 创建分支

git checkout <分支名> 切换分支

git checkout -b <分支名> 创建并切换分支

git branch -D <分支名> 删除分支

git branch -m <旧分支名> <新分支名> 重命名分支

合并分支(将分支2合并到分支1上):切换到要被合并的分支(假设为分支1)上,然后使用git merge<分支名(分支2)>,此时分支2上的修改就在分支1上了。

git merge --no-ff <分支名> 是合并禁用Fast forward模式,避免丢掉分支信息

合并之后可以看到在hibranch上修改的内容都显示在master上。

两分支比较差异可以使用

git log <分支1> ^<分支2>   比较分支1和分支2的差别
git log <分支1>..<分支2>   比较分支1比分支2多了什么
git log --left-right <分支1>...<分支2>    比较哪个分支多了改动,指出改动和分支

 

(8)合并冲突

修改readme.txt中的文字,提交到本地库中

再切换回master,同时修改最后一句并提交

此时合并就发生冲突

 

利用git status可以查看冲突原因

此时查看readme.txt

 

解决冲突的方法是自己修改readme.txt文件<-捂脸->,然后提交

(9)保存现场

git stash 把当前工作现场“储藏”起来,等以后恢复现场后继续工作

git stash apply <工作现场索引> 恢复工作现场内容

git stash drop <工作现场索引> 删除工作现场

git stash list 查看工作现场列表

git stash pop <工作现场索引> 恢复工作现场同时删除工作保存列表中的数据

(10)标签设置

git tag 版本号 <哈希指针的HEAD>

git tag 查看版本号

git tag -a 版本名 -m "标签说明" <哈希指针的HEAD>

git show <版本名> 可以看到标签说明

git tag -d <版本号> 删除标签

git push origin <版本号> 推送到远程仓库

git push origin --tags 推送所有标签到远程

(11) pull和fetch

git fetch origin <分支名>

git pull origin<分支名>

fetch是拉取所有本地仓库中还没有的数据(即最近一次fetch以来的更新),且只是将远程数据拉取到本地仓库,并不自动合并到当前工作分支;

而pull是自动抓取数据并合并到本地仓库中。

四、Git上传到远程仓库(这里拿Github举例)

先在Github上创建一个仓库,输入仓库名称,可以选择设置一下SSH(打开setting)

      

SSH可以在Git GUI里面找到,点击然后单击show SSH key,然后复制到进去就可以了。

这里开始建立连接。

输入

$ ssh -T git@github.com                                             这是用SSH方式连接Github
git remote add origin 地址(上图中的链接)                             HTTP方式或SSH方式

 然后可以将本地仓库中的文件推送到github仓库中(这里先进行了拉取,再推送)

注:这里要现有自己的本地仓库即文件夹里有.git文件,没有的话要"git init"一下。

进入到自己本地的仓库中(这里采用的是放项目的文件夹),并且将远程仓库文件克隆下来,这样你可以改远程仓库里的文件。(可以直接试下Push)

打开自己本地项目文件夹,发现新增一个文件夹,是刚刚克隆的远程仓库里的文件。

下面就将本地项目上传到远程仓库中,之后查看你的Github仓库就会发现多了项目啦~

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值