Git vs SVN
-
Git是分布式的,SVN是集中式的
-
Git复杂概念多,SVN简单易上手
-
Git分支廉价,SVN分支昂贵
git命令相对多一些, 所以功能也意味着多一些, 用惯了git的话, 一定回不去SVN!
git安装略! 友友们可以在网上找到很多教程!
git基本概念:
- 版本库
当你一个项目到本地或创建一个 git 项目,项目目录下会有一个隐藏的 .git 子目录。这个目录是 git 用来跟踪管理版本库的,千万不要手动修改。
- 哈希值
用来发现被git管理的文件状态!
- 文件状态
- 工作区域
- 分支(branch):
分支是为了将修改记录的整个流程分开存储,让分开的分支不受其它分支的影响,所以在同一个数据库里可以同时进行多个不同的修改
主分支(Master)前面提到过 master 是 Git 为我们自动创建的第一个分支,也叫主分支,其它分支开发完成后都要合并到 master
- 标签(Tag)
标签是用于标记特定的点或提交的历史,通常会用来标记发布版本的名称或版本号(如:publish/0.0.1),虽然标签看起来有点像分支,但打上标签的提交是固定的,不能随意的改动,参见
- HEAD
HEAD 指向的就是当前分支的最新提交图片
git的工作流程一般是这样的:
Git 的命令实在太多了,日常工作需要掌握add,commit,status,fetch,push,rebase等,若要熟练掌握
掌握rebase和merge的区别,fetch和pull的区别等
常用git操作
git merge --no-ff和git merge之间不同的区别详解戳这里
常用命令:
# 克隆一个已经创建的远端仓库
# 通过 SSH
$ git clone ssh://user@domain.com/repo.git
#通过 HTTP
$ git clone http://domain.com/user/repo.git
# 新建一个本地仓库
$ git init
# 工作区 -> 暂存区
$ git add <file/dir>
# 暂存区 -> 本地仓库
$ git commit -m "some info"
# 本地仓库 -> 远程仓库
$ git push origin master # 本地master分支推送到远程origin仓库
# 工作区 <- 暂存区
$ git checkout -- <file> # 暂存区文件内容覆盖工作区文件内容
# 暂存区 <- 本地仓库
$ git reset HEAD <file> # 本地仓库文件内容覆盖暂存区文件内容
# 本地仓库 <- 远程仓库
$ git clone <git_url> # 克隆远程仓库
$ git fetch upstream master # 拉取远程代码到本地但不应用在当前分支
$ git pull upstream master # 拉取远程代码到本地但应用在当前分支
$ git pull --rebase upstream master # 如果平时使用rebase合并代码则加上
# 工作区 <- 本地仓库
$ git reset <commitid> # 本地仓库覆盖到工作区(保存回退文件内容修改)
$ git reset --mixed <commitid> # 本地仓库覆盖到工作区(保存回退文件内容修改)
$ git reset --soft <commitid> # 本地仓库覆盖到工作区(保留修改并加到暂存区)
$ git reset --hard <commitid> # 本地仓库覆盖到工作区(不保留修改直接删除掉)
# 列出所有本地分支
git branch
# 列出所有远程分支
git branch -r
# 新建一个分支,但依然停留在当前分支
git branch [branch-name]
# 新建一个分支,并切换到该分支
git checkout -b [branch]
# 合并指定分支到当前分支
$ git merge [branch]
# 删除分支
$ git branch -d [branch-name]
# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]
如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提 交!
master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建 的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上 来。
idea中的git基本使用:
在idea中基本使用:
情况一(从远端clone代码):
- 第一步从远程clone代码:
- 然后就可以常用操作了
- 如果想要本地新建分支, 就直接new一个分支就行
命名遵循命名规范就行
单击相关分支, 可以进行更多操作!
- 下拉代码时会出现:
一般就选第一个就行了!
Merge还是Rebase戳这里
在提交到本地仓库后, 就不要下拉rebase代码了,
图文详解 Git 工作原理
如果想要更详细的命令, 就可以看这个三年 Git 使用心得 & 常见问题整理
对开发命令详解全网最全的 Git 分支开发规范手册
Git 教程|菜鸟教程
35a445e59fe9df84f&chksm=e918a31ede6f2a084d39e68721928a416a6a447a0876b74630a4d65011e80e0b1ce65b3ca8a2&token=1267489950&lang=zh_CN#rd)
Git 教程|菜鸟教程