两者区别
- 最核心的区别Git是分布式的,而Svn不是分布的。
- Git把内容按元数据方式存储,而SVN是按文件
- git离线可查看原来版本和log
git 分布式版本控制系统 下载
状态:已修改–>已暂存–>已提交
每次提交都有一个摘要值
针对所有仓库
执行命令git config --global user.name "你的用户名"
,告诉git你的名字,这个用户名会出现在提交记录中
执行命令git config --global user.email "你的邮箱"
,告诉git你的邮箱
ssh -T [email protected]
命令
创建SSHkey ssh-keygen -t rsa -C "[email protected]"
1. 获得版本库
git init
初始化本地仓库
git clone
克隆远程仓库到本地
2. 版本管理
git status
查看当前分支并查看状态 (Initial commit初始提交–>已修改状态)
git add
将已修改的文件纳入暂存区中 —>已暂存状态
git rm file
从文件目录中删除文件并纳入暂存区
rm
与上删除类似,需要add
git rm --cached <file>...
回退到unstage,或者说是从暂存区恢复到工作区—>已修改 或者
git reset HEAD test.txt...
修改后需要从缓存区删除 (功能同上)—>已修改
git commit -m "first commit"
提交到仓库,常规需要有注释
git commit --amend -m "把上次提交的注释修改"
git checkout -- test.txt
丢弃个人的所有修改(需要小心使用)
git mv file file2
重命名 Changes to be commit 已经纳入暂存区
git mv
删除+新文件
3.查看信息
git help
git log
查看提交日志☆ q退出
git log -5
显示最近五条 也可以格式化显示
git diff
比较不同状态的代码区别
git config
配置 配置保存在.git
文件夹config文件中
git config --list
查看配置列表
4.远程协作
git pull origin 分支名
git push origin 分支名
$ git push origin上面命令表示,将当前分支推送到origin主机的对应分支。 如果当前分支只有一个追踪分支,那么主机名都可以省略。
$ git push 如果当前分支与多个主机存在追踪关系,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push。
$ git push -u origin master 上面命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。不带任何参数的git push,默认只推送当前分支,这叫做simple方式。此外,还有一种matching方式,会推送所有有对应的远程分支的本地分支。Git 2.0版本之前,默认采用matching方法,现在改为默认采用simple方式。
作者:51cf68e144ad
链接:https://www.jianshu.com/p/dd864fcee643
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
5.分支
git branch
# 列出所有本地分支
git branch -r
# 列出所有远程分支
git branch new_zjy_branch
创建新的分支(master创建分支,则当前版本和master的一致)
git branch --track new_branch_name origin/branch
# 新建一个分支,并且与远程的分支建立追踪关系
git checkout new_zjy_branch
切换分支
git checkout -b new_zjy_branch
创建并切换到该分支
git branch -d new_zjy_branch
删除分支 -D强制删除
git push oringin --delete [branch-name]
# 删除远程分支
git branch -dr [remote/branch]
# 删除远程分支2
(master)git merge new_zjy_branch
将new_zjy_branch上的修改合并到master上
git merge --no-ff new_zjy_branch
:–no-ff不使用fast-forward方式合并,保留分支的commit历史
git branch -a
查看本地分支列表
git branch -r
查看远程分支列表
git push origin 新分支名
向远程提交本地新开的分支
git fetch
上面命令将某个远程主机的更新,全部取回本地。
.gitignore文件
此文件放在项目根目录下
一些文件不需要加入到版本控制中,例如配置文件
忽视这种文件
标签管理
查看所有标签git tag
创建标签git tag name
制定提交信息git tag -a name -m "comment"
删除标签 git tag -d name
标签发布git push origin name
idea配置git https://www.cnblogs.com/hkgov/p/7694101.html
其他教程:
http://www.cnblogs.com/my-freedom/p/5701427.html
http://www.cnblogs.com/hebau-may/p/6382743.html
Gitflow工作流
当分支过多时 , 采用了Git Flow的模式管理这些分支
1.分支图(copy on others)
master
主分支 , 产品的功能全部实现后 , 最终在master分支对外发布
该分支为只读唯一分支 , 只能从其他分支(release/hotfix)合并 , 不能在此分支修改
1.1 初始化,自动创建develop分支 develop
git flow init
主开发分支 , 基于master分支克隆
包含所有要发布到下一个release的代码
该分支为只读唯一分支 , 只能从其他分支合并
2.2 功能分支 feature
功能开发分支 , 基于develop分支克隆 , 主要用于新需求新功能的开发
属于临时分支 , 功能完成后可选删除
git flow feature start featureName #开启新feature分支
git flow feature publish featureName #将feature分支push到远程
git flow feature pull origin featureName #拉取faetureName分支
git flow feature finish featureName #结束feature分支,自动删除
2.3 发布分支
release
测试分支 , 从develop分支克隆
git flow release start releaseName #开启新release分支
git flow release publish releaseName #将release分支push到远程
git flow release finish releaseName #结束release分支,自动合并,自动删除
2.4 维护分支
hotfix
补丁分支 , 基于master分支克隆 , 主要用于对线上的版本进行BUG修复
所有hotfix分支的修改会进入到下一个release
git flow hotfix start hotfixName #开启新hotfix分支
git flow hotfix finish hotfixName #结束hotfix分支,自动合并,自动删除
gitflow更详细文章 https://www.cnblogs.com/myqianlan/p/4195994.html