当工作中第一次要从svn切换到git的时候其实内心还是蛮开心的,毕竟总算是跟上时代的步伐了,但是从svn切到git上是痛苦的,下面我将自己在工作中用到的svn与git做个对比,帮助大家也能顺利地从svn上转换到git上。从svn到git,最容易忘记的就是git的commit操作只是将暂存区的内容提交到本地仓库,而不是远程仓库,commit的时候同时是看不到,个人感觉这一点是初次上手git最容易出错的地方

下面的图片很清晰的说明来一些命令和各个区域的关系

tortoisesvn 替换指定版本 svn切换git_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 命令来了

tortoisesvn 替换指定版本 svn切换git_暂存区_02

此图来源于蒋鑫的《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 从暂存区中删除,工作目录中保留