当工作中第一次要从svn切换到git的时候其实内心还是蛮开心的,毕竟总算是跟上时代的步伐了,但是从svn切到git上是痛苦的,下面我将自己在工作中用到的svn与git做个对比,帮助大家也能顺利地从svn上转换到git上。从svn到git,最容易忘记的就是git的commit操作只是将暂存区的内容提交到本地仓库,而不是远程仓库,commit的时候同时是看不到,个人感觉这一点是初次上手git最容易出错的地方
下面的图片很清晰的说明来一些命令和各个区域的关系
(以上图片来自网络)
1.从远程仓库拉取代码到本地:git clone -b brance 远程仓库的地址
2.代码有了,那肯定要在工作区内大显身手了,撸完代码也得和同事分享,那么接下来要做的就是
- git add . 将写的文件提交到暂存区
- git commit -m “提交备注” 将暂存区的文件提交到本地仓库,
切记这只是本地仓库,还未分享出去*- git push 提交到远程仓库,这时你的同事就可以看见了
但是在多人协作的情况下事情没有这么简单的,这几个简单的命令也是无法满足需求的,需要在不同的分支上进行切换,那么你就需要掌握一些关于分支的命令
- git branch 查看你当前所在的分支
- git branch name 创建分支
- git checkout -b branchName 当前所在分支创建新分支
- git checkout branchName 切换分支
- git merge branchName 合并branchName分支到当前分支
- git git cherry-pick (-n) commitId(SHA) 挑拣(多个)一个提交到当前分支
比如你刚刚开发了一些需求,上司突然又给你安排了一件非常紧急的任务,要你马上做,这时你工作目录下的文件又不想提交那么这时就需要使用
- git stash list 查看保存的工作进度
- git stash 保存工作进度
- git stash pop 来恢复保存的工作状态
有时提交的时候需要比较本地和版本库之间的差异这时就需要使用git diff 命令来了
此图来源于蒋鑫的《git权威指南》一书
- git diff 工作空间和暂存区的区别
- git diff HEAD 工作空间和版本库的区别
- git diff –cached 暂存区和版本库的区别
使用git提交代码的时候,我们难免不会犯错,毕竟我们是普通的凡人,这时我们可以使用git reset来挽回我们的错误
- git reset –soft 只更改版本库的指针,不改变暂存区和工作区
- git reset –mixed 只更改引用的指向和暂存区,不影响工作区(默认为mixed)
- git reset –hard 影响引用的指针,暂存区,工作区
偶尔我们也需要删除文件这时我们可以使用
- git rm fileName 从工作目录和暂存区中删除
- git rm –cache fileName 从暂存区中删除,工作目录中保留