Git操作指令一

    xiaoxiao2021-03-25  123

    创建版本库

    选择一个地方创建空目录

    mkdir <filename>,创建一个空目录;cd <filename>,打开这个目录;pwd显示当前目录git init把这个某变为Git可管理的仓库给目录中添加文件git add <filename>将文件添加到仓库git commit -m "说明文字"把文件提交到仓库git status查看当前仓库的状态git diff <filename>查看修改的内容

    版本回退

    git log查看详细的历史记录;如果不想看太详细的信息,使用git log --pretty=oneline,它显示的信息是commitID和commit的说明;回退到上一个版本git reset hard HEAD^,HEAD表示当前版本,HEAD^上一个版本,HEAD^^上上个版本。如果版本数太大,使用HEAD~n,表示上n个版本,如HEAD~5,往上5个版本。使用commitId回退,通过git log得到版本信息的commitId,使用指令git reset --hard <commitId>,就能回退到指定的版本。git reflog记录了操作的每一个指令;HEAD是git内部指向当前版本的指针,回退版本就是把HEAD重指向,所以git回退非常迅速。

    回退总结:

    HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id;穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本;要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

    工作区和暂存区

    Git和SVN的不同之处在于Git存在暂存区的概念。

    工作区:就是在电脑里能看到的目录,比如使用mkdir创建的目录,就是一个工作区;版本库:工作区有一个隐藏的文件.git,它不算工作区,而是git的版本库。git的版本库存在了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的HEAD指针。
    git的添加操作

    git add把文件添加进去,实际上就是把文件添加进暂存区;git commit提交更改,就是把暂存区的所有内容提交到当前分支;因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在git commit就是往master分支上提交更改;一旦提交后,如果又没有对工作区做任何修改,那么工作区就是“干净”的;

    为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。 什么是修改?比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。

    git add .提交当前的所有修改;git add <filename>提交修改的文件;git add把修改的内容提交到暂存区;git commit把暂存区的修改提交到当前分支;如果当前的修改没有git add,则git commit提交的是暂存区的修改,并不会把当前工作区的修改提交到当前分支上;查看工作区和版本库的区别,使用:git diff HEAD --<fielname>每次修改,如果不add到暂存区,那就不会加入到commit中;可以多次add后,再commit。

    撤销修改

    工作区的撤销指令:git checkout --<filename>,把文件在工作区的修改全部撤销掉。git checkout --<filename>中的--很重要,没有--就成了切换到另一个分支的命令。 修改后的内容还没有被放到暂存区,撤销修改就会回到和版本库一样的状态;添加到暂存区后,又修改了新的内容,撤销修改就回到添加到暂存区前的状态;总之就是让当前文件回到最近一次git add 和git commit时的状态。修改提交到暂存区,使用修改指令:git reset HEAD <filename>把暂存区的修改撤销掉,重新放回工作区,重复工作区的撤销;修改的内容提交到版本库,撤销使用版本回退的指令,git reset --hard <commitid>、git reset --hard HEAD^上一个版本库;修改的内容推送到远程库,撤销办法:

    revert之后再提交,不过历史纪录里面会有两个commit是无用的。一个错误提交,一个提交revert这个错误提交。当然你也可以用reset,比如git reset –hard ,然后push的时候加上-f 强制更新。但是这个操作很危险,如果别人已经checkout你的错误commit,你又把它reset,这样其他人下次pull,或者push就会有错误。

    删除文件

    在Git中删除也是一个修改操作。 在文件管理器中删除没用的文件使用指令:rm <filename>。 Git检测到你删除了文件,因此,工作区和版本库就不一致了,git status命令会立刻告诉你哪些文件被删除了,这时候有两种操作:

    确定要从版本库中删除该文件,用命令git rm <fielname>删掉,并且git commit.删错了,如何还原:git checout --<filename>,因为版本库里还存在这个文件。git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

    如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

    转载请注明原文地址: https://ju.6miu.com/read-22282.html

    最新回复(0)