Git常用命令举例
第一步,需要新建一个文件夹,在文件夹里新建一个文件(我是用 Linux 命令新建的,Windows用户可以自己手动新建)
- mkdir test (创建文件夹test)
- cd test (切换到test目录)
- touch a.md (新建a.md文件)
注意:在进行任何 Git 操作之前,都要先切换到 Git 仓库目录,也就是要先切换到项目的文件夹目录下。
这个时候随便操作一个命令,比如 git status ,可以看到如下提示(不要纠结颜色,配置与主题不一样而已):
意思是当前目录还不是一个 Git 仓库。
1. git init
这个时候就要用到第一个命令了,代表初始化 git 仓库,输入 git init 之后会提示:
可以看到初始化成功了,至此 test 目录已经是一个 git 仓库了。
2. git status
接下来输入 git status 命令,会有如下提示:
默认就直接在 master 分支,关于分支的概念后面会提,这时最主要的是提示 a.md 文件 Untracked files ,就是说 a.md 文件没有被跟踪,还没有提交到 git 仓库里,提示可以使用 git add <file> 去操作想要提交的文件。
git status 这个命令顾名思义就是查看状态,这是一个使用最频繁的命令,建议大家可以经常输入这个命令,来查看当前 git 仓库的一些状态。
3. git add
上面提示 a.md 文件还没有提交到 git 仓库里,这个时候我们可以随便编辑下 a.md 文件,
然后输入 git add a.md
然后再输入 git status
此时提示以下文件 Changes to
be committed , 意思就是 a.md 文件等待被提交,当然你可以使用 git rm --cached 这个命令去移除这个缓存。
4. git commit
接着我们输入 git commit -m 'first commit' ,这个命令什么意思呢? commit 是提交的意思,-m 代表是提交信息,执行了以上命令代表我们已经正式进行了第一次提交。
这个时候再输入 git status ,会提示 nothing to commit。
5. git log
此时输入 git log 命令,会显示如下内容:
git log 命令可以查看所有产生的 commit 记录,从上图中可以看到已经产生了一条 commit 记录,而提交时候的附带信息叫 'first commit' 。
6. git add & git commit
看到这里估计很多人会有疑问,我想要提交直接进行 commit 不就行了么,为什么先要再 add 一次呢?首先 git add 是先把改动添加到一个「暂存区」,你可以理解成是一个缓存区域,临时保存你的改动,而 git commit 才是最后真正的提交。这样做的好处就是防止误提交,当然也可以将这两步合并成一步,后面再介绍,建议新手先按部就班的一步步来。
7. git branch
branch 即分支的意思,分支的概念很重要,尤其是团队协作的时候,假设两个人都在做同一个项目,这个时候分支就是保证两人协同合作的最大利器。举个例子,A, B俩人在做同一个项目,但是不同模块,这个时候A新建了一个分支叫a, B新建了一个分支叫b,这样A、B对代码做的所有改动都在各自的分支下,互不影响,最终,各自的模块都完成后,可以把分支再合并起来。
执行 git init 初始化git仓库之后会默认生成一个主分支 master ,也是你所在的默认分支,也基本是实际开发正式环境下的分支,一般情况下 master 分支不会轻易直接在上面操作的,可以输入 git branch 查看下当前分支情况:
如果想在此基础上新建一个分支,只要执行 git branch a 就新建了一个名字叫 a 的分支,这时候分支 a 跟分支 master 是一模一样的内容,再输入 git branch 查看的当前分支情况:
从上图可以看到 master 分支前有个 * 号,即虽然新建了一个 a 的分支,但是当前所在的分支还是在 master 上,如果想在 a 分支上进行开发,首先要切换到 a 分支上,执行 git checkout a 命令,然后再输入 git branch 查看下分支情况
可以看到当前所在分支已经是a了,这个时候 A 同学就可以尽情的在新建的a分支去进行代码改动了。
可能有些同学会觉得先新建再切换会有些麻烦,下面就提供给大家一个简便的命令:
git checkout -b a
这个命令的意思就是新建一个a分支,并且自动切换到a分支。
查看远程分支 git branch –r
注:如果在master上新建的分支,分支内容和master一样。如果是在develop上面建的分支,则和develop内容一样
8. git merge
A同学在a分支下代码写的不亦乐乎,终于他的模块完成了,并且测试也都通过了,准备要上线,这个时候就需要把他的代码合并到主分支master上,然后发布。git merge 就是合并分支用到的命令,针对上述情况,需要完成两个步骤,第一步是切换到 master 分支,如果已经在了就不用切换了,第二步执行 git merge a ,意思是把a分支的代码合并到master分支,不出意外,这个时候a分支的代码就顺利合并到 master 分支上了。为什么说不出意外呢?因为这个时候可能会有冲突而造成合并失败,留个包袱,后面进阶的时候再讲。
9. git branch -d
既然有新建分支,那么一定会有删除分支,假如这个分支新建错了,或者a分支的代码已经顺利合并到了 master 分支上,那么a分支没用了,需要删除,这个时候执行 git branch -d a 就可以把a分支删除了。
10. git branch -D
有些时候可能会删除失败,比如如果a分支的代码还没有合并到master,执行 git branch
-d a 是删除不了的,会提示a分支还有未合并的代码,但是如果一定要删除,那就执行 git branch -D a 就可以强制删除a分支。
11. git tag
客户端开发的时候经常有版本的概念,比如v1.0、v1.1等,不同的版本对应不同的代码,所以一般要给代码加上标签,这样假设v1.1版本出了一个新bug,但是又不清楚v1.0是不是有这个bug,有了标签就可以顺利切换到v1.0的代码,重新打包测试。
打tag方法
在commit提交之后打tag
git tag v1.0
查看历史 tag 记录
git tag
从上图可以看出新建了两个标签 v1.0、v1.1。
切换到某个tag,怎么办?也很简单。
git checkout v1.0
push时提交tag
git push --tags
此时已经把代码提交到了tag1。
如果想push到主分支 ,直接再push一次即可,后面不需要加tags
git push
12.reset
退回历史记录
在实际操作中如有意外情况难免需要退回到以前的历史
我们就可以使用git reset
1. 首先查看log记录,查看提交记录
git log
2. 复制要退回的历史记录哈希值 ,并进行退回(哈希值复制一部分即可)
git reset 51f8b159
3. 如果有文件没有提交的话是不能退回的,需要提交后退回,或者也可以强制退回
git reset --hard 51f8b159
如果实在不放心,也可以选择退回到最近一次,
git reset --hard HEAD^
此时查看状态 git status 和代码,就已经退回到了以前的代码中
—— Here are lovecode3000 ~