git基本命令以及使用场景介绍

使用了一阵子git,记录一下收获以及遇到的问题或者是解决办法,如果文章中有什么错误,或者有什么疑问可以指出交流 :)

git基本流程

可能以下流程不是标准的git flow,但是日常开发中用的最多的也是这几个命令,有错之处还望指正

第一步 从远端克隆仓库

1
git clone <仓库地址>

第二步 从master开一个新的分支

1
git checkout -b <分支名称>

如果只是切换已经有的分支就不用加-b了,比如,远端有一个dev分支,本地在从master分支切换到dev分支的时候就不需要加-b参数了:

1
git checkout dev

第三步 提交修改的代码

1
git commit -a -m "git message"

这里的参数-m是可以填写提交信息,后面的git message就是填写的提交信息,至于提交信息的填写规范可以自行查看。
参数-a是用来把已经被git追踪的修改或删除的文件提交,如果只是修改或者删除文件的话可以不使用git add,但如果有新增的文件,在提交前需要把文件添加到 git系统中:

1
git add .

.表示所有的文件,也可以指定具体的文件名,但是我一直都是git add .,图方便嘻嘻

第四步 把分支合并

1
2
3
git checkout master //切换到master分支
git pull --rebase origin master //拉取远端master代码
git merge <分支名称> //合并分支

在提交完自己分支修改的代码之后,首先切换到需要合代码的分支,比如master分支,然后拉取远端代码,因为在协同工作的时候,可能别人已经把修改之后的代码推到远端,所以需要先把master更新到最新,然后再把自己的分支合并即可。
拉代码的时候不加--rebase也没有关系,只不过加了--rebase以后git的提交树会比较清爽,感兴趣的可以搜变基合并

第五步 把修改提交到远端

上一步已经把修改合并到了master分支上,然后把本地的master分支推到远端:

1
git push origin master

第六步 删除自己的分支

1
git branch -d <分支名称>

在功能分支合并了以后,就可以把功能分支删除了。
如果功能分支没有合并的话,-d是无法删除该分支的,但如果非要删,可以用-D参数强制删除该分支:

1
git branch -D <分支名称>

不加参数的话就是查看本地所有分支:

1
git branch

如果本地的分支已经删除,还想删除远端的分支的话,可以用:

1
git push origin :<分支名称>

因为本地分支已经删除了,所以要在分支名称前加上:,不然push的时候会报错说分支不存在

解决问题

暂存

在日常开发中,可能在写一个需求的时候,让你改一个紧急的bug,而且是在同一个项目里,这时候就要使用git的储存了

1
2
3
4
5
6
git stash //把修改的内容储存起来
git stash list //查看储存的堆栈
git stash pop //把最近的储存取出到工作区并且删除堆栈中的这次储存
git stash apply //应用最近的储存
git stash drop //删除最近的储存
git stash clear //清空储存堆栈

这些储存操作默认都是最近的一次储存,当然,popapplydrop操作可以指定第几次储存,命令最后需要加stash@{$num},比如默认的就是stash@{0},但是省略掉了。
需要注意的是,能够储存的文件必须得是被git追踪的文件,如果一个新增的文件没有add过是不能被储存的
还有一点储存的用处就是我之前丢弃修改的时候是先git stash,然后直接git statsh clear把储存删除,相当于丢弃了我的修改。

回退

回退的问题可以有很多花里胡哨的情况发生,还好我日常中遇到需要回退的情况比较少。

丢弃工作区的内容

工作区的内容,就是还没有执行git add的修改,可以用git checkout来丢弃修改

1
git checkout -- *

丢弃暂存区的内容

暂存区的内容,就是在执行了git add以后,但是还没有git commit,就需要使用git reset

1
git reset HEAD *

这样可以把暂存区的内容回退到git add以前,然后可以使用git checkout来丢弃修改

回退提交

在提交了以后想要回退,然后要保留修改的代码

1
git reset --soft HEAD^

这是回退到上一个提交节点,每多退一次提交就加一个^,当然也可以用HEAD~3,这个3就表示要回退。
如果要回退并且直接丢弃所有修改,只需要把参数--soft改为--hard即可

1
git reset --hard HEAD^

写在最后

以上差不多就是我在工作之中使用git的一些收获,可能会有错误,如果发现有什么不对的地方还望指正