• git学习笔记(一)


    git学习笔记(一)

    一、git初始化

    1)告诉git当前用户的姓名和邮件地址,配置的用户名和邮件地址将在版本库提交时用到。

    git config --global user.name "name"
    git config --global user.email "email"

    删除设置:

    git config --unset --global user.name

    2)设置git命令别名

    sudo git config --system alias.cm commit
    sudo git config --system alias.ck checkout

    3)开启颜色显示

    git config --global color.ui true

    4)初始化版本库

    git init

    产生.git/,当git在工作区的某个子目录下执行操作时,会在目录中向上递归查找.git/,找到的.git/目录就是工作区对应的版本库

    .git目录就是工作区的根目录。

    5)将新建的文件添加到版本库

    git add h.txt

    6)提交文件

    git commit -m 'root commit'

    7)搜索文件内容

    git grep 'content'

     8)git的三种配置文件

    版本库级别:.git/目录下,使用git config命令

    全局配置文件:用户主目录下,使用 git config --global

    系统级别配置文件:/etc目录下,使用git config --system

    配置文件为ini文件

    读取配置文件内容:

    git config <section>.<key>

    如读取core小节的bare值

    git config core.bare

    更改值:

    git config <section>.<key> <value>

    9)备份

    git clone demo demo-backup

    二、git暂存区

     

     

    注意:git diff系列命令如果单纯创建文件,则没有输出

    git diff:工作区和暂存区比较

    git diff HEAD:工作区和HEAD比较

    git diff --cached:工作区和暂存区比较

    git add操作:暂存区的目录树被更新,同时工作区中被修改的文件内容被写入到对象库中的一个新对象中,

    而该对象的ID被记录在暂存区的文件索引中。

    git commit操作:暂存区中的目录树会被写入到版本库中,master分支会做相应的更新。

    git reset HEAD操作:暂存区的目录树会被HEAD指向的目录树所替换。

    git rm --cached <file>操作:从暂存区删除文件

    git checkout -- <file>操作:用暂存区文件替换工作区文件。

    git checkout HEAD . 或 git checkout HEAD <file>:用HEAD中的文件替换暂存区和工作区中的文件。

    git stash:取消工作区和暂存区的改动。

    三、git对象

    显示对象ID类型:

    git log --pretty=raw --graph
    git cat-file -t id
    git cat-file -p d957f52daf4fd45
    100644 blob 0115e90bff91d29ddc2711c1cb0e59ba916fac44    h.txt

    对象类型有:commit, tree,blod.

    其中blod对象保存这文件内容,id的前两位为目录名,后38位为文件名。

     

    符号^可用于指代父提交

    HEAD^表示HEAD的父提交

    HEAD^^表示HEAD^的父提交

    对于一个提交有多个父提交,可在^后面用数字表示第几个提交,如:

    HEAD^^2表示HEAD^的父提交中的第二个提交

    提交所对应的树对象:

    a3f2342^{tree}

    四、git重置

    将master重置到父提交

    git reset --hard HEAD^

    重置到相应id提交

    git reset --hard id

    注意:使用重置命令很危险,会彻底地丢弃历史。

    但可以通过reflog命令找回

    git reflog show tang | head -5
    git reset --hard tang@{1}

    git reset命令用法:

     用法一:git reset [q] [<commit>] [--] <paths>...

    其中<commit>是可选项,可以使用引用或者ID,如果省略<commit>则使用HEAD指向作为提交的ID。

    该用法不会重置引用更不会改变工作区,而是用指定提交状态(<commit>)下的文件(<paths>)替换掉暂存区的文件。

    例如,命令 git reset HEAD <paths>相当与取消之前执行的 git add <pahts>命令时改变的暂存区。

     用法二:git reset [--soft | --mixed | --hard | --merge | --keep] [-q] [<commit>]

     该方法会重置引用,根据不同的选项可以对暂存区或者工作区进行重置。

    1)参数--hard:如 git reset --hard <commit>

    该操作会使用<commit>

    1.替换引用的指向

    2.替换暂存区

    3.替换工作区

     2)参数:--soft:如 git reset --soft <commit>

    只会替换引用指向

    3)参数:--mixed(或者不使用参数):如 git reset <commit>

    更改引用指向和暂存区,不改变工作区

    4)命令:git reset -- filename

    仅将文件filename的改动撤出暂存区

    五、git检出

    查看当前分支:git branch -v

    关于分离头指针状态,略

    git checkout 命令:

     git checkout 命令用于重写工作区,所以请谨慎使用。

    用法一:git checkout  [-q] [<commit>] [--] <paths> 

    <commit>是可选项,从<commit>检出覆盖工作区和暂存区的文件,省略则从暂存区检出,该用法不会改变HEAD头指针,

    <paths>主要用于版本的文件覆盖工作区的文件,省略则用暂存区文件覆盖工作区的文件。

     用法二:git checkout [<branch>]

    该用法会改变HEAD头指针,该用法的主要作用是切换到分支。

    用法三:git checkout [-m] [[-b | --orphan] new_branch] [<start_point>]

    用于创建并切换到新分支,新分支从指定的提交[<start_point>]开始创建。

    用法四:git checkout 或者 git checkout HEAD

    显示工作区、暂存区与HEAD的差异。

    六、恢复进度

    1.git stash save 'comment':保存当前工作区和暂存区工作进度,此时工作区和暂存区退回到上次commit状态。

    2.git stash list:查看当前工作进度表。

    3.git stash pop [--index] [<stash>]:

    如果不使用参数,则从最近一次保存恢复。并将恢复的工作进度从工作进度表中清除。

    如果提供<stash>参数(该参数从git stash list中获得),则恢复该进度并删除。

    4.git stash apply [--index] [<stash>]:除了不从工作进度表中删除恢复的进度外,其余与上条命令一样。

    5.git stash drop <stash>:删除一个工作进度

    6.git stash clear:删除所有工作进度

    注意:本地没有被版本控制系统跟踪的文件不能保存进度,即保存进度前要先执行add操作。

    Simple is important!
  • 相关阅读:
    shell脚本
    vim使用快捷键
    logback.xml_appender配置
    vim配置文件
    sed
    使用linux服务器安装wordpress博客详细教程
    JDBC为什么要使用PreparedStatement而不是Statement
    Jsp技术介绍
    jsp的appilication.getInitParameter()方法无法获取到值的问题
    ubuntu 插网线无法上网解决方案
  • 原文地址:https://www.cnblogs.com/Shadowplay/p/9608232.html
Copyright © 2020-2023  润新知