使用了一阵子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 | git checkout master //切换到master分支 |
在提交完自己分支修改的代码之后,首先切换到需要合代码的分支,比如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
6git stash //把修改的内容储存起来
git stash list //查看储存的堆栈
git stash pop //把最近的储存取出到工作区并且删除堆栈中的这次储存
git stash apply //应用最近的储存
git stash drop //删除最近的储存
git stash clear //清空储存堆栈
这些储存操作默认都是最近的一次储存,当然,pop
,apply
,drop
操作可以指定第几次储存,命令最后需要加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
的一些收获,可能会有错误,如果发现有什么不对的地方还望指正