Git 基础

Posted basilguo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Git 基础相关的知识,希望对你有一定的参考价值。

配置

    配置信息

  $ git config --global user.name "Your name"

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

  上述代码仅用运行一次

  若有项目需要单独指定,则去掉  --global 配置即可

    查看配置信息

  查看所有:$ git config --list

  查看单个:$ git config <perperty_name>

    更改文本编辑器

  默认Git 使用的是Vim,可以更换:

    $ git config --global core.editors <editor_name>

准备工作

    当前目录初始化新仓库

  $ git init

  初始化后,当前目录出现一个.git目录,存放git 需要的数据和资源

  $ git init <file-path>

  指定在哪一个目录中初始化

    获取帮助

  windows 平台测试会给你下载一个html文档,可能和我设置有关系

  $ git help <verb>

  $ git <verb> --help

  $ man git-<verb>

    工作流

  你的本地仓库由 git 维护的三棵“树”组成。

  第一个是你的 工作目录,它持有实际文件;

  第二个是 暂存区(Index 或叫 Stage),它像个缓存区域,临时保存你的改动;

  最后是 HEAD,它指向你最后一次提交的结果。

基础操作

    添加和提交

  查看差异:$ git diff <file_name> 在 git add 之前才有效

  添加:$ git add <file-name> 或 $ git add * 会先暂存到暂存区

  提交:$ git commit -m "代码提交信息" 会提交到HEAD,但是还没有到达远端仓库

  查看 commit 历史:$ git log [--pretty=oneline]

  查看命令历史:$ git reflog

    回滚

  回退到之前版本:$ git reset --hard HEAD~<number> number可以填写要回退到前第几个版本,

    另外一种方法:$ git reset --hard HEAD^^^^ 退几个版本就写几个^这里不知道为啥不可用,可能是CMD问题

  从之前版本再返回来:$ git reset --hard <commit_id>

    如果不知道 commit_id 可以通过查看命令历史:$ git reflog 获取

    所以 git commit 时,写好注释很重要

  删除修改:

    add 之前:$ git checkout -- <file>

    add 之后:$ git reset HEAD <file>

    删除文件

  先从本地删除:$ rm <file_name>  

  从版本库删除:$ git rm <file>

远程仓库

    准备工作

  创建SSH Key:$ ssh-keygen -t rsa -C "[email protected]" 

    在c:/users/basil/.ssh 目录,其中有id_rsa 和:id_rsa.pub,分别是私钥和公钥

  关联远程库:$ git remote add origin [email protected]:path/repository-name.git

  第一次推送master分支:$ git push -u origin master 

  之后推送:$ git push orgin master 

    克隆

   $ git clone <url>

  举例:$ git clone git://github.com/schacon/grit.git

  $ git clone <url> <repo>

 查看远程库

  $ git remote [-v]

分支

    用途

  将特性开发绝缘开来。创建时默认是master 分支。

        在其它分支上开发,然后再把它们合并到master 分支。

 创建

    $ git checkout -b <branch_name>

    相当于两个命令:$ git branch <branch_name>                

            $ git checkout <branch_name>

 查看

    $ git branch 

 切换

    $ git checkout <branch_name>

 删除

    $ git branch -d <branch_name>

    $ git branch -D <branch_name>  强制删除

 合并

    $ git merge <branch_name>  在master分支上操作

 

 推送分支到远端

    $ git push origin <branch_name>  不推送则远端不可见

 拉取远端分支

    $ git pull <remote> <branch>

    $ git branch --set-upstream branch-name origin/branch-name 

    Bug 分支

    场景描述:

      应用出了bug,但是现在工作在dev分支,且未作完,

      需要先保存当前的dev分支,$ git stash <branch_name>

      然后切换master分支,

      从master分支创建issue分支,在issue分支修复bug,

      然后通master合并,

      再返回dev分支工作。

        查看保存的dev分支

          $ git stash list

        恢复现场的两种方法

          $ git stash apply  恢复后,不删除stash,删除需要 $ git stash drop

          $ git stash pop  恢复后,删除stash

        保存多个stash的恢复方法

          $ git stash list  查看stash

          $ git stash [email protected]{0}

  变基:就是把提交历史分叉的重新整合到一条线。

    $ git rebase

  打标签以便于查找

    $ git tag  查看所有标签

    $ git tag <name> [commit_id]  打一个新标签[给commit_id]

    查看标签内容:$ git show <tagname>

    创建带有说明的标签:$ git tag -a <tagname> -m "something" <commit_id> 

    删除标签:$ git tag -d <tagname> 

    推送标签到远程:$ git push origin <tagname>  只推送单个标签

            $ git push origin --tags  推送所有的标签 

参考资料

  git 简明指南

   Git-Book

  Git 教程

上一篇

  Git学习第一天--安装Git和创建版本库

以上是关于Git 基础的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段15——git命令操作一个完整流程

如何管理在每个 git 版本中添加私有代码片段?

使用 Git 来管理 Xcode 中的代码片段

markdown Git代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段

GitGit 分支管理 ( 克隆远程分支 | 克隆 master 分支 git clone | 查看远程分支 git branch -a | 克隆远程分支 git checkout -b )(代码片段