美文网首页
git基本操作

git基本操作

作者: 若兮缘 | 来源:发表于2018-12-12 22:27 被阅读95次
    创建仓库(版本库)

    git init #在当前目录初始化一个git仓库(repository)
    版本库=仓库,在此仓库中的所有内容都会被Git管理,仓库中的所有文件修改、删除、更新都会被纪录下来,在进行任何Git操作之前,都要先切换到Git仓库目录,也就是先要切换到项目的根目录下。

    示例:新建文件夹demo,进入文件夹,执行git init,会提示初始化一个空的git仓库

    查看仓库状态

    git status #检查仓库状态
    该命令建议经常使用,它会对当前状态给出很好的命令提示
    该命令显示内容包括:
    On branch - 当前所在分支
    Untracked files - 显示新增加还未跟踪(没有在暂存区中)的文件
    Changes not staged for commit - 已修改还未暂存的文件
    Changes to be commited - 已修改等待被提交的文件
    并对当前状态给出相应的命令提示

    示例:新建文件readme.txt并添加内容,查看当前git仓库的状态,显示内容如下,on branch master,默认就直接在master分支,readme.txt文件还没有被跟踪,并且提示你可以使用git add去跟踪文件

    添加文件到仓库

    git add file1 file2... #将要提交的文件的信息添加到索引库中(将修改添加到暂存区),作为下一次提交的内容
    git add . #将文件夹下的所有(需要跟踪的)文件添加到暂存区
    注意:对于以暂存文件如果还有修改,需要再次执行git add操作

    示例:将readme.txt添加到暂存区,再次查看git status,显示说有新的文件等待被提交

    提交文件到仓库

    git commit -m "msg" #提交暂存区文件到仓库,-m 代表添加提交的说明信息
    git commit -a -m "msg" #添加文件到暂存区并提交,即“git add .” + “git commit”
    注意:只有添加到暂存区的文件才能被提交,即必须先执行git add后执行git commit

    示例:做第一次提交操作,提交后显示工作空间是干净的

    查看提交日志

    git log #显示当前分支的版本历史,包括提交的id(hash值)、作者、日期和提交附带的说明信息,按 q 键退出
    常用选项:
    --all #显示所有分支的版本历史
    -p #会在输出中加入diff内容,显示每次提交的内容差异
    -n #显示最近n次的版本记录
    --stat #仅显示简要的增改行数统计
    --pretty使用其他格式显示历史提交信息,值有oneline、short、full 和fuller
    git log --pretty=oneline #每个commit记录只显示一行信息(不显示作者和日期)
    git log --pretty=oneline --abbrev-commit #显示一行且只显示缩减的commitId
    该命令等价于:git log --oneline

    对比文件

    git diff [file] #修改前后文件对照,+ 号代表增加的内容,- 号代表删除的内容
    不加参数代表查看所有文件的差异比较

    示例:上面完成了项目的初始化,然后我们根据产品经理要求开发第一个需求,修改文件readme.txt,新增内容“需求一开发完成”。

    查看git status,显示changes not staged for commit(文件的修改没有保存到暂存区中),并且提示可以通过git add进行暂存,通过git checkout恢复文件

    对比文件细节

    git diff --staged (或者--cached) #比较已暂存文件和上次提交的快照文件差异
    对于与修改文件如果添加到暂存区后,使用git diff就无法查看差异了,需要使用 --staged 选项

    恢复文件
    1. 对于未暂存的文件可以直接撤销对文件所作出的修改操作
      git checkout -- file #将文件还原到版本库最新状态
    2. 对于已暂存(git add)未提交(git commit)的文件执行撤销操作
      git reset HEAD file #撤销暂存区的修改操作,此时文件从以暂存状态恢复为以修改状态
      git checkout -- file #撤销文件的修改

    示例:此时产品经理告诉我们需求一不需要开发了,我们需要对文件进行恢复。

    如果这时候我们已经git add到了暂存区,恢复过程如下

    版本切换

    git reset --hard HEAD~n #从当前版本回退n个版本,如HEAD~1回退到上一个版本,--hard代表强制执行
    git reset --hard head #撤销本地和暂存区的所有变动,回退到head版本
    git reset --hard commitId #还原到指定的版本,commitId代表commit记录的hash值
    git reflog #显示整个本地仓储的commit记录
    说明:一旦进行版本回退,那么当前版本(包括)到回退版本之间的commit记录都将不出现在 git log 信息中,可以使用git reflog查看

    示例:此时我们又接收到了两个新的需求,然后分别做两次提交,此时一共有3次提交记录。

    然后产品经理说第二个需求不需要了,需要回退到需求一完成的版本。

    成功回退后,产品经理表示需求二暂时还是需要的,于是我们不得不切换回需求二的版本,此时通过git log无法查看到需求二版本的记录,需要通过git reflog获取缩减的hash值,然后进行切换。

    删除文件

    对于不在使用的文件可以执行删除操作,删除对于git而言实际属于一个修改操作。
    git rm file1 file2... #删除文件,同时还会将这个删除操作记录下来
    git rm -r dir #删除目录
    git rm与rm -rf删除文件的区别
    使用git rm 删除文件后直接可以commit,而rm只是物理删除,并没有被git记录,需要先git add再commit

    示例:产品经理告诉我们项目需要重新做,于是我们需要将仓库进行清空。

    删除文件细节

    git rm --cached [file] #停止追踪指定文件,但该文件会保留在工作区
    git rm -f [file] #强制删除文件(已暂存的文件)
    git rm [glob模式] #删除模式匹配的文件
    1.对于工作区新建(即版本库没有)的文件可以直接手动删除或者使用rm命令删除
    2.对于版本库已有的文件进行删除可以使用git rm进行删除,然后执行commit操作
    3.对于已暂存的文件如果需要删除则必须使用 -f 选项进行强制删除
    4.当我们需要删除暂存区或分支上的文件, 但本地又需要使用,使用--cached选项
    5.删除后还原文件同修改文件的还原操作一致,对于git rm需要先git resetgit checkout
    示例:在当前版本库中有css文件夹及css文件,先删除css文件夹下所有.css文件,然后再执行恢复操作,这里css/\*.css里的反斜杠代表递归匹配。

    查看帮助

    git help #打印git命令的概要和最常用的git命令的列表
    选项:
    -a: 打印所有的可用命令
    -g: 打印有用的git指南
    git help [command] #查看命令的帮助

    git基本操作总结
    # 在当前目录初始化一个git仓库
    git init
    # 新建一个目录,并将其初始化为git仓库
    git init [project-name]
    # 查看当前仓库状态
    git status
    # 添加指定文件到暂存区
    git add file1 file2...
    # 添加当前目录的所有文件到暂存区
    git add .
    # 提交暂存区文件到仓库
    git commit -m "msg"
    # 添加文件到暂存区并提交到仓库
    git commit -a -m "msg"
    # 显示当前分支的版本历史
    git log
    # 显示当前分支的简要提交信息
    git log --pretty=oneline
    # 显示一行且只显示缩减的commit记录的hash值
    git log --pretty=oneline --abbrev-commit
    # 修改前后文件对照
    git diff file
    # 将文件还原到版本库最新状态
    git checkout -- file
    # 将暂存区文件恢复到工作区
    git reset HEAD file
    # 从当前版本回退n个版本
    git reset --hard HEAD~n
    # 还原到指定的版本
    git reset --hard commitId
    # 显示整个本地仓储的commit记录
    git reflog
    # 删除工作区文件,并且将这次删除放入暂存区
    git rm file
    # 删除工作区目录
    git rm -r dir
    

    相关文章

      网友评论

          本文标题:git基本操作

          本文链接:https://www.haomeiwen.com/subject/xrqmhqtx.html