git基本操作
初始化
git安装后设置用户与邮箱:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
查看用户与邮箱
git config user.name
git config user.email
创建版本库
介绍
版本库:仓库(repository),这里可以简单理解为一个文件夹
创建过程
在需要创建的路径下按以下过程进行创建
*将该目录初始化为git仓库*
git init
*创建后再目录下回出现.git目录,该目录即为对仓库跟踪管理的,不可以对该目录进行修改*
*#在创建的仓库下编写文档1.txt,写入以下内容*
Git is a version control system.
Git is free software.
*将文件添加到仓库:*
git add 1.txt
*执行之后没有任何显示,则为正常*
*提交文件到仓库*
git commit -m 'git test'
*-m后是提交说明,便于他人或自己查看修改说明*
注:一共分为两步,add 与 commit, commit可以一次提交多个文件,add 也可以一次添加多个文件,如下:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
查看git状态
如果对文件进行了修改,则可以通过以下命令了解git状态,并对比修改前后不同
git status
git diff 1.txt
查看变化之后就可以通过add 与commit 对其进行添加与提交了
查看每次修改说明,通过git log
进行查看,显示从最近到最早的修改说明。git log --pretty=oneline
简略显示修改说明,最前面的一长串数字为commit id(版本号)
版本回退
HEAD表示当前版本,HEAD^表示上一版本,HEAD^^表示上上一个版本,。。。HEAD~100表示前100个版本。
通过以下命令回退到过去版本:
git reset --hard HEAD^
注:此时通过git log
已经看不到现在版本了
如果又想回到当前版本,通过git reflog
查看每次的输入记录,从记录中可以看到commit id,然后通过git reset --hard 1094a
,hard 后便是commit id,这里的id不需要写完整,写前几位即可。
下图为版本发生变化后的HEAD的变化过程,可以看出,在版本变化时,HEAD只是指向了不同的版本,所以在版本回退过程是非常快的。
![](https://img.haomeiwen.com/i13701638/b636a11abaf03485.jpg)
![](https://img.haomeiwen.com/i13701638/c74f15b9197d545d.jpg)
add与commit内部变化过程
基本概念
工作区(Working Directory):就是电脑上工作目录,git仓库
版本库(Repository):工作目录中.git目录,这个不算工作区,称为版本库
暂存区(stage/index): .git中最重要的一部分,Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD
![](https://img.haomeiwen.com/i13701638/f80da31278bfc22b.jpg)
前面介绍到,想要管理一个文件,则该文件首先add到仓库,然后commit到仓库,整个过程的变化如下
git add readme.txt
git add LICENSE
![](https://img.haomeiwen.com/i13701638/6e0e9801c3b88292.jpg)
git commit -m "append readme.txt and LICENSE"
![](https://img.haomeiwen.com/i13701638/069d8d2042af9cb8.jpg)
注:通过上述过程分析可知,在实际开发过程中,无需每次add到仓库之后立刻执行commit,应该是经常add,最后commit一次就可以了
撤销修改
如果编辑的文档想要回到初始状态,用命令git chechout --FileName
进行撤销修改。
这里有两种情况:
- 还没有放到暂存区,即只是对文档做了修改,还没有add,此时撤销是回到了文档编辑之前的状态,也就是版本库的最新状态(如果之前暂存区没有文档,即已经全部commit,则回到最近一次git commit状态,否则回到最近一次git add状态)
- 对文档做了修改,并且已经add到了暂存区,则此时撤销修改就回到了暂存区的状态(回到最近一次git add 状态)
注:这里的git chechout
命令在切换分支时还会使用到,但是没有了--
如果已经add,但是还没有commit,但是想撤销add,此时用git reset HEAD FileName
命令,则此时暂存区将被清理干净,但是工作区的文档如果有过修改,则可使用git chechout --FileName
回到上次commit的状态。
如果已经commit,但是想回到commit之前的版本,则用到了前面的命令git reset --hard HEAD^
删除文件
如果将文件从工作区删除,但此时版本库中文件还存在,故通过git status
可以看到哪些文件已被删除。
- 如果确实要将文件删除,则可通过
git rm FileName
,git commit -m "remove FileName"
将版本库中的文档一并删除 - 误删,此时用上面提到的
git checkout --FileName
恢复对工作区的修改
分支管理
使用场景
在开发过程中,可能是多人协作共同开发,此时如果每个人在master分支上进行操作,则整个项目将非常混乱。正确的方法是每个人创建一个属于自己的分支,自己可以随时add,然后再合适的时候在commit,此时commit只是在自己的分支上,故不会影响到别人开发。等自己开发完成后即可将自己的分支请求合并到master中,此时别人才能够看到你的开发。
操作过程
1.创建分支
git checkout -b dev
(-b代表创建dev分支,并切换到dev分支)
相当于:
git branch dev
git checkout dev
可以使用git branch
查看所有分支,其中前面带*号的表示当前所处分支
此时对工作区做add以及commit都是在dev分支上进行的操作,不会影响到master分支
![](https://img.haomeiwen.com/i13701638/e8b040ab22ed20d5.jpg)
注:HEAD每次指向的都是当前分支所在位置
2.合并分支
git checkout master (切换到master分支)
git merge dev(将dev合并到当前master上)
3.删除分支
将dev分支合并到master分支后,就可以删除dev分支了
git branch -d dev
此时在通过git branch
只能看到master分支,已经看不到dev分支
以上内容如有理解不当,请指出,谢谢!另,文章中有些内容来源于一些书籍或其他博客,这里就不一一列举,如有侵权,请与我联系删除。
网友评论