【知识小结】Git 个人学习笔记及心得

【知识小结】Git 个人学习笔记及心得

https://mp.weixin.qq.com/s/D96dXYfu3XAA4ac456qo0g

git架构

【知识小结】Git 个人学习笔记及心得

  • 工作区:就是你在电脑里能看到的目录。

  • 版本库:工作区有一个隐藏目录.git,,而是Git的版本库。

  • 暂存区:英文叫stage, 或index。一般存.git/index中,所以我们把暂存区有时也叫作索引(index)。

  • HEAD:指向 master 分支的一个”游标”

  • objects:位于 “.git/objects” 目录下,里面包含了创建的各种对象及内容。

  • git add:暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

  • git commit:当执行提交操作时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。

  • git reset HEAD:取消已缓存的内容,但是工作区不受影响。

  • git rm –cached <file>:会直接从暂存区删除文件,工作区则不做出改变。

  • git checkout .” 或者 “git checkout — <file>”:会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。

  • git checkout HEAD .” 或者 “git checkout HEAD <file>” :会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

git config

·        /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 –system 选项,读写的就是这个文件。

·        ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 –global 选项,读写的就是这个文件。

·        当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。

$ git config --global user.name "runoob"  
$ git config --global user.email test@runoob.com  
$ git config --list  
$ git config user.name  

git clone

git clone http://github.com/CosmosHua/locate new  
git clone http://github.com/CosmosHua/locate.git new  
git clone git://github.com/CosmosHua/locate new  
git clone git://github.com/CosmosHua/locate.git new  

git status -s

#-s 参数,以获得简短的结果输出  
"AM" 状态的意思是,这个文件在我们将它添加到缓存(git add)之后又有改动  
“??”未add  
“A”已经add  

git diff

查看比 git status 的结果的详细信息。

git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景。

  • 尚未缓存的改动:git diff

  • 查看已缓存的改动: git diff –cached

  • 查看已缓存的与未缓存的所有改动:git diff HEAD

  • 显示摘要而非整个 diff:git diff –stat

git reset HEAD 

取消已缓存的内容。

  1. $ git reset HEAD — hello.php 取消其中一个缓存的文件  

git rm

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

git rm -f <file>

如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中。

git rm --cached <file>

git如何撤销上一次commit操作

git reset --soft|--mixed|--hard <commit_id>  
git push develop develop --force  (本地分支和远程分支都是 develop)  
<span style="color:#ff0000;">这里的<commit_id>就是每次commit的</span><strong><span style="color:#ff0000;">SHA-1</span></strong>,可以在log里查看到  
--mixed    会保留源码,只是将git commit和index 信息回退到了某个版本.  
--soft   保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.  
--hard    源码也会回退到某个版本,commit和index 都会回退到某个版本.(注意,这种方式是改变本地代码仓库源码)  

git branch

创建分支命令:  
git branch (branchname)  
切换分支命令:  
git checkout (branchname)  
当你切换分支的时候,Git 会用该分支的最后提交的快照替换你的工作目录的内容。  
git checkout -b (branchname) 命令来创建新分支并立即切换到该分支下  
git merge secondBranch #merge secondBrach to master,可以不用切回master branch  
你可以多次合并到统一分支, 也可以选择在合并之后直接删除被并入的分支。  
删除分支命令:  
git branch -d (branchname)  

 

Git log

查看历史提交记录  
Git log  
查看简洁版  
Git log –-oneline  

git tag

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

-a 选项意为”创建一个带注解的标签”。不用 -a 选项不会记录这标签是啥时候打的,谁打的,也不会让你添加个标签的注解。

$ git tag -a v1.0 –m “first tag”  
如果我们忘了给某个提交打标签,又将它发布了,我们可以给它追加标签  
$ git tag -a v0.9 85fc7e7  
$ git log --oneline 可以看到  

git remote 

添加远程库

要添加一个新的远程仓库,可以指定一个简单的名字,以便将来引用,命令格式如下:

git remote add [shortname] [url]  
git remote add remoteServer https://github.com/Courage-Freadom/hello-world/  
git push -u remoteServer master  

 

查看远程仓库  
$ git remote -v  
从远程仓库下载新分支,该命令执行完后需要执行git merge  
git fetch  
从远端仓库提取数据并尝试合并到当前分支:  
git merge  

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113181.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 批处理for详解_python批处理

    批处理for详解_python批处理大纲一前言二for语句的基本用法三for/f(delims、tokens、skip、eol、userbackq、变量延迟)四for/r(递归遍历)五for/d(遍历目录)六for/l(计数循环) 一、前言在批处理中,for是最为强大的命令语句,它的出现,使得解析文本内容、遍历文件路径、数值递增/递减等操作成为可能;配合if、call、goto…

    2022年10月12日
    0
  • php curl_init函数用法

    php curl_init函数用法使用PHP的cURL库可以简单和有效地去抓网页。你只需要运行一个脚本,然后分析一下你所抓取的网页,然后就可以以程序的方式得到你想要的数据了。无论是你想从从一个链接上取部分数据,或是取一个XML文件并把其导入数据库,那怕就是简单的获取网页内容,cURL是一个功能强大的PHP库。PHP中的CURL函数库(ClientURLLibraryFunction)curl_close—关

    2022年7月12日
    12
  • 易语言跳出循环 c,易语言教程循环控制(到循环尾和跳出循环)[通俗易懂]

    易语言跳出循环 c,易语言教程循环控制(到循环尾和跳出循环)[通俗易懂]到循环尾()和跳出循环()是易语言对循环的两种控制方式,教程分别了举例师范讲解。一、官方源码到循环尾调用格式:〈无返回值〉到循环尾()-系统核心支持库->流程控制英文名称:continue本命令转移当前程序执行位置到当前所处循环体的循环尾语句处。本命令为初级命令。操作系统需求:Windows、Linux、Unix跳出循环调用格式:〈无返回值〉跳出循环()-系统核心支持库…

    2022年7月13日
    12
  • C++ list容器的splice方法

    C++ list容器的splice方法list容器底层实现是一个带头结点的双向链表,由于链表的每个节点是单独开辟的,所以链表在移动数据,或者两个链表之间移动数据的时候,直接把节点摘下来,接入到新的位置就可以了,效率比较高。splice方法就是将list的元素进行拼接,原理就是改变结点指针的指向,效率比较高。先看看这splice方法的三种声明:(1)voidsplice(iteratorposition,list&lt…

    2022年9月24日
    0
  • navicat 15 激活码 mac【中文破解版】[通俗易懂]

    (navicat 15 激活码 mac)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsaWN…

    2022年3月27日
    116
  • html5空格代码怎么写_html怎么添加空格

    html5空格代码怎么写_html怎么添加空格本篇文章为大家介绍的是HTML的空格代码的写法,“&nbsp;”代码的用法,还有几种空格方式的解释,都在文章中,现在开始往下看吧。首先,我们知道这HTML网页中插入多个空格间隔是需要特殊字符编码的。如果是直接敲入多个空格键的话,虽然看似代码中有了多个空格效果,但其实在浏览器中还是只有1个空格间隔位置的。接下来教大家如果输入html空格字符的话,多个空格字符是如何输入的?我们采用直接复制空格字符与DW软件输入空格字符的两种方法介绍:web前端全栈资料粉丝福利(面试题、视频、资料笔记、进阶路

    2022年4月19日
    362

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号