项目-版本控制必会svn|git

版权声明:fromZjy QQ1045152332 https://blog.csdn.net/qq_36762677/article/details/84235502

两者区别

  1. 最核心的区别Git是分布式的,而Svn不是分布的。
  2. Git把内容按元数据方式存储,而SVN是按文件
  3. 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

sourceTree使用

猜你喜欢

转载自blog.csdn.net/qq_36762677/article/details/84235502