一、GIT的理解
- SVN的分支是复制一个文件,且可以在任何地方(文件夹A内、文件夹B内…)提交修改
- git的分支是记录每次的修改,切换分支就是将HEAD指向那个分支
- git分为工作区 —> 暂存区 ----> 分支
- 工作区 使用add 进入暂存区
- 暂存区 使用commit 提交
二、安装git
访问官网 https://git-scm.com/ ,下载后傻瓜式安装即可,没啥特别注意的地方。(打不开网页的话,试试万能的手机热点)
三、基于git的软件有哪些
- github 最常用的软件,但是国外网,用起来卡卡的
- gitlab 一般企业用的,私密性很不错
- gitee 国内的软件,速度快就是了
四、日常使用
远程仓库环境: master 分支 、 develop分支
本地仓库环境: 无任何分支
- 在本地克隆远程仓库
# 一、从远程仓库克隆一个
# 1:HTTPS方式 , 需要登下用户名和密码
git clone https://xxxxxxxxx.com/xxxx.git
# 2:SSH密钥方式 , 需要提前弄个私有、公有密钥的
git clone git@xxx.com:xxx/xxxx.git
- 创建一个本地分支 develop,并追踪远程的develop分支
git checkout -b develop origin/develop
之后会出现如下提示,代表追踪成功
Branch 'develop' set up to track remote branch 'develop' from 'origin'
- 更新本地分支
# git pull = git fetch + git merge
# 更新指定分支
git pull origin develop : develop
#更新全部分支
git pull
- 提交修改到远程develop分支
# 记得先切换到本地develop分支
git add xxx.txt # 执行后,文件从工作区进入到暂存区
git commit -m '我的第一次提交' # 确认暂存区里的内容
git push origin develop
- 撤销工作区的修改 (本地改了,但是还未 git add )
# 因为是撤销工作区的修改,所以在哪个分支下都行
git checkout -- xx.txt
# IDEA中可以直接右击文件--git--ROLL BACK,效果一样
- 撤销暂存区的修改(已经git add)
git reset HEAD 或者 git reset HEAD xx.txt
# HEAD一般指向该分支的最新一次的commit记录
- 其他
# 以后提交、生成密钥是都会用到
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
# 设置本地仓库的远程仓库信息
git remote add 新别名 远程仓库地址
# 查看远程仓库信息
git remote -r
git checkout -b newBranch # 新建分支,同时切换到该分支下
git branch -d b1 # 删除分支b1
- IDEA中设置ignore
(1)右击项目,新建.ignore文件
** 对于有些已经被track的文件,就算写在.ignore文件中,也不会生效,此时执行以下命令即可:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
五、注意事项
1.本地分支一定要和远程分支关联起来,不然会提示“未关联…”
2.建议本地分支和远程分支名字相同
六、工作流程 ---- git flow
使用git flow可以创建本地的工作流程,工作流程可以帮助我们管理我们本地的开发,也就不需要再checkout+pull、checkout+push…
具体步骤如下:
(1) git flow init
执行该命令后,需要我们指定工作流程中的 master 和 develop,之后我们就可以创建hotfix、release、feature、bugfix…
注意:这里的develop是指我们现在在用的分支,而master是我们结束流程开发后,git自动提交合并的分支。
(2)git flow feature start newbranch01
我们创建了工作流程中的一个feature分支,名为newbranch01。
(3)
git add .
git commit -m ‘提交本地内容至暂存区’
git flow feature finish
结束当前的feature分支
此时注意看下图。下图可以理解为我们用 git flow xxx start fenzhi1 命令创建新分支时,如果创建的是 hotfix、release,那么这个分支是基于master的,如果创建的是feature分支,那么这个分支是基于develop的。
什么意思呢? 就是说我们开发完后,执行比如 git flow xxx finish fenzhi1的时候,他会帮我们合并到哪里去。 hotfix这些,就是合并到工作流程中的master,feature这些,就是合并到工作流程中的develop。
*feature 新功能
*hotfix 紧急修复(bug)
*release 用于发布