Git、GitHub、Gitee、GitLab
<pre><code> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<p>Git、GitHub、Gitee、GitLab</p>
</code></pre>
<p></p>
<div class="toc">
<h3>文章目录</h3>
<ul><li>前言</li><li>一、Git</li><li><ul><li>1.1 Git概述</li><li>1.2 版本控制</li><li>1.3 为什么需要版本控制</li><li>1.4 版本控制工具</li><li>1.5 Git简史</li><li>1.6 Git工作机制</li><li>1.7 Git和代码托管中心</li></ul>
</li><li>二、Git安装</li><li>三、 Git常用命令</li><li>四、Git分支操作</li><li><ul><li>4.1 什么事分支</li><li>4.2 分支的好处</li><li>4.3 分支的操作</li><li>4.4 创建分支和切换分支图解</li></ul>
</li><li>五、 Git 团队协作机制</li><li><ul><li>5.1 团队内协作</li><li>5.2 跨团队协作</li></ul>
</li><li>六、GitHub操作</li><li><ul><li>6.1 创建远程库</li><li>6.2 远程仓库操作</li><li>6.3 跨团队协作</li><li>6.4 SSH 免密登录</li></ul>
</li><li>七、idea 集成 Git</li><li><ul><li>7.1 配置Git忽略文件</li></ul>
</li><li>八、idea集成GitHub</li><li>九、 国内代码托管中心-码云 Gitee</li><li>十、自建代码托管平台-GitLab</li><li>总结</li></ul>
</div>
<p></p>
<hr>
<h1>前言</h1>
<p>下面将对代码托管中心<strong>Git、GitHub、Gitee、GitLab</strong>进行详细介绍。</p>
<hr>
<p><code>提示:以下是本篇文章正文内容,下面案例可供参考</code></p>
<h1>一、Git</h1>
<h2>1.1 Git概述</h2>
<p>Git是一个免费的、开源的 <mark>分布式版本控制系统</mark> ,可以快速高效地处理从小型到大型的各种<br> 项目 。<br> Git易于学习,占地面积小,性能 极快 。 它具有廉价的本地库 ,方便的暂存区域和多个工作<br> 流 分支 等 特性。 其性能优于 Subversion、 CVS、 Perforce和 ClearCase等 版本控制工具。</p>
<h2>1.2 版本控制</h2>
<p>版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况的系统。<br> <strong>版本控制</strong>其实最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。<br> <img src="https://img-blog.csdnimg.cn/cbbb8c38ed4e43298a0d78fb44049fd7.png#pic_center" alt="在这里插入图片描述"></p>
<h2>1.3 为什么需要版本控制</h2>
<p>个人开发过渡到团队协作。<br> <img src="https://img-blog.csdnimg.cn/b8cdf5697fff4a7a82c0828eb3d4c4e8.png#pic_center" alt="在这里插入图片描述"></p>
<h2>1.4 版本控制工具</h2>
<ul><li>集中式版本控制工具<br> CVS、<strong>SVN(Subversion)</strong>、VSS……<br> 集中化的版本控制系统诸如 CVS、SVN 等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。多年以来,这已成为版本控制系统的标准做法。<br> 这种做法带来了许多好处,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个集中化的版本控制系统,要远比在各个客户端上维护本地数据库来得轻松容易。<br> 事分两面,有好有坏。这么做显而易见的缺点是<strong>中央服务器的单点故障</strong>。如果服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。</li></ul>
<p><img src="https://img-blog.csdnimg.cn/c559fefdd37245dba73f85dde1761f4a.png#pic_center" alt="在这里插入图片描述"></p>
<ul><li><mark>分布式版本控制工具</mark><br> <mark>Git</mark>、 Mercurial、 Bazaar、 Darcs……<br> 像Git这种分布式版本控制工具 ,客户端提取的不是最新版本的文件快照,而是把<mark>代码仓库完整地镜像</mark>下来 (本地库) 。这 样任何一处协同工作用的 文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。因为每个客户端的每一次文件提取操作,实际上都是一次对整个文件仓库的完整备份 。<br> 分布式的版本控制系统出现之后,解决了集中式版本控制系统的缺陷 :</li></ul>
<hr>
<ol><li>服务器 断网的情况下也可以进行开发 因为版本控制是在本地进行的</li><li>每个客户端保存的也都是整个完整的项目包含历史记录更加安全</li></ol>
<hr>
<p><img src="https://img-blog.csdnimg.cn/e61c4f1bfbdd442597814e6b194b6cc7.png#pic_center" alt="在这里插入图片描述"></p>
<h2>1.5 Git简史</h2>
<p><img src="https://img-blog.csdnimg.cn/341b766e475e42b88beee09921eb28fa.png#pic_center" alt="在这里插入图片描述"></p>
<h2>1.6 Git工作机制</h2>
<p><img src="https://img-blog.csdnimg.cn/8b6f768a400647a0b226cac6d778256b.png#pic_center" alt="在这里插入图片描述"></p>
<h2>1.7 Git和代码托管中心</h2>
<p>代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为<mark>远程库</mark>。</p>
<p><img src="https://img-blog.csdnimg.cn/6757eb3a3c3343a782f4b7aa9e3be6ed.png#pic_center" alt="在这里插入图片描述"></p>
<h1>二、Git安装</h1>
<p><code>略</code><br> 详情看文末的PDF。</p>
<h1>三、 Git常用命令</h1>
<table><thead><tr><th align="left">命令名称</th><th align="left">作用</th></tr></thead><tbody><tr><td align="left">git config --global user.name 用户名</td><td align="left">设置用户签名</td></tr><tr><td align="left">git config --global user.email 邮箱</td><td align="left">设置用户签名</td></tr><tr><td align="left"><mark>git init</mark></td><td align="left"><mark>初始化本地库</mark></td></tr><tr><td align="left"><mark>git status</mark></td><td align="left"><mark>查看本地库状态</mark></td></tr><tr><td align="left"><mark>git add 文件名</mark></td><td align="left"><mark>添加到暂存区</mark></td></tr><tr><td align="left"><mark>git commit -m"日志信息" 文件名</mark></td><td align="left"><mark>提交到本地库</mark></td></tr><tr><td align="left"><mark>git reflog</mark></td><td align="left"><mark>查看历史记录(精简版,版本号显示7位)</mark></td></tr><tr><td align="left"><mark>git log</mark></td><td align="left"><mark>查看历史记录(完整版,版本号显示完全)</mark></td></tr><tr><td align="left"><mark>git reset --hard 版本号</mark></td><td align="left"><mark>版本穿梭</mark></td></tr></tbody></table>
<blockquote>
<p>说明:</p>
<ol><li>签名的作用是<mark>区分不同操作者身份</mark>。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。 Git首次安装<strong>必须设置一下用户签名,否则无法提交代码。</strong><br> ※注意:<br> 这里设置用户签名和将来登录 GitHub(或其他代码托管中心)的账号没有任<br> 何关系。</li></ol>
</blockquote>
<p><img src="https://img-blog.csdnimg.cn/b42fd2715bc24db6a60809c1f6f8008a.png#pic_center" alt="在这里插入图片描述"></p>
<h1>四、Git分支操作</h1>
<p><img src="https://img-blog.csdnimg.cn/cb572ee68ed0437da61c79d21a4b7dc5.png#pic_center" alt="在这里插入图片描述"></p>
<h2>4.1 什么事分支</h2>
<p>在版本控制过程中,同时推进<mark>多个任务</mark>,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从<mark>开发主线上分离开来</mark>,<strong>开发自己分支</strong>的时候,不会影响<strong>主线分支的运行</strong>。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)<br> <img src="https://img-blog.csdnimg.cn/b39d47ebe2374ec9b9a37d5a7bceee20.png#pic_center" alt="在这里插入图片描述"></p>
<h2>4.2 分支的好处</h2>
<p><mark>同时<strong>并行</strong>推进多个功能开发</mark>,提高开发效率。<br> 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。</p>
<h2>4.3 分支的操作</h2>
<table><thead><tr><th align="left">命令名称</th><th align="left">作用</th></tr></thead><tbody><tr><td align="left">git branch 分支名</td><td align="left">创建分支</td></tr><tr><td align="left">git branch -v</td><td align="left">查看分支</td></tr><tr><td align="left">git checkout 分支名</td><td align="left">切换分支</td></tr><tr><td align="left">git merge 分支名</td><td align="left">把指定的分支合并到当前分支上</td></tr></tbody></table>
<blockquote>
<p>说明:</p>
<ol><li>在合并分支的时候,会出现合并冲突。<br> 冲突产生的表现 后面状态为 <mark>MERGING</mark><br> 冲突产生的<strong>原因</strong>:<br> 合并分支时,两个分支在<strong>同一个文件的同一个位置</strong>有两套完全不同的修改。 Git无法替我们决定使用哪一个。必须人为决定新代码内容。<br> <em>解决冲突</em>:<br> 1 编辑有冲突的文件,<mark>删除特殊符号</mark>,<mark>决定要使用的内容</mark><br> 特殊符号:<br> <<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix<br> 并且执行提交时要注意此时使用 <mark>git commit</mark> 命令时不能带<mark>文件名</mark></li></ol>
</blockquote>
<hr>
<h2>4.4 创建分支和切换分支图解</h2>
<p><img src="https://img-blog.csdnimg.cn/2e60bd804f3e4b33b1d8da1993724a19.png#pic_center" alt="在这里插入图片描述"><br> master、hot-fix 其实都是<strong>指向具体版本记录的指针</strong>。当前所在的分支,其实是由<mark>HEAD</mark>决定的。所以创建分支的本质就是<mark>多创建一个指针</mark>。<br> HEAD 如果指向<mark>master</mark>,那么我们现在就在master 分支上。<br> HEAD 如果执行<mark>hotfix</mark>,那么我们现在就在hotfix 分支上。<br> 所以切换分支的本质就是<strong>移动HEAD 指针</strong>。</p>
<hr>
<h1>五、 Git 团队协作机制</h1>
<h2>5.1 团队内协作</h2>
<p><img src="https://img-blog.csdnimg.cn/2b859d2b9c0344b4948c58fc663f19f9.png#pic_center" alt="在这里插入图片描述"></p>
<h2>5.2 跨团队协作</h2>
<p><img src="https://img-blog.csdnimg.cn/ab93283d9c9742a2ba3e17754bbabcb4.png#pic_center" alt="在这里插入图片描述"></p>
<h1>六、GitHub操作</h1>
<h2>6.1 创建远程库</h2>
<p><img src="https://img-blog.csdnimg.cn/48a4f781e70e42f198f08e0d00417522.png#pic_center" alt="在这里插入图片描述"></p>
<p><img src="https://img-blog.csdnimg.cn/0fb7bc4386a94aec93237686814b7817.png#pic_center" alt="在这里插入图片描述"></p>
<h2>6.2 远程仓库操作</h2>
<table><thead><tr><th align="left">命令名称</th><th align="left">作用</th></tr></thead><tbody><tr><td align="left">git remote -v</td><td align="left">查看当前所有远程地址别名</td></tr><tr><td align="left">git remote add 别名 远程地址</td><td align="left">起别名</td></tr><tr><td align="left"><mark>git push 别名 分支</mark></td><td align="left"><mark>推送本地分支上的内容到远程仓库</mark></td></tr><tr><td align="left"><mark>git clone 远程地址</mark></td><td align="left"><mark>将远程仓库的内容克隆到本地</mark></td></tr><tr><td align="left"><mark>git pull 远程库地址别名 远程分支名</mark></td><td align="left"><mark>将远程仓库对于分支最新内容下拉来后与当前本地分支直接合并</mark></td></tr></tbody></table>
<h2>6.3 跨团队协作</h2>
<p>略</p>
<h2>6.4 SSH 免密登录</h2>
<p>略</p>
<h1>七、idea 集成 Git</h1>
<h2>7.1 配置Git忽略文件</h2>
<p><mark>问题</mark></p>
<ul><li>1:为什么要忽略他们?<br> 答:与项目的实际功能无关,不参与<mark>服务器上部署运行</mark>。把它们忽略掉能够屏蔽 IDE工具之间的差异。</li></ul>
<p><mark>问题</mark></p>
<ul><li>2:怎么忽略<br> 1 创建忽略规则文件 <strong>xxxx.ignore</strong>(前缀名随便起 ,建议是 git.ignore<br> 这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig文件引用,建议也放在<strong>用户家目录</strong>下<br> git.ignore文件 模版 内容如下:</li></ul>
<blockquote>
<p>#Compiled class file<br> *.class<br> #Log file<br> *.log<br> #BlueJ files<br> *.ctxt<br> #Mobile Tools for Java (<br> .mtj.tmp/<br> #Package Files #<br> *.jar<br> *.war<br> *.nar<br> *.ear<br> *.zip<br> *.tar.gz<br> <em>.rar<br> #virtual machine crash logs, see<br> http://www.java.com/en/download/help/error_hotspot.xml<br> hs_err_pid</em><br> .classpath<br> .project<br> .settings<br> target<br> .idea<br> *.iml</p>
</blockquote>
<p>2 在 .gitconfig文件中引用忽略配置文件(此文件在 Windows的家目录中)</p>
<blockquote>
<p><br> name = Layne<br> email = Layne @atguigu.com<br> excludesfile = C:/Users/ asus git .ignore<br> 注意:这里要使用“正斜线( /)”,不要使用“反斜线()</p>
</blockquote>
<h1>八、idea集成GitHub</h1>
<p>略</p>
<h1>九、 国内代码托管中心-码云 Gitee</h1>
<p>略</p>
<h1>十、自建代码托管平台-GitLab</h1>
<p>未完待续</p>
<h1>总结</h1>
<p>一些Linux常用指令:</p>
<table><thead><tr><th>指令</th><th>功能</th></tr></thead><tbody><tr><td>yy</td><td>复制</td></tr><tr><td>p</td><td>粘贴</td></tr><tr><td>dd</td><td>删除</td></tr><tr><td>i</td><td>插入模式</td></tr><tr><td>esc</td><td>退出:左下角输入:w:保存 :q:退出 :wq:保存并退出</td></tr><tr><td>cd</td><td>退到上一文件目录</td></tr><tr><td>cd ./文件名</td><td>进入文件</td></tr><tr><td>clear 、Ctrl+l</td><td>清屏</td></tr><tr><td>ll</td><td>将文件形态、权限、拥有者、文件大小等资讯详细列出</td></tr></tbody></table>
<p>红色:说明还没有添加到暂存区<br> 绿色:添加到了暂存区<br> 蓝色:被追踪过但已修改<br> 黑色:自动提交本地库</p><br><br>
来源:https://www.cnblogs.com/wylja/p/16837565.html
頁:
[1]