Git学习笔记 —— 基本操作与概念

Github学习笔记 —— 基本操作与概念

​ 最近在使用在线环境进行学习,但是又不想学习过程中的代码直接丢掉,因此就尝试着使用Github将代码进行管理。学习笔记一方面为了防止学习过程中使用到的指令忘记,另一方面也为了加深印象。

  1. git --version

  2. git clone [仓库地址]
    eg:git clone https://github.com/Hualuoxi/Shiyanlou-001.git

    Git学习笔记 —— 基本操作与概念_第1张图片

  3. 在 GitHub 上创建一个仓库时,同时生成了仓库的默认主机名 origin,并创建了默认分支 master。GitHub 可以看成是免费的 Git 服务器,在 GitHub 上创建仓库,会自动生成一个仓库地址,主机就是指代这个仓库,主机名就等于这个仓库地址。克隆一个 GitHub 仓库(也叫远程仓库)到本地,本地仓库则会自动关联到这个远程仓库。执行 git remote -v 命令可以查看本地仓库所关联的远程仓库信息。

  4. git remote -v

在这里插入图片描述

  1. Git 要求对本地仓库关联的每个远程主机都必须指定一个主机名(默认为 origin),用于本地仓库识别自己关联的主机,git remote 命令就用于管理本地仓库所关联的主机,一个本地仓库可以关联任意多个主机(即远程仓库)。

  2. 克隆远程仓库到本地时,还可以使用 -o 选项修改主机名,在地址后面加上一个字段作为本地仓库的主目录名
    eg:git clone -o hualuo https://github.com/Hualuoxi/Shiyanlou-001.git Sillycat
    Git学习笔记 —— 基本操作与概念_第2张图片

  3. 所有的Git命令均以git开头

  4. Git 本地仓库有三大区域:工作区、暂存区、版本区。

    Git学习笔记 —— 基本操作与概念_第3张图片

  5. git status

    在这里插入图片描述

    新建文件后,命令行前缀出现*****号表示工作区或者暂存区有变化,对文件进行增删操作均会出现,使用git status 命令可以查看详情

Git学习笔记 —— 基本操作与概念_第4张图片

  1. git add [文件名]

    Git学习笔记 —— 基本操作与概念_第5张图片

    对多个文件同时进行增删修改使用git add .命令全部添加到暂存区。当修改了工作区,git add 命令是将这些修改添加到暂存区,暂存区记录的只是修改。

  2. git reset -- [文件名]

    git rm --cached [文件名]

    Git学习笔记 —— 基本操作与概念_第6张图片

Git学习笔记 —— 基本操作与概念_第7张图片

  若取消后面的文件名使用`git reset --`即可把**暂存区所有的修改撤销**,又回到工作区。
  1. git diff

    执行该命令后会进入工作区修改详细页面,按Q退出

    Git学习笔记 —— 基本操作与概念_第8张图片

    Git学习笔记 —— 基本操作与概念_第9张图片

  2. 只有在版本区中存在的文件才是被跟踪文件。

  3. git diff --cached

    Git学习笔记 —— 基本操作与概念_第10张图片

    Git学习笔记 —— 基本操作与概念_第11张图片

  4. git commit

    一个必须的选型-m用来提供该提交的备注

    Git学习笔记 —— 基本操作与概念_第12张图片

    提交后暂存区的修改被清空

  5. git log

    输入后跳入新界面,Q键退出

    Git学习笔记 —— 基本操作与概念_第13张图片

    • git log [分支名]
    • git log --oneline
    • git log -n
    • git log --author [贡献者名字]
    • git log --graph
    • git log --reverse
  6. 对Git进行本地配置,将修改提交到版本区需要验证身份

    git config --global user.email "[email protected]"

    git config --global user.name "xxxxx"

    git config -l
    Git学习笔记 —— 基本操作与概念_第14张图片

  7. git branch -avv

    在这里插入图片描述

    第一行,开头的星号表示当前所在分支,绿色的 master 是分支名,之所以是绿色,也是因为它是当前所在分支。后面第二项是版本号,第三项中括号里面蓝色的字,表示此分支跟踪的远程分支的名字,当然啦,这也是克隆远程仓库到本地时的默认设置 – 创建 master 分支并自动跟踪远程同名分支;冒号后面黑色文字表示本地分支领先其跟踪的远程分支一个提交。最后一项是提交时填写的备注信息。

    第二行,是 Git 指针信息,它指向远程仓库的 master 分支。

    第三行,远程分支信息。

  8. git push

    需要联网,因为操作对远程仓库进行了修改

  9. git reset --soft HEAD^

    --soft 表示软退回,对应的还有 --hard 硬退回,HEAD^ 表示撤销一次提交,HEAD^^ 表示撤销两次提交,撤销 n 次可以简写为 HEAD~n

    软退回一个提交后执行 git branch -avv 命令查看分支信息

    Git学习笔记 —— 基本操作与概念_第15张图片

    执行 git status 查看仓库状态,上一个提交中的修改全部扔回了暂存区

    Git学习笔记 —— 基本操作与概念_第16张图片
    撤回后再修改的版本会出现时间线分叉,执行 git statusgit branch -avv查看仓库状态和分支状态

    Git学习笔记 —— 基本操作与概念_第17张图片

    本地仓库的 master 分支与远程仓库的 origin/master 分支在提交版本上有了冲突,又叫做提交时间线分叉。因为刚才的提交操作不是基于远程仓库 origin/master 分支的最新提交版本,而是撤回了一个版本。这种情况下也是可以将本地 master 分支推送到远程仓库的,需要加一个选项 -f ,它是 --force 的简写,这就是强制推送

    Git学习笔记 —— 基本操作与概念_第18张图片

  10. git reflog

    在这里插入图片描述

    退回之前的版本,可以直接执行命令 git reset --hard [版本号] ,如果记不清版本号,也可以根据上图的信息,执行 git reset --hard HEAD@{x} 命令,其中 HEAD@{x}就是上图所示,这个命令的意思是回到当前分支最近x次提交版本变化前

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190805174850406.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)
  1. 为避免每次提交文件都需要手动输入用户名和密码,可以在系统中创建SSH公私匙,并将其放到Github中。如此操作即可生成Github账户对于当前系统中的Git授权。

    执行以下命令生成公私匙

    ssh-keygen

    公私匙存放在home目录下的隐藏目录.ssh的两个文件中

    在这里插入图片描述

    ~/.ssh/id_rsa.pub文件中的公钥内容复制出来。

    在这里插入图片描述

Git学习笔记 —— 基本操作与概念_第19张图片

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2019080517494551.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)

 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190805174955745.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190805175008574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)

 **只有使用这种git开头的地址克隆仓库,SSH关联才会起作用**

 使用 SSH 的好处主要有两点:

 - 免密码推送,执行 `git push` 时不再需要输入用户名和密码了;
 - 提高数据传输速度。
  1. git config --global alias.[别名] [原命令]

    如果原名中存在选项,则需要加引号

    Git学习笔记 —— 基本操作与概念_第20张图片

  2. git config -l

  3. git fetch

    若发现有更新,可以执行 git pull 命令来拉取远程分支到本地,pull 是拉取远程仓库的数据到本地,需要联网,而由于前面执行过 git fetch 命令,所以也可以执行 git rebase origin/master 命令来实现 “使本地 master 分支基于远程仓库的 master 分支”。

  4. git branch [分支名]

    在这里插入图片描述

  5. git checkout [分支名]

    Git学习笔记 —— 基本操作与概念_第21张图片

  6. git checkout -b [分支名]

  7. 在哪个分支上创建新分支,新分支的提交记录就与哪个分支一致。新建分支并无跟踪任何远程分支,所以没有 master 分支中的中括号和括号内的蓝色远程分支名。

  8. git push [主机名] [本地分支名]:[远程分支名]

    通常冒号前后的分支名是相同的,如果是相同的,可以省略 :[远程分支名],如果远程分支不存在,会自动创建。

    Git学习笔记 —— 基本操作与概念_第22张图片

    Git学习笔记 —— 基本操作与概念_第23张图片

  9. git branch -u [主机名/远程分支名] [本地分支名]

    关联后的分支只需要使用git push即可直接进行推送。如果是设置当前所在分支跟踪远程分支,最后一个参数本地分支名可以省略不写。

    Git学习笔记 —— 基本操作与概念_第24张图片

    这个命令的 -u 选项是 --set-upstream 的缩写。事实上可以让本地分支跟踪远程非同名分支,尽管几乎遇不到这种自找麻烦的需求。同样的,执行 git branch --unset-upstream [分支名] 可以撤销该分支对远程分支的跟踪,如果撤销当前所在的分支的跟踪,分支名可以省略不写。

    在推送的时候,加个 --set-upstream 或其简写 -u 选项可以在推送时就自动跟踪远程分支。而不需要先推送到远程仓库,使远程仓库创建新的分支,然后再执行命令使本地分支跟踪远程分支。

    Git学习笔记 —— 基本操作与概念_第25张图片

  10. git push [主机名] :[远程分支名]

    git push [主机名] :[远程分支名] :[远程分支名] :[远程分支名]

    此命令的原理是将空分支推送到远程分支。

    git push [主机名] --delete [远程分支名]

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190805175152183.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20190805175246250.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxNDEzODg2MTgz,size_16,color_FFFFFF,t_70)
  1. git branch -D [分支名]

    同样地,此命令也可以一次删除多个,将需要删除的分支名罗列在命令后面即可。需要注意的一点:当前所在的分支不能被删除

  2. git branch -m [原分支名] [新分支名]

    若修改当前所在分支的名字,原分支名可以省略不写。

你可能感兴趣的:(其他,Github,学习笔记,基本操作)