Git使用教程指南

一、简介

git官方网站
git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理,是目前使用范围最广的版本管理工具。git主要有以下几个优点:

  • 版本控制。可以使用git手动记录历史的所有提交版本,方便查看历史改动和进行版本回退。每次commit都会生成一个版本快照,方便在需要的时候进行回退或者查看。
  • 远程备份。本地版本库和远程仓库关联,可以随时更新远程仓库,也可以很方便的把文件从远程仓库下载下来。
  • 协同合作。每个人可以建立自己的分支,完成自己的部分之后把改动合并入公共分支就行了(修改了相同的部分需要解决文件冲突)。

二、git 快速开始和一般使用方法

2.1 快速开始

git有远程仓库和本地仓库。"git init“命令可以在文件夹下面生成”.git"本地版本仓库文件。如果你只想在本地使用它的版本控制功能,可以直接跳到下一节的内容。如果你需要可以远程访问你的代码,则需要配置github的远程仓库。此时你可能面临三种情况:

  • 一是在别人的远程仓库的基础上做增量的工作,直接 git clone 下来对方的代码就可以了。
git clone https://github.com/lyh360121/docs.git
  • 二是没有远程仓库。需要先注册github,然后配置ssh,点击"new repository"创建新的远程仓库。github上面可以管理自己仓库,要修改仓库代码,需要修改本地仓库,通过"pull request"的形式才能更改(该开始接触gitHub可能会想能不能直接在github的网站上修改代码,答案是不能)。仓库创建的时候github上会给出初始化本地仓库的一些指导。在本地执行以下步骤:初始化文件夹为git仓库 -> 设置对应远程仓库地址 -> 提交本地代码到刚刚设置的远程仓库。对应命令如下:
git init
git remote add origin https://github.com/lyh360121/docs.git
git push -u origin 分支名
  • 三是已有远程仓库,也有需要提交的代码。那么只需要设置对应远程仓库地址然后提交代码就可以了,也就是运行上面的"git remote add"和"git push"。

2.2 git的配置相关的一些命令

  • 查看配置信息:git config --list
  • 关联远程分支:git branch –set-upstream 分支名
  • 设置用户名:git config --global user.name "lyh"
  • 设置用户邮箱:git config --global user.email "lyh@qq.com"
  • 查看远程关联的仓库:git remote -v

2.3 git一般使用流程

最常用的一套操作流程如下:

  1. git clone 下载远程仓库代码到本地或者在文件夹执行“git init”将文件夹初始化为git仓库(git clone下载的仓库不需要执行git init,因为它已经是git仓库了)。
  2. git checkout -b my-branch 切换到“my-branch”分支,如果没有"my-branch"分支,则会新建该分支并且切换过去。如果只是自己一个人使用,不进行这一步也OK吧。
  3. 进行文件编辑和文件修改等各种操作
  4. git add . (注意:这个点“.”代表当前目录所有文件) 将所有工作区文件添加到暂存区。
  5. git commit -m "备注" 将暂存区的文件提交到版本库中。
  6. git push origin 将本地版本库的更新推送到远程仓库,origin可以省略。

日常开发中一般只需要知道上面提到的5个命令就可以了,然后重复步骤3~6。关于其他更丰富的能力,在下一节将介绍常用的一些其他命令。简单介绍一下上面提到的三个概念:

  • 工作区:工作时直接操作修改的文件,也就是本地的源文件,除了".git"外,其他所有文件夹和文件
  • 暂存区:保存在".git"文件夹里面,用来暂时存储工作区的改动。要提交到版本库中,必须先使用"git add"提交文件到暂存区。
  • 版本库:也是保存在"./git"文件夹里面。所有的commit都会被记录。而暂存区只会暂存版本,不会记录历史。

三、git 常用命令

下面是git的一些常用命令的详细介绍。这里只介绍这些命令的一般用法,更详细更全面的用法可以百度或者查看官方文档。也可以用"git help 命令XXX"查看帮助。

(1)git init

使用场景:为文件夹创建git版本库。
初始化一个目录为git仓库,初始化之后会在当前文件夹下面生成".git"文件,然后才可以在该文件夹下面执行git的其他操作。

(2)git clone

使用场景:下载已有的远程仓库代码到当前文件夹。

(3)git branch

使用场景:查看分支列表或者删除本地分支。

  • git branch:查看本地分支列表。
  • git branch -r:查看远程分支列表。
  • git branch -a:查看本地和远程所有分支列表。
  • git branch test:基于当前commit创建test分支。
  • git branch -d test:删除一个名字为test的分支。如果该分支有提交未进行合并,则会删除失败。
  • git branch -D test:强制删除一个名字为test 的分支。如果该分支有提交未进行合并,也会删除成功。

(4)git checkout

使用场景:一是切换分支,二是撤销修改。

  • git checkout test:切换到test分支。
  • git checkout -b test:创建并切换到test分支。这个命令是将git branch test和git checkout test合在一起的结果。
  • git checkout .:放弃工作区中全部的修改。
  • git checkout -- filename:放弃工作区中某个文件的修改。
  • git checkout test f.txt:可以把test分支的f.txt文件复制到当前分支。

(5)git add

使用场景:将当前目录下的修改从工作区添加到暂存区。

  • git add .:将当前目录下修改的所有代码从工作区添加到暂存区 . 代表当前目录。不加参数默认为将修改操作的文件和未跟踪新添加的文件添加到git系统的暂存区,注意不包括删除。
  • git add -u:将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件,注意这些被删除的文件被加入到暂存区再被提交并推送到服务器的版本库之后这个文件就会从git系统中消失了。
  • git add -A:表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区。

(6)git commit

使用场景:将暂存区文件提交到版本库。

  • git commit:主要是将暂存区里的改动给提交到本地的版本库。每次使用这个命令我们都会在本地版本库生成一个40位的哈希值,这个哈希值也叫commit-id,commit-id 在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里。
  • git commit -m ‘message’:-m 参数表示可以直接输入后面的“message”,如果不加 -m参数,那么是不能直接输入message的,而是会调用一个编辑器一般是vim来让你输入这个message,message即是我们用来简要说明这次提交的语句。
  • git commit -am ‘message’:-am等同于-a -m。-a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库,即使它们没有经过git add添加到暂存区。

(7)git push

使用场景:用于从将本地的分支版本上传到远程并合并。
详细参数:git push <远程主机名> <本地分支名>:<远程分支名>
例子:git push origin test_local:test_remote
默认推送当前分支到远程的对应分支,可以简写为:git push origin test_remote 或者 git push origin 或者 git push。

(8)git reset

使用场景:这个命令涉及到git的一些版本控制原理,稍微比较复杂。简单来说这个命令可以用来恢复历史版本。

  • git reset HEAD 是将咱暂存区和HEAD的提交保持一致。
  • git reset --hard HEAD 是将工作区、暂存取和HEAD保持一致。

“HEAD”是一个固定名词,代指最后一次提交的版本,上一个版本是“HEAD”,上上个版本是“HEAD^”,词以类推。上个版本还可以用“HEAD1”表示,上上个版本用“HEAD2”表示,以此类推。HEAD可以换成commit-id可以退回到任意特定的提交快照的状态。

(9)git diff

使用场景:可以对比提交版本库前后的差异,也可以对比不同分支的差异。

  • git diff:当工作区有改动,临时区为空,diff的对比是“工作区与最后一次commit提交的仓库的共同文件”;当工作区有改动,临时区不为空,diff对比的是“工作区与暂存区的共同文件”。
  • git diff --cachedgit diff --staged:显示暂存区(已add但未commit文件)和最后一次commit(HEAD)之间的所有不相同文件的增删改(git diff --cached和git diff –staged相同作用)。
  • git diff HEAD:显示工作目录(已track但未add文件)和暂存区(已add但未commit文件)与最后一次commit之间的的所有不相同文件的增删改。
  • git diff HEAD~Xgit diff HEAD^^^…:可以查看最近一次提交的版本与往过去时间线前数X个的版本之间的所有同(3)中定义文件之间的增删改。
  • git diff <分支名1> <分支名2>:比较两个分支上最后 commit 的内容的差别。
  • git diff branch1 branch2 --stat:显示出所有有差异的文件(不详细,没有对比内容)。
  • git diff branch1 branch2:显示出所有有差异的文件的详细差异(更详细)。
  • git diff branch1 branch2:具体文件路径 显示指定文件的详细差异(对比内容)。

(10)git fetch

使用场景:将远程主机的最新内容拉到本地,用户在检查了以后决定是否使用"git merge"合并到工作本机分支中。

(11)git merge

最常用的用法:“git merge dev” 将"dev"分支的改动,合并到当前分支。

(12)git pull

可以理解为就是 git fetch 和 git merge 的简写。

(13)git status

使用场景:查看在上次提交版本库之后是否有对文件进行了再次修改。

(14)git stash

使用场景:要切换到其他的分支,是必须要先将工作区的改动提交到版本库的。如果这个时候你对代码还不满意,不想提交以免污染当前的分支,可以先用git stash存在本地,处理完其他分支的改动之后切回来,然后用git stash pop恢复。

  • git stash:将当前的工作代码储存(stash)
  • git stash list:查看暂存的代码列表
  • git stash pop:恢复并删除最新的stash(也可以通过名称指定)
  • git stash apply:恢复(也可以恢复指定的stash),恢复后stash内容并不删除,用git stash drop来删除
  • git stash drop: 删除最新的stash(也可以通过名称指定)
  • git stash clear: 删除所有stash的内容
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值