美文网首页
git学习笔记

git学习笔记

作者: 追梦的青鸟 | 来源:发表于2019-08-12 23:25 被阅读0次

之前看过一篇简书某位大神的git教程整理的非常好,可是因为没做好mark工作,所以最近找不到了,
还是自己来整理一篇吧,尽量向大神靠拢(o゚▽゚)o

  • 准备工作

  • git简介

分布式版本控制系统。
如果你还想知道分布式版本控制系统是个什么东东,以及它与集中式版本控制系统的区别,可查看廖雪峰大佬的git教程

  • 安装git

git的安装也是很简单的,直接在官网下载安装程序,然后就可以愉快滴下一步下一步了,安装完成之后桌面上会出现一个Git Bash的快捷图标,可以直接双击打开或者在文件夹内右键打开Git Bash窗口就可以使用git命令了。

  • 初始化git

安装完成之后就要进行git的初始工作了,打开Git Bash窗口,输入

git config --global user.name "ZM"
git config --global user.email "237****@qq.com" 
  • 专有名词

在学习具体指令之前,让我们先来看一下,git相关的专有名词:
1. WorkSpace ----------------工作区
2. Index/Stage ----------------暂存区
3. Repository -----------------本地仓库
4. Remote ---------------------远程仓库


  • git指令整理

  • 创建版本库

git init 
// 在一个空目录中打开Git Bash,然后输入git init既可以初始化一个版本库
git init [project-name]
// 可以使用git init加文件夹名称的形式,在当前目录下的project-name文件夹初始化git
git clone [url]
// 此命令是需要你先创建一个远程的仓库之后从远程仓库克隆一份到本地
  • 添加/删除文件

  • 1. 添加文件
git add [file1] [file2] ...
// 添加指定文件到暂存区
git add [dir]
// 添加指定目录到暂存区(包括子目录)
git add . 
// 添加当前目录下所有文件到暂存区
git add -p 
// 对同一文件的多次变化进行分次提交,每次提交都会要求确认
  • 2. 删除文件
git rm [file1] [file2] ...
// 删除工作区的文件并将其再次放入暂存区
git rm --cached [file]
// 停止追踪改文件,但是它会保留在工作区
git mv [file-original] [file-renamed]
// 第一个参数为原始名称,第二个为新名称;将文件名称更改后放入暂存区
  • 代码提交

git commit -m "msg"
// 将代码从暂存区提交到本地仓库,“msg”是提交的说明信息
git commit [file1] [file2] ... -m "msg"
// 将指定文件从暂存区提交到本地仓库
git commit -a 
// 提交工作区自上次commit之后的变化,直接到仓库区
git commit -v
// 提交时显示所有的diff信息
git commit --amend -m "msg"
// 使用一次新的commit替代上次的commit,若代码没有改变则用来改变提交信息
git commit --amend [file1] [file2]
// 重做上一次的commit,并指定文件的新变化 
  • 查看信息

  • 1. 历史信息
git status 
// 查看所有文件的变更信息
git log 
// 显示当前分支的历史版本,也可以添加--prettey=online来简化信息
git log --stat
// 显示commit历史,以及每次commit发生变更的文件
git log -S [keyword]
// 根据关键词搜索历史版本
git log -5 --prettey --oneline
// 显示过去5次提交
git reflog
// 显示当前分支最近几次的提交(命令)
git reflog --prettey=oneline
//  加上--prettey=oneline会使输出的信息更简洁
// 不管是git log 还是 git reflog都是用来获取历史版本的commit id的用来进行版本前进或后退;
// 注:git log 不能查看已经删除了的commit记录,此时就可以使用git reflog
  • 2. 文件差异
git diff 
// 显示暂存区和工作区的差异
git diff --cached [file]
// 显示暂存区和上一个commit的差异
git diff HEAD
// 显示工作区与当前分支最新commit之间的差异
  • 时光机

  • 1. 版本回退
git reset --hard HEAD^
// 回退到上一个版本,“HEAD^”可以加多个“^”表示回退多次,还可以写为“HEAD~n”,n即是回退的次数
git reset [commitid]
// 重置当前分支的指针为指定commitid,同时重置暂存区但工作区不变
git reset --hard [commitid]
// 重置当前分支的HEAD为指定commitid,同时重置工作区和暂存区,与指定commitid一致(回退到指定commitid的版本)
git reset --keep [commitid]
// 重置当前分支的HEAD为指定commitid,但保持工作区和暂存区不变
  • 2. 撤销操作
git reset [file]
// 重置暂存区的指定文件,与上一次的commit保持一致,但工作区保持不变
git reset --hard
// 暂存区与工作区与上一次commit保持一致
git checkout [file]
// 恢复暂存区的指定文件到工作区
git checkout [commit] [file]
// 恢复某个commitid的指定文件到暂存区和工作区
git checkout .
// 恢复暂存区的所有文件到工作区
git stash
git stash pop
// 暂时将未提交的变化移除,稍后再移入
  • 分支

  • 1. 分支信息
git branch
// 列出所有本地分支信息
git branch -r
// 列出所有远程分支信息
git branch -a
// 列出所有本地与远程分支
  • 2. 创建分支
git branch [branch-name]
// 新建一个分支但依然停留在当前分支
git checkout -b [branch-name]
// 新建一个分支并切换到该分支
git branch [branch] [commitid]
// 新建一个分支,指向指定的commitid
git branch --track [branch] [remote-branch]
// 新建一个分支并将该分支与一个远程分支相关联
  • 3. 切换分支
git checkout [branch]
// 切换到指定分支,并更新工作区
git checkout -
// 切换到上一个分支
  • 4. 合并分支
git merge [branch]
// 合并指定分支到当前分支
git cherry-pick [commitid]
// 选择一个commit,合并到当前分支
git merge origin/[remote-branch]
// 将远程的某个分支合并到本地的当前分支
  • 5. 删除分支
git branch -d [branch-name]
// 删除一个分支
git push origin --delete [branch-name]
git branch -dr [remote-branch]
// 删除一个远程分支
  • 6. 关联分支
git branch --set-upstream [branch] [remote-branch]
// 将当前的本地分支与远程分支建立关联
  • 标签

  • 1. 标签信息
git tag
// 列出所有的标签信息
tag show [tag]
// 展示指定版本号标签的信息,[tag]某个标签的名称
  • 2. 创建标签
git tag [tag]
// 在当前commit上创建一个tag
git tag [tag] [commitid]
// 在指定commit上创建一个tag
git tag -a [tag] -m "msg" [commitid]
// 创建一个带说明文字的标签,[tag]为tag的名称必写,"msg"是说明信息,[commitid]是指定的commit不写
// 则表示为当前commit打带说明文字的标签 
  • 3. 删除标签
git tag -d [tag]
// 删除本地仓库中某个版本的tag
git push origin :refs/tags/[tagName]
// 删除远程仓库中的tag,[tagName]:远程仓库中tag的名称
  • 4. 提交标签
git push [remote] [tag]
// [remote]远程仓库的名称(一般为origin),[tag]是本地某个标签的名称,此命令就是将本地的
// 某个标签推送到远程仓库
git push [remote] --tags
// 将本地仓库中的所有未推送的标签一并推送到远程仓库
// 注:[remote] 是远程仓库的名称,如果未进行修改并只有一个远程仓库则为origin,否则
// 按照你远程仓库的名称为准;如果出现推送不成功的情况可能是因为账号权限问题(自行百度|ू・ω・` ))
  • 创建带有标签的分支
git checkout -b [branch] [tag]
// 创建一个分支指向某个tag
  • 远程同步

  • 1. 远程仓库信息
git remote -v 
// 显示所有远程仓库的信息
git remote show [remote]
// 显示某个远程仓库的信息,[remote]是指定远程仓库的名称
  • 2. 下载远程仓库
git fetch [remote]
// 拉取远程仓库的所有变动(与远程仓库进行同步)
git pull [remote] [branch]
// 拉取远程仓库,并合并到指定的本地分支
  • 3. 推送本地仓库
git push [remote] [branch]
// 上传本地指定分支到远程仓库
git push [remote] --force
// 强行推送当前分支到远程仓库,即是有冲突
git push [remote] --all
// 推送所有分支到远程仓库
  • 4. 创建远程仓库
git remote add [shortname] [url]
// 增加一个新的远程仓库并命名
  • git配置

git config --list
// 查看git的配置项
git config --e [--global]
// 编辑git的配置文件
git config [--global] user.name "name"
git config [--global] user.email "237***@qq.com"
// 配置提交代码时的用户信息

git之所以强大是因为它有一个相对于集中式版本控制系统的优势,那就是远程仓库。
大名鼎鼎的国际同性交友网站——GitHub,以及国内的码云等这些都是远程仓库平台

  • 远程仓库

  • 准备工作

  • 1. 远程仓库的配置
    首先注册一个远程仓库的账号,例如:GitHub、码云等,然后创建ssh key
ssh-keygen -t rsa -c "your email@qq.com"
// 一路回车,使用默认值即可,如果一切顺利,则可以在用户主目录里面找到“.ssh”目录,里面有
// id_rsa和id_rsa.pub两个文件,这两个就是ssh key的密钥对,id_rsa是私钥,id_rsa.pub是公钥,
// 注:私钥不要泄露,公钥可以告诉别人

很多服务器都是需要认证的,ssh是认证的一种,在客户端生成公钥,把生成的公钥添加到服务器,
你以后链接服务器就不用了每次都输入用户名和密码了。(公钥可以添加多个)
查看公钥是否存在还可以这样:

打开Git Bash窗口,
cd ~/.ssh
// 切换目录
ls
// 列出所有文件
cat id_rsa.pub 或者 vim id_rsa.pub
// 读取文件
// 也可以直接简化为:
cat ~/.ssh/id_rsa.pub
// 以上用的是Linux命令,下面会做补充
  • 添加远程仓库

  • 1. 关联远程仓库
    现在GitHub或者码云上面创建一个远程仓库,然后让它与本地仓库关联
git remote add origin git@***.com:***/***.git
// origin 是远程仓库的默认名称,这是自定义的可以根据实际情景自己命名,git@***
// 这个是远程仓库的url,一般会有两种格式https和ssh;关联成功之后就可以愉快地推送代码了
// 首次推送git push -u origin master,这样就可以与远程仓库的master分支进行关联
// 后面在推送就不用加 -u 参数了,甚至可以简化为git push
  • 2. 克隆远程仓库
    远程克隆更加简单,在本地的一个空文件夹中打开Git Bash
git clone gti@***.git
// 这样就可以克隆一个远程仓库了
  • 3. 添加多个仓库
    如果你既想关联GitHub又想关联码云,有没有办法呢,答案是肯定的,还记得上面有说过
    再添加仓库的时候可以自定义名称吗?现在我们只需要将名称唯一就可以添加多个仓库了。
git remote add github git@***.com/***.git
git remote add gitee git@***.com/***.git
// 你没看错就是这么简单
  • 4. 解除关联
    有的时候可能你会有这样的需求,就是之前关联的仓库想要解除他们的关联,可以这样做:
git remote rm origin
// origin是远程仓库的名称,这样就可以解除指定的远程仓库的关联
  • 5. SSH警告
    当你第一次使用git的clone或者push命令链接GitHub时,可能出现一个警告
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

这是因为git使用ssh连接,而ssh连接在第一次验证GitHub服务器的key时,需要你确认GitHub的
key的指纹信息是否真的来自GitHub服务器,输入yes回车即可。
然后git会输出一个警告,告诉你已经把GitHub的key添加到本机的一个信任列表里面了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.

这个警告只会出现一次,后面的操作就不会有任何警告了


因为Git Bash窗口是一个模拟的小型linux系统,所以在使用的时候会点linux命令大有帮助

  • Linux常用命令

我想了想还是先链接一份过来吧,有时间在自己整理─=≡Σ(((つ•̀ω•́)つ
Git Bash常用Linux命令


这篇教程主要参考了廖雪峰、阮一峰两位大神的文章,如果文章有所纰漏或者错误之处欢迎给我大佬指正(〃'▽'〃)

相关文章

  • 学习笔记| git深入浅出 Part1_快速操作指南

    Git专题 学习笔记| git深入浅出 Part1_快速操作指南 学习笔记| git深入浅出 Part2_Git...

  • git 入门

    git 入门学习笔记----3个入门命令:git init、git add、git commit -v 学习场景(...

  • git记录

    Git Magic图解gitgit 学习笔记git游戏(学习)1、消除文档路径中文乱码git config --g...

  • Git学习笔记--常用命令整理

    超实用Git学习笔记 Git全局配置git config --global user.name "用户名"git ...

  • Git常用命令与学习总结

    安装Git Git的下载地址:Git官网下载地址 学习网址 git 学习笔记- Book 在线练习地址 基础常用指...

  • git学习笔记(二)—— git的简单操作

    这是本系列学习笔记的第二篇git 学习笔记(一)—— 初识 git 前言 本篇文章将简要的介绍 Git 的一般操作...

  • 关于crlf

    Git学习笔记:Git设置CRLF(行尾换行符) git config --global core.autocrl...

  • GIT

    Git学习笔记 Git 与 Github对接: cd到当前文档 git init初始化git git add -A...

  • Git学习笔记

    git学习笔记 声明 本文是本人学习Git过程中所做的笔记,以便日后查阅,文中多有错漏之处,不建议用作学习材料,文...

  • Git学习笔记

    git 学习笔记 注册个人信息 git config --global user.name(你的用户名) git ...

网友评论

      本文标题:git学习笔记

      本文链接:https://www.haomeiwen.com/subject/xnndjctx.html