git学习-本地版本库管理命令

来源:互联网 发布:淘宝无名体育怎么样 编辑:程序博客网 时间:2024/05/17 05:51

以下总结的学习内容均来之廖雪峰的官方网站,感觉讲解的很清楚明了,推荐。

git status

  • 查看当前版本库的状态:
    • Changes not staged for commit:表示已修改但未提交(commit)的内容,比如被修改的文件,或者某个文件夹内新增或者修改了内容。
    • Untracked files:表示未被git跟踪的内容(未纳入版本管理),比如新增的某个文件或者文件夹,还没有被commit过。

git add file
git commit file

  • 我们修改文件的地方为工作区,git版本库中有一个被称为stage的暂存区(也叫index),还有git创建的master分支。工作区到暂存区的“修改同步”为add操作,暂存区到master分支的“修改同步”为commit操作。
    • git add:表示把文件修改添加到暂存区;
    • git commit :表示把暂存区的所有内容提交到当前分支(一般为本地唯一的master分支)。commit只提交stage暂存区的内容,如果修改没有被add到暂存区,则不会被提交到master分支。

git checkout - - file

  • git checkout - - file表示撤销在工作区的修改,前提是文件还没有add以及commit。必须有参数- -,否则表示切换到其他分支

git reset head file

  • git reset head file表示把暂存区的版本回退到工作区,前提是文件还没有add以及commit

git log
git reset - -hard commit_id
git reflog

  • 对于已经提交了的内容,要撤回内容,只能使用版本回退了。
    • 先使用git log查看提交记录,获取每次提交的commit id(commit后面一长串的字符)。
    • 再使用git reset - -hard commit_id回退版本。commit_id指定为需要回到的版本的提交版本号。commit_id不用写完整,写前面几位即可,git会自己去寻找版本。
    • 版本回退后悔了,还可以再回去未来的版本,此时使用git log只能看到当前提交版本及以前的commit_id。使用git reflog,可以看到所有提交的commit_id,再使用git reset - -hard commit_id就回到未来啦(牛掰!总结的时候想到,要是回退后悔了怎么办?果然有撤销回退的功能,之前看漏了!补上)。

git rm file
git commit -m “xxxxxxx”
git checkout - - file

  • 当本地执行了删除文件动作时,有两种应对操作
    • 确实想要删除该文件,本地删除后,想要在版本库上也删除掉,则执行git rm命令(与增加文件时的git add命令相对应)。之后执行git commit命令,提交删除操作。
    • 该文件是不小心删除掉的,想要复原,则可以在版本库上重新checkout一份下来,使用git checkout命令(上文也提到了checkout命令,用于对未提交修改的文件做撤销修改处理,本质上是一样的,不管文件怎么变-修改or删除,都可以从版本库上copy一份下来,进行复原)。

一遍整理下来,总得来说,理解了工作区,暂存区,master分支的概念,什么情况对应什么操作,基本都清楚了。尝试总结一下:

  • 1、所有修改,先提交到暂存区(新增与修改,使用add,删除使用rm),再提交到master分支(commit)。git commit的时候,commit后面不接参数,表示全部提交,但是接下来会跳出vim编辑界面,要求输入修改日志。可以在commit后面接-m参数,直接输入修改日志(格式:git commit -m “log………..”)。如果commit后面加了文件名,则表示提交对应文件名的文件(add,rm均适用);
  • 2、git status:查看版本库跟本地库的差异(使用频率应该较高);
  • 3、git log:提交记录(或者可以叫版本更新记录?)。版本回退时有用,当然版本回退还可以后悔~
  • 4、git reset - -hard commit_id:把版本切换到commit_id提交时的版本;
  • 5、git reset head file:相当于撤销add或者rm操作,前提是还没有commit。要注意格式,与reset - -hard不要记混了;
  • 6、git checkout - - file:把master分支上的file拉下来放到工作区。要注意格式,不要漏- -。
0 0