1. Git相关
1.1 Git部分名词解释
- 克隆(clone):从远程仓库URL加载创建一个与远程仓库一样的本地仓库
- 提交(commit):将暂存文件上传到本地仓库(我们在Finder中对本地仓库做修改后一般都得先提交一次,再推送)
- 检出(checkout):切换不同分支
- 添加(add):添加文件到缓存区
- 移除(remove):移除文件至缓存区
- 暂存(git stash):保存工作现场
- 重置(reset):回到最近添加(add)/提交(commit)状态
- 合并(merge):将多个同名文件合并为一个文件,该文件包含多个同名文件的所有内容,相同内容抵消
- 抓取(fetch):从远程仓库获取信息并同步至本地仓库
- 拉取(pull):从远程仓库获取信息并同步至本地仓库,并且自动执行合并(merge)操作,即 pull=fetch+merge
- 推送(push):将本地仓库同步至远程仓库,一般推送(push)前先拉取(pull)一次,确保一致
- 分支(branch):创建/修改/删除分枝
- 标签(tag):给项目增添标签
- 工作流(Git Flow):团队工作时,每个人创建属于自己的分枝(branch),确定无误后提交到master分枝
- 终端(terminal):可以输入git命令行
- 丢弃:放弃未暂缓区的所有修改(工作区中的修改不会添加到版本控制,就是修改的东西不想提交,就直接丢弃)
- 移除:直接删除文件
1.2 用git命令按照以下步骤进行代码提交
(0) cd命令进入项目目录
(1) 修改完代码后,git status查看自己的文件修改列表;
(2) git diff <文件名> 查看自己的文件修改记录;
(3) git add <文件名> 添加需要提交的文件列表;
(4) git commit -m "提交说明"
(5) git pull,更新一下当前最新的代码;
(6) git push 提交代码
2. SourceTree
SourceTree是一个免费的Git图形化管理工具,适用于git进行项目版本控制;SourceTree在window和Mac下都可以安装。
拓展—创建远程仓库:可在github、码云、腾讯云开发者平台等云端代码托管平台来创建一个远程仓库。这里不作为重点,具体操作不再详细说明。
2.1 下载SourceTree并安装和注册
(1) window版:打开软件界面,我们可以clone、add或create项目
- 源路径:项目所在的网址路径
- 目标路径:存储在本地的路径
(2) Mac:版打开界面如下:
2.2 本地和远程仓库建立关联
三种关联情形:
- 从远程
克隆
项目到本地(正常模式):本地没有项目,从远程克隆项目到本地- 本地和远程
断开后重新关联
:本地以前关联过git仓库的项目,本地项目仍在但sourcetree重装导致关联断开- 本地
首次关联
远程空仓库
:本地已有项目,并未关联任何git仓库
2.2.1 window版:本地和远程三种关联情形的操作
(1) 从远程仓库克隆项目到本地:菜单中Clone, 填写仓库地址,填写目标路径(即项目本地存放位置,需是空目录)。
(2) 本地和远程断开后重新关联:菜单中Add, 添加本地项目路径,添加完就ok了。
(3) 本地首次关联远程空仓库:菜单中Create ,添加的是本地项目路径, 创建; 创建完后还需要管理远程仓库,即点击右上角的设置, 填写远端名称(默认是 origin)、 URL、填写git地址。
注:第三种情况需要先拉取,再提交。否则还要关联master,拉取的时候,点击刷新,选中master。
2.2.2 Mac:本地和远程三种关联情形的操作
(1) 从远程仓库克隆项目到本地
-
打开sourceTree,点击“新建” -> “从URL克隆”,如下图
- 填写“源URL”路径(远程仓库项目地址),自动补全或手动选择“目标路径”(本地存放项目的空目录),并自定义“名称”。
-
点击“克隆”按钮,待克隆完毕后(或双击本地仓库名称) 会自动跳转到如下图所示界面,默认会checkout 一个名为master的分支,并选中当前分支。
-
至此克隆完毕,点击SourceTree界面右上方的“在finder中显示”, 可参看项目本地目录(因为示例远程仓库是个空仓库,所以克隆到本地的项目是一个仅包含README.md的空项目)。
(2) 本地和远程断开后重新关联
-
打开sourceTree,点击“新建” -> “添加已经存在的本地仓库”,如下图
- 添加本地项目路径,添加完就ok了。
(3) 本地首次关联远程空仓库
- 创建远程空仓库:gitee、github、腾讯云等远程托管平台
- 进入本地项目路径:cd
本地项目目录
- 初始化本地仓库(使其成为git仓库):git init
- 本地仓库关联远程仓库:git remote add origin
远程仓库地址
- 推送:git push -u origin master
之后,在soucetree中添加已经存在的本地仓库,配置本地项目路径和远程仓库路径即可。
2.3 将本地代码提交到远程仓库
如果本地首次向远程仓库提交代码,需先添加忽略文件(提交时忽略文件不会显示在提交列表中):点击SourceTree右上角的“设置”->“高级”->“编辑”,在gitignore中添加需要忽略的文件。参考source tree 如何忽略文件。
备注:如果需要修改忽略的文件列表(修改本地的.gitignore文件),有时需要先将远程仓库中的.gitignore文件删除,然后再提交.gitignore文件。
(1) 提交:将本地项目拖拽至已生成的目标文件夹后,SourceTree界面的“文件状态”显示新增或修改的文件,左上角的“提示”按钮会统计出文件数量,表示需要进行提交操作。点击左上角“提交”并备注提交信息,之后点击右下角的“提交”按钮进行提交。
(2) 推送:SourceTree界面 -> “推送”按钮 -> 选择仓库和分支 -> 确定。
3. 五种分支类型及创建
(1) master,最终发布版本,整个项目中有且只有一个
(2) develop,项目的开发分支,原则上项目中有且只有一个
(3) feature,功能分支,用于开发一个新的功能
(4) release,预发布版本,介于develop和master之间的一个版本,主要用于测试
(5) hotfix,修复补丁,用于修复master上的bug,直接作用于master
创建新分支
:SourceTree -> 分支->新建分支
4. 问题汇总
(1) 问题1
- 问题:fatal: refusing to merge unrelated histories
- 分析:远程仓库origin上的分支master和本地分支master被Git认为是不同的仓库,所以不能直接合并。
- 解决:git merge master改为 git merge master --allow-unrelated-histories(未使用Git可视化工具SourceTree,使用git命令的情况下的解决方案)
- 备注:可能会在git pull或者git push中都有可能会遇到,这是因为两个分支没有取得关系。同理 git pull 改为 git pull origin master --allow-unrelated-histories。(假如我们的源是origin,分支是master)
(2) 删除腾讯云仓库