• Git之本地仓库(一)


    Git之本地仓库(一)

    初始化Git仓库

    切换到需要创建仓库的项目中使用初始化仓库命令

    git init
    

    会在项目目录中创建一个名为.git的子目录,目录结构如下

    本地仓库的三个主要部分

    • working tree
    • staging area
    • Git directory(Repository)

    Git流程:

    • 修改working tree中的文件
    • 使用git add * 有选择地暂存作为下一次commit的更改
    • 执行commit将暂存区中的文件以快照的形式存储到Git directory里

    文件状态的生命周期

    git文件有四种状态:

    • Untracked
    • Modified
    • Staged
    • Unmodified

    1.Untacked状态

    添加到working tree中的新文件,没有被git进行跟踪管理,处于untracked状态

    2.Modified状态

    2.1对处于Unmodified状态的文件进行修改(及已经commit到repository中),该文件状态变为Modified

    2.2对位于staging area中的文件进行修改,该文件状态也会变成modified

    3.Staged状态

    Untracked状态的文件被git add 放入staging area后,位于暂存区的文件处于staged状态

    4.Unmodified状态

    使用commit命令提交到repository中的文件状态处于Unmodified状态

    文件操作

    移除操作

    将staging area中的文件移除
    git restore --staged fileName 
    

    git rm --cached fileName   
    

    git rm --cached和git restore --staged都可以将staging area中的文件移除,移除后的文件状态都为Untracked,暂未发现两者之间的区别(待后续发现区别后更新,或者本来就没区别)

    修改操作

    修改Unmodified状态的文件名

    git mv oldFile newFile
    

    删除操作

    1.从working tree中撤销rm操作

    如果不小心使用rm删除working tree中 的文件

    可以使用 git restore file来在working tree中撤销该操作

    2.从staging area中撤销操作到working area,然后重复上一步

    rm操作了working directory中的文件,并git add到暂存区中,可以先使用git restore --staged 撤销暂存区中的改变,然后再撤销working tree中的操作

    使用git rm file会直接将删除操作的改变提交到暂存区,可以通过上述步骤撤销

    3.从staging area中删除,但是保留在working tree中
    git rm --cached 4.txt
    

    其他操作

    查看commit记录

    • git log 查看现有的commit历史记录

    • git log -n 显示最后n个条目

    • git log -a 显示每次commit中引入的差异

    • git log --pretty=oneline 比较适合查看大量提交

    • git log --pretty=format:"%h %s" --graph 显示分支和合并记录

    • git diff 查看已经处于modified状态的文件

    • git commit -a -m "提交信息"

    添加-a选项会提交自动暂存modified状态的文件,从而可以跳过git add状态

    rm *

    rm操作后也要git add然后commit或者使用git commit -a -m

    碰到的问题

    git add * 时出现的warning

    warning: LF will be replaced by CRLF in README.
    The file will have its original line endings in your working directory
    

    解决办法

    git config --global core.autocrlf false
    

    分析原因

    路径中存在/的符号转义问题,false表示不转换符号


    未完待续

  • 相关阅读:
    基础技术
    Luogu1438 无聊的数列(线段树)
    树状数组从入门到入土
    左偏树
    PA2014-Final Zarowki(堆)
    BZOJ1455罗马游戏
    【小米oj】 海盗分赃
    【小米oj】 最少交换次数
    【小米oj】 大胃王的烦恼
    【小米oj】 不一样的排序
  • 原文地址:https://www.cnblogs.com/Annoming/p/13624545.html
Copyright © 2020-2023  润新知