最近在使用git,感觉git和svn有很大的不同,一直想写一篇文章来总结下
git和svn最大的区别就是git是一个非全量的分支形式,而svn是一个全量的形式,svn想要拉分支非常的费力。
使用git的常用步骤:
1.从代码库clone下代码
clone是以,整个仓库为单位,也就是把整个仓库的代码,都搞下来了,也就是包含了所有的分支,你自己用哪个分支,你再切换到哪个分支就行了。
2.本地进行修改文件,代码
git add ***
git commit
git push
一般我们在push之前都会将我们修改的代码进行review下,我们要知道我们推动给gerrit的是哪些文件,
用git status 指令就能够清楚我们修改了哪些文件
通过git status命令可以查看当前工作区和暂存区文件的状态。
文件所处状态介绍:
(1).未跟踪状态(Untracked):
未跟踪状态的文件,是在工作区,但是未纳入Git管理的文件,不参与版本控制。
使用git add命令即可将未跟踪文件纳入管理
(2).位于暂存区待提交状态(Staged):
也就是已经进行了git add 操作了,已经位于缓冲区了
(3).Modified状态:
纳入跟踪的文件在工作区中被修改后就会处于Modified状态。
然后具体看文件的哪里发生了变化
用git diff 文件名字
对于git的几个名词这里简单的记录下:
远程仓库,本地仓库,本地暂存区,工作区。
git diff 查看的是本地暂存区和工作区的不同
git diff ----cached
查看的是 本地暂存区和本地仓库之间的区别。
而我们在git add 之前也会先看下修改了哪些文件,比如我们 查看了git status 发现有些是编译生成的中间文件
我们不想上传,那么就git add 想要上传的文件名字就可以了。
git commit 文件
这个时候如果我们commit完以后,想看下,我现在要push了,那么我都push了哪些改变呢,可以通过下面的方法来简单的查阅下:
git cherry -v 会有如下显示:
+ 95ce45a604c68fd1d9fe1a8fb53cfacb3b958649 test9
而如果我想看详细的,哪些要push的东西,可以 用git show 进行详细的查看
git show 95ce45a604c68fd1d9fe1a8fb53cfacb3b958649
会详细的显示下面的信息:
commit 95ce45a604c68fd1d9fe1a8fb53cfacb3b958649
Author: hczhang <hczhang@vw-mobvoi.com>
Date: Tue Feb 9 14:29:17 2021 +0800
test9
diff --git a/test8 b/test8
index 50d2bca..d312603 100644
--- a/test8
+++ b/test8
@@ -1 +1,2 @@
zhctest8
+zhctest999
然后我们再push
然后代码就会推到gerrit
3.当我们发现我们把修改的数据推送到服务器之后,发现我们推送的有问题,这个时候,可以在gerrit进行abandon
但是有一种更好的方法可以使用
用git commit --amend
他主要有两种用法:
3.1 如果已经push到远端服务器,想修改已经提交过的commit信息
git commit --amend
git push --no-thin origin HEAD:refs/for/master
注意这里的意思是,只是提交commit的信息,也就是说你想修改下注释而已。
3.1 如果已经push到远端服务器,想修改代码信息,这里就包括修改代码的文件,以及新添加代码
git add 文件
git commit --amend
git push --no-thin origin HEAD:refs/for/master
4.就是版本的回退功能
所谓的回退就是你更改了许多内容,但是发现这些更改都是无效的,需要会退到前面的某一个版本,这个时候就要用到 git reset