git语法及github的使用

版本控制

版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术

检查配置信息
git config -l :查看现在的git环境详细配置

git简介

Git 不同以Svn对待或保存数据(git是直接记录快照,而非差异比较)。反之,Git 更像是把数据看作是对小型文件系统的一组快照。每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件,Git 对待数据更像是一个快照流
在这里插入图片描述

git 保证完整性

Git 中所有数据在存储前都计算校验和,然后以校验和来引用。这意味着不可能在 Git 不知情时更改任何文件内容或目录内容,Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。这是一个由 40 个十六进制字符(0-9 和 a-f)组成字符串,基于 Git 中文件的内容或目录结构计算出来。SHA-1 哈希看起来是这样:在这里插入图片描述

git基础

获取git仓库

1.在现有目录中初始化仓库
git init
2.克隆现有的仓库–克隆一个项目和它的整个代码历史(版本信息)
git clone [url] (自定义本地仓库名)

git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)
Workspace:工作区,就是你平时存放项目代码的地方
Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

git的常用操作在这里插入图片描述
git的文件操作

GIT不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用SHA-1算法计算文件的校验和

文件的四种状态:
Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged
Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified
在这里插入图片描述

检查当前文件状态

git status: 查看哪些文件处于什么状态
Changes to be committed :要提交的更改
Changes not staged for commit :未准备提交的更改

添加文件与目录

#添加指定文件到暂存区
git add [file1] [file2] …
#添加指定目录到暂存区,包括子目录
git add [dir]
#添加当前目录的所有文件到暂存区
git add .

移除文件与目录(撤销)

#直接从暂存区删除文件,工作区则不做出改变(只从stage中删除,保留物理文件)
git rm --cached file
#如果已经用add 命令把文件加入stage了,就先需要从stage中撤销
git reset HEAD file…
#不但从stage中删除,同时删除物理文件
git rm file
#移除所有未跟踪文件,一般会加上参数-df,-d表示包含目录,-f表示强制清除
git clean [options]
#把a.txt改名为b.txt
git mv a.txt b.txt

查看文件修改后的差异

git diff [files]:查看文件修改后的差异
—a表示修改之前的文件,+++b表示修改后的文件
git diff --cached:比较暂存区的文件与之前已经提交过的文件

忽略文件

忽略(ignore)文件:通过touch .gitignore创建文件,将所要忽略的文件放入该文件中,默认忽略空目录(通配符)

提交更新

git commit -m [message]:提交暂存区到仓库区
git commit -a:提交工作区自上次commit之后的变化,直接到仓库区,跳过了add,对新文件无效
git commit -v:提交时显示所有diff信息
git commit --amend m “message”:注释重写提交说明

日志和历史

git log (num):查看提交日志(最近的几次)
git log --pretty=oneline:指定格式显示日志信息
git log --pretty=format:"%h-%an,%ar:%s":自定义log-format格式

版本穿梭(在多个commit之间进行穿梭)

git reset --hard HEAD~n:回退到上N次commit
git reset --hard sha-1值:通过shal值,跳转到任意一次commit,sha-1值不得少于4位
git relog:查看仓库中所有的分支的所有更新记录,包括已经撤销的更新,撤销方法与上面一样

删除和撤销提交

git rm (-f) file:删除已提交到文件(删除提交的文件会被放到暂存区,-f 强制删除,物理删除了,同时删除工作区和暂存区中的文件)
git checkout --file…:撤销删除文件

git文件操作图解在这里插入图片描述
git分支

分支其实就是一个commit链,一条工作记录线,每一个version都有一个sha-1值,每一次提交都会产生一个sha-1值且保存上一个,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master:指向当前提交(commit),HEAD:指向当前分支(HEAD->分支名)

git branch -a:列出所有本地分支和远程分支(-a,查看所有)
git branch [branch]:创建分支
git checkout [branch]:切换分支
git checkout -b [branch]:创建新分支并切换(合并分支就是对分支的指针操作)
git merge [branch]:合并指定分支到当前分支
git branch -d [branch]:删除分支(不能删除当前分支,-D:强制删除)

解决冲突

如果同一个文件在合并分支时都被修改了则会引起冲突
手动解决完冲突后就可以把此文件添 加到索引(index)中去,重新提交
git log --graph:查看分支合并图

远程仓库的操作

#下载远程仓库的所有变动,不会自动merge
git fetch [remote]
#取回远程仓库的变化,并与本地分支合并
git pull [remote] [branch]
#上传本地指定分支到远程仓库
git push [remote] [branch]
#增加一个新的远程仓库,并命名
git remote add [shortname] [url]
#修改远程仓库
git remote rename [oldname] [newname]
#删除远程仓库
git remote rm [remote-name]

git remote(用于管理主机名)

git要求每个远程主机都必须指定一个主机名,默认主机名为origin
git remote: 不带选项的时候,git remote命令列出所有远程主机
git remote -v :显示所有远程仓库
git remote add <主机名> <网址>: 用于添加远程主机
git remote rm <主机名> :用于删除远程主机
git remote rename <原主机名> <新主机名> :用于远程主机的改名

第一次上传到github

建立远程仓库,例如github,gitlab
git init:纳入git的管理,本地仓库(产生一个.git文件)
git remote add origin http/ssh :将本地项目与远程项目关联
git add . :添加当前文件夹下的所有文件
git commit -m “第一次上传” :引号中的内容为对该文件的描述(将本地的master分支推送到origin主机,同时指定origin为默认主机,-u选项会指定一个默认主机)
上传github之前,要先pull一下,git pull origin master(若出现错误:fatal: refusing to merge unrelated histories),则使用命令 git pull origin master –allow-unrelated-histories(shift+zz:退出)
git push -u origin master:第一次上传项目文件

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值