Github&Git-1-Git基础

 

 

Git作用

通过git管理github所托管的项目代码

Git安装

https://www.git-scm.com/download/win

Git与Github

Git可以理解为一个版本管理的工具,而Github则是一个在线的代码仓库;

Git几个重要理念

工作区:可以理解为你存放业务代码的目录;

暂存区:stage或index区域,存放在一般在”.get/index”文件中;

版本库:存放在”.get”目录;

对象库:存在在”.git/objects”目录中;

git add

对工作区修改/新增的文件执行git add命令时,暂存区index的目录树被更新,同时工作区修改/新增的文件内容被写入到对象库objects中的一个新对象object中,而该对象的ID被记录在暂存区index的文件索引中;

add命令后面做3件事情:

更新index目录树、更新内容写入objects、新生成object链接写入index中;

git commit

当执行git commit操作时,暂存区index的目录树写到对象库objects中,同时暂存区index的目录树更新到master分支;

我这里好奇:为什么要把目录树写到objects中呢,另外,搞了半天,这个commit的最后,还是在本地磁盘啊;

git reset HEAD

当执行git reset HEAD时,因为HEAD可以看做是指向master分支的游标,因此,暂存区index的目录树会被master分支指向的目录树所替换,但工作区不受影响;

git rm

当执行git rm --cached <file>命令时,会直接从暂存区idnex删除文件,工作区则不做出改变;

Index不是只有一个目录树吗,这里删除的应该是目录树对应的目录,外加对应object的链接;

git checkout

当执行git checkout/git checkout -- <file>命令时,会用暂存区index全部或指定的文件替换工作区的文件,该命令会清除工作区中未添加到暂存区的改动;

git checkout HEAD

当执行 git checkout HEAD/git checkout HEAD <file> 命令时,会用HEAD指向的master分支中的全部或者部分文件替换暂存区index、工作区中的文件,该命令不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动;

指令介绍

 

workspace:工作区

staging area:暂存区/缓存区

local repository:或本地仓库

remote repository:远程仓库

创建仓库命令

git init

git init [目录]

git init 命用于在目录中创建新的Git仓库,在目录中执行git init就可以创建一个Git仓库了,或者,直接后缀目录也可以;

git clone

git clone url

url是要拷贝的项目

git clone 拷贝一个Git仓库到本地,让自己能够查看该项目,或者进行修改;拷贝完成后,在当前目录下会生成一个目录,默认情况下,Git会按照你提供的URL所指向的项目的名称创建你的本地项目目录,如果你想要一个不一样的名字, 可以在该命令后加上你想要的名称:git clone url myProjectName

提交与修改

git add

①添加一个或多个文件到暂存区:git add [file1] [file2] ...

②添加指定目录到暂存区,包括子目录:git add [dir]

③添加当前目录下的所有文件到暂存区:git add

git add 命令可将该文件添加到暂存区。

git status

git status命令用于查看在你上次提交之后是否有对文件进行再次修改,通常我们使用-s参数来获得简短的输出结果:

A:代表add新增

M:代表Modify修改

git diff

git diff命令显示已写入暂存区和已经被修改但尚未写入暂存区文件对区别;

①显示暂存区和工作区的差异

git diff [file]

②显示暂存区和上一次提交(commit)的差异:

$ git diff --cached [file]

$ git diff --staged [file]

③显示两次提交之间的差异:

$ git diff [first-branch]...[second-branch]

④查看已缓存的与未缓存的所有改动

git diff HEAD

⑤显示摘要而非整个diff:git diff --stat

git commit

git commit命令将暂存区内容添加到本地仓库中:

①提交暂存区到本地仓库中:git commit -m [message]

②提交暂存区的特定文件到仓库区:git commit [file1] [file2] ... -m [message]

③从工作区直接提交到本地仓库:git commit -a

④设置提交代码时的用户信息:

git config --global user.name 'runoob'

git config --global user.email test@runoob.com

如果去掉 --global 参数只对当前仓库有效。

git reset

git reset命令用于回退版本,可以指定退回某一次提交的版本,git reset命令语法格式如下:

git reset [--soft | --mixed | --hard] [HEAD]

①--soft参数用于回退到某个版本;

②--mixed为默认参数,可以不用带该参数,用于重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变;

③--hard参数撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交;

④HEAD参数表示当前版本:

HEAD^ 上一个版本

HEAD^^ 上上一个版本

HEAD^^^ 上上上一个版本

以此类推...也可以使用 ~数字表示

HEAD~0 表示当前版本

HEAD~1 上一个版本

HEAD~2 上上一个版本

HEAD~3 上上上一个版本

以此类推...

git reset HEAD命令用于取消已缓存的内容,即执行git reset HEAD来取消之前git add添加,但不希望包含在下一提交快照中的缓存。

git rm

git rm命令用于删除文件,git rm删除文件有以下几种形式:

①将文件从暂存区和工作区中删除:git rm <file>

②强行从暂存区和工作区中删除修改后的文件:git rm -f <file> (工作区通过add新增文件后,再次修改但没提交到index)

③如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,使用 --cached 选项即可:git rm --cached <file>

④如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:git rm –r *

git mv

git mv 命令用于移动或重命名一个文件、目录或软连接。

①移动文件:git mv [file] [newfile]

②重命名文件:git mv -f [file] [newfile]

提交日志

git log

在使用Git提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,我们可以使用git log命令查看。

①查看历史记录的简洁版本:git log --oneline

②查看历史中分支情况:git log --graph --oneline  

③逆向显示所有日志:git log --reverse --oneline

④查找指定用户的提交日志:git log --author=XXXX  --oneline

⑤查找指定日期的日志:

git log --oneline --before=xxx --after=xxxx

git log --oneline --since=xxx --until=xxxx

git blame

如果要查看指定文件的修改记录可以使用git blame命令,git blame命令是以列表形式显示修改记录:git blame <file>

远程操作

git remote

git remote命用于操作远程仓库:

①显示所有远程仓库:git remote -v

②显示某个远程仓库的信息:git remote show [remote]

③添加远程版本库:git remote add [shortname] [url]

④删除远程仓库:git remote rm name

⑤修改仓库名:git remote rename old_name new_name

git fetch

git fetch命令用于从远程获取代码库,该命令执行完后需要再执行git merge远程分支到你所在的分支;假设你配置好了一个远程仓库,并且你想要提取更新的数据,你可以首先执行:

git fetch [alias]

以上命令告诉Git去获取它有你没有的数据,然后你可以执行:

git merge [alias]/[branch]

以上命令将服务器上的任何更新合并到你的当前分支。

git pull

git pull 命用于从远程获取代码并合并本地的版本,命令格式如下:git pull <远程主机名> <远程分支名>:<本地分支名>

如果远程分支是与当前分支合并(即当前目录),则冒号后面的部分可以省略:git pull <远程主机名> <远程分支名>

git push

git push命用于从将本地的分支版本上传到远程并合并,命令格式如下:git push <远程主机名> <本地分支名>:<远程分支名>

如果本地分支名与远程分支名相同,则可以省略冒号:git push <远程主机名> <本地分支名>

如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数:git push --force <远程主机名> <本地分支名>:<远程分支名>

删除主机且分支也一起删除,则可以使用--delete参数:git push <远程主机名> --delete <远程分支名>

Git分支管理

使用分支可以从开发主线上分离开来,然后在不影响主线的同时继续工作;

创建分支:git branch (branchname)

切换分支:git checkout (branchname)

删除分支:git branch -d (branchname)

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

列出分支:git branch

解决冲突:修改发生冲突的文件、然后重新add、commit后再去合并

Git标签

如果你达到一个重要的阶段,并希望永远记住那个特别的提交快照,你可以使用git tag给它打上标签。

查看所有标签:git tag

指定标签信息:git tag -a <tagname> -m "标签"

创建标签:git tag tagName

删除标签:git tag -d tagName

查看此版本所修改的内容:git show tagName

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值