<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>代码仓库 &#8211; Skyline Traveler</title>
	<atom:link href="http://skyline-traveler.com/tag/%E4%BB%A3%E7%A0%81%E4%BB%93%E5%BA%93/feed/" rel="self" type="application/rss+xml" />
	<link>http://skyline-traveler.com</link>
	<description></description>
	<lastBuildDate>Tue, 30 Apr 2019 07:08:18 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>关于git的一些使用分享</title>
		<link>http://skyline-traveler.com/2019/04/30/%e5%85%b3%e4%ba%8egit%e7%9a%84%e4%b8%80%e4%ba%9b%e4%bd%bf%e7%94%a8%e5%88%86%e4%ba%ab/</link>
		
		<dc:creator><![CDATA[Bob]]></dc:creator>
		<pubDate>Tue, 30 Apr 2019 07:08:18 +0000</pubDate>
				<category><![CDATA[技术文章/分享]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[代码仓库]]></category>
		<category><![CDATA[版本控制]]></category>
		<guid isPermaLink="false">http://skyline-traveler.com/?p=35</guid>

					<description><![CDATA[关于版本控制 什么是版本控制？我为什么要<p><span class="more-link"><a href="http://skyline-traveler.com/2019/04/30/%e5%85%b3%e4%ba%8egit%e7%9a%84%e4%b8%80%e4%ba%9b%e4%bd%bf%e7%94%a8%e5%88%86%e4%ba%ab/" class="readmore">Continue reading<span class="screen-reader-text">关于git的一些使用分享</span></a></span></p>]]></description>
										<content:encoded><![CDATA[
<hr class="wp-block-separator"/>



<p>关于版本控制</p>



<p>什么是版本控制？我为什么要关心它呢？版本控制是一种记录一个或若干文件内容变化，以便将来查阅特定版本修订情况的系统。我们除了可以对软件代码作版本控制管理之外，还可以在其他方面也实行版本控制，可以对任何类型的文件进行版本控制,例如多人协作完成大型的文学作品的时候。</p>



<p>版本控制又分为:</p>



<ul class="wp-block-list"><li>本地版本控制系统</li><li>集中式版本控制系统</li><li>分布式版本控制系统</li></ul>



<p>为什么使用版本控制(好处)</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>使用版本控制,方便多人协作开发时的代码<strong>合并</strong>;<br>
  可以使我们对文件,代码等的修改情况有一个清晰的记录,当新的修改不满意时,可以准确的<strong>回滚</strong>到先前的版本;<br>
  当本地代码因各种原因损坏时,可以迅速的从仓库<strong>还原</strong>至本地;<br>
  同时当多人协作的时候,可以明确成员各自做了什么修改,当代码/文本等产生bug的时候便于<strong>追根溯源</strong>.</p></blockquote>



<p>常用工具</p>



<ul class="wp-block-list"><li>SVN(集中式)</li><li>Git(分布式)<br>
  注意 git ≠ GitHub,一个是工具,一个是平台</li></ul>



<figure class="wp-block-image"><img decoding="async" src="https://git-scm.com/images/logo@2x.png" alt="git-logo"/></figure>



<figure class="wp-block-image"><img decoding="async" src="https://github.githubassets.com/images/modules/open_graph/github-octocat.png" alt="GitHub-logo"/></figure>



<h1 class="wp-block-heading">Git的安装</h1>



<h3 class="wp-block-heading">在 Linux 上安装</h3>



<p>在Linux安装,以CentOS 上为例，一般使用 yum的方式：</p>



<pre class="wp-block-code"><code>  $ sudo yum install git</code></pre>



<p><br>
其他Linux版本参考Git 官方网站上的各种系统的安装步骤，网址为 http://git-scm.com/download/linux。</p>



<h3 class="wp-block-heading">在 Mac 上安装</h3>



<p>在 Mac 上安装 Git 有多种方式。 最简单的方法是安装 Xcode Command Line Tools。 Mavericks （10.9） 或更高版本的系统中，在 Terminal 里尝试首次运行 git 命令即可。 如果没有安装过命令行开发者工具，将会提示你安装。<br>
或者前往下载相关安装包:http://git-scm.com/download/mac。</p>



<h3 class="wp-block-heading">在 Windows 上安装</h3>



<p>在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 http://git-scm.com/download/win，下载会自动开始。 要注意这是一个名为 Git for Windows的项目（也叫做 msysGit），和 Git 是分别独立的项目；更多信息请访问 http://msysgit.github.io/。</p>



<p>另一个简单的方法是安装 GitHub for Windows。 该安装程序包含图形化和命令行版本的 Git。 它也能支持 Powershell，提供了稳定的凭证缓存和健全的 CRLF 设置。 稍后我们会对这方面有更多了解，现在只要一句话就够了，这些都是你所需要的。 你可以在 GitHub for Windows 网站下载，网址为 http://windows.github.com。</p>



<h2 class="wp-block-heading">配置</h2>



<p>用户配置<br>
如下配置一次,避免后面每次操作都需要输入用户信息</p>



<pre class="wp-block-code"><code>$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com</code></pre>



<p>安装完成后,使用Git还需要做一些配置用于向远程仓库拉取和推送代码,其中需要在本地生成私钥和公钥文件,以Mac为例,执行以下命令:</p>



<pre class="wp-block-code"><code>    ssh-keygen -t rsa -C "xxx@hauxi100.com"</code></pre>



<p>最后可以在 <code>~/.ssh</code> 目录下找到生成的 <code>id_rsa</code> 和 <code>id_rsa.pub</code> 文件,即相应的私钥和公钥,用编辑器打开查看id_rsa.pub 复制其中内容到GitHub或者GitLab用户中心相关的设置中,就可以开始使用Git了.</p>



<h1 class="wp-block-heading">开始使用</h1>



<h2 class="wp-block-heading">1.对本地现有项目进行Git管理</h2>



<p>进入项目根目录并使用如下命令进行初始化:</p>



<pre class="wp-block-code"><code>    git init</code></pre>



<p>这样会在项目根目录生成.git目录,其中含有相关的文件<br>
接下来需要将项目中的全部文件加入版本控制</p>



<pre class="wp-block-code"><code>    git add *.c</code></pre>



<p>并提交到第一个版本,加入说明</p>



<pre class="wp-block-code"><code>git commit -m '第一次提交初始化版本'</code></pre>



<h2 class="wp-block-heading">2.从仓库获取项目</h2>



<p>此时需要知晓仓库地址并进行<code>git clone</code>操作,仓库地址在GitHub/Gitlab网站上可以看到 例如成都范儿项目:</p>



<pre class="wp-block-code"><code>    git clone git@**.***.***:****/***.git</code></pre>



<p>等待项目克隆完毕即可开始开发,上述命令后跟上自定义目录名可以将项目克隆到指定目录中<br>
使用<code>git remote -v</code> 列出远程仓库<br>
使用<code>git remote show origin</code>查看远程仓库更多信息</p>



<h2 class="wp-block-heading">3.提交第一次修改</h2>



<p>每次当对项目进行修改,删除,新增后需要提交新版本时,需要执行以下命令:</p>



<pre class="wp-block-code"><code>    git status</code></pre>



<p>用于查看有何变化,这会列出当前项目的变化情况,包含较于上一版本有变化的文件信息</p>



<pre class="wp-block-code"><code>On branch production
Your branch is up to date with 'origin/production'.

Changes not staged for commit:
  (use "git add &lt;file>..." to update what will be committed)
  (use "git checkout -- &lt;file>..." to discard changes in working directory)

    modified:   ../****/***/***/VoteController.php

Untracked files:
  (use "git add &lt;file>..." to include in what will be committed)
    ../***/***/****/laravel-debugbar/
no changes added to commit (use "git add" and/or "git commit -a")</code></pre>



<p>此时我们应该将状态为<code>modified</code>的文件加入新版本中执行:</p>



<pre class="wp-block-code"><code>    git add ../****/***/***/VoteController.php
    git commit -m "这是一次提交,修改了某某文件...."</code></pre>



<p>此时完成了一次提交,但是并没有推送到远程仓库中,还需要:</p>



<pre class="wp-block-code"><code> git push</code></pre>



<p>这样这个版本的代码已经推送到远程仓库,其他用户执行<code>git pull</code>(相当于fetch =&gt; merge)即可拉取到刚刚推送的修改(也可使用<code>git push origin xxxx</code>来推送到指定分支)</p>



<h2 class="wp-block-heading">4.进一步操作</h2>



<p>每次需要向仓库做操作时应该先执行<code>git status</code>查看当前项目有哪些发生变化;</p>



<p>查看尚未<code>add</code>的文件相比之前发生什么变化,使用<code>git diff</code>命令(这个命令本身只显示尚未暂存的改动，而不是自上次提交以来所做的所有改动);</p>



<p>需要查看最近提交过哪些版本时,使用<code>git log</code>查看版本信息(包含版本号,提交者,提交时间等),其中<code>git log -p -2</code> 可以查看最近两次提交的内容差异</p>



<h3 class="wp-block-heading">合并</h3>



<p><code>git merge xxx</code></p>



<h3 class="wp-block-heading">解决冲突</h3>



<p>有时候合并会遇到文件冲突,需要先<code>git status</code>查看冲突情况,并且手动去解决冲突文件,然后使用<code>git add</code>文件</p>



<p>当把错误代码提交到commit时,需要使用<code>git reset --hard xxxx</code>来撤销这条commit</p>



<p>当错误代码已经push到仓库,使用<code>git revert xxxx</code>来撤销push</p>



<ul class="wp-block-list"><li>如果出错内容在私有 branch：在本地把内容修正后，强制 push (push -f）一次就可以解决；</li><li>如果出错内容在 master：不要强制 push，而要用 revert 把写错的 commit 撤销。</li></ul>



<h2 class="wp-block-heading">5.在IDE中使用Git(PHPstorm)</h2>



<p>项目中右键-&gt;git-&gt;各个详细操作</p>



<h1 class="wp-block-heading">其他</h1>



<p>在 Git 中有一个特殊的文本文件：<code>.gitignore</code>。这个文本文件记录了所有你希望被 Git 忽略的目录和文件。</p>



<h2 class="wp-block-heading">常用命令</h2>



<pre class="wp-block-code"><code>git checkout  ##检出 (用于创建/切换分支),**慎重使用**

git status  ##查看当前项目状态(修改,新增,删除等)

git checkout -b ##检出(指定分支)

git commit  ##提交版本

git diff  ##比较文件差异

git add  ##提交指定文件到版本

git clean ##删除所有没有被版本控制过的文件

git fetch --prune  ##从仓库获取内容

git pull --ff-only  ##获取内容并且合并

git branch  ##查看当前分支名
git branch -d xxx ##删除分支

git push  ##推送

git merge xx ##合并分支

git rm  ##删除文件

git mv  ##移动文件 相当于mv => rm => add操作

git rebase ##高级合并

git reset  ##撤销commit 

git revert  ##撤销push

git push origin :yourbranch  ##推送到指定分支</code></pre>



<p>部分内容参考出处 <a href="http://wusibo.com/booklet-git/">Git 原理详解及实用指南</a></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
