大朝哥 發表於 2020-12-4 23:09:00

【Github】Git 简易教程

<h1>介绍</h1>
<h2>1.1 Why Git?</h2>
<ul>
<li>用一个文件进行日期和版本号的迭代</li>
<li>管理基于本文信息的文件:文本文件(.txt),脚本文件(.py)</li>
<li>不擅长管理的文件:图片文件(.jpg),MS文档(.doc)</li>
</ul>
<h2>1.2 Git 安装</h2>
<p>1. git-downloads:&nbsp;https://git-scm.com/downloads</p>
<p>2. 右侧会自动识别当前系统的最新版本,直接点击下载即可</p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130010010996-2085116923.png" alt="" width="483" height="194" loading="lazy"></p>
<p>&nbsp;</p>
<p>3. introduction:./Git/ReleaseNotes.html</p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130022259141-854610333.png" alt="" width="482" height="162" loading="lazy"></p>
<p>&nbsp;</p>
<h1>创建/修改 版本库</h1>
<h2>2.1 Repository</h2>
<h3>init(创建版本库)</h3>
<p>1. 打开Terminal(Windows 的 git bash)</p>
<p>2. 切换路径</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_09a24338-dd1c-4014-99c0-b1729d991120" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_09a24338-dd1c-4014-99c0-b1729d991120" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_09a24338-dd1c-4014-99c0-b1729d991120" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ cd ~/Desktop/gitTUT</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>3. 添加用户 name 和用户 email</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_d01bf0f1-076e-488f-b1a5-aef09f26e94a" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_d01bf0f1-076e-488f-b1a5-aef09f26e94a" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_d01bf0f1-076e-488f-b1a5-aef09f26e94a" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ git config --global user.name <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dongyu lin</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">2</span> $ git config --global user.email <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">dongyulin@email.com</span><span style="color: rgba(128, 0, 0, 1)">"</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>4. 该路径下建立git 的管理文件 .git</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_7a8d12ac-4b9d-43ee-85b4-f18496db25ee" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_7a8d12ac-4b9d-43ee-85b4-f18496db25ee" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_7a8d12ac-4b9d-43ee-85b4-f18496db25ee" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">$ git init
</span><span style="color: rgba(0, 128, 128, 1)">2</span> # Initialized empty Git repository <span style="color: rgba(0, 0, 255, 1)">in</span> C:/Users/xxx/Desktop/gitTUT/.git/</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>此时文件夹中没有任何文件,所以返回告诉我们已经建立了一个空的git 管理库</p>
<p>&nbsp;</p>
<h3>add(添加文件管理)</h3>
<p>1.1 查看文件夹中的所有文件(仅显式文件)</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_64f74012-6c84-4aec-aa9e-c9e5213f7a39" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_64f74012-6c84-4aec-aa9e-c9e5213f7a39" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_64f74012-6c84-4aec-aa9e-c9e5213f7a39" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ <span style="color: rgba(0, 0, 255, 1)">ls</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>1.2 查看文件夹中的所有文件(含隐藏文件,如.git)</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_369596a7-6d6a-4009-911b-da61311ba08c" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_369596a7-6d6a-4009-911b-da61311ba08c" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_369596a7-6d6a-4009-911b-da61311ba08c" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ <span style="color: rgba(0, 0, 255, 1)">ls</span> -<span style="color: rgba(0, 0, 0, 1)">a
</span><span style="color: rgba(0, 128, 128, 1)">2</span> # ./../.git/</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>2. 建立新的文件 main.py</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_b831554b-bbad-47c6-8102-168c50a11d6e" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_b831554b-bbad-47c6-8102-168c50a11d6e" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_b831554b-bbad-47c6-8102-168c50a11d6e" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ <span style="color: rgba(0, 0, 255, 1)">touch</span> main.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>3. 查看版本库的状态</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_03fed299-91a1-43dd-b297-2374fa93f144" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_03fed299-91a1-43dd-b297-2374fa93f144" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_03fed299-91a1-43dd-b297-2374fa93f144" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">$ git status
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)">On branch master    #在master 分支
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">No commits yet
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)">Untracked files:
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>   (use <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git add &lt;file&gt;...</span><span style="color: rgba(128, 0, 0, 1)">"</span> to include <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> what will be committed)
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">      main.py    #main.py还没有加入到版本库中(unstaged,显示红色)
</span><span style="color: rgba(0, 128, 128, 1)">11</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> nothing added to commit but untracked files present (use <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git add</span><span style="color: rgba(128, 0, 0, 1)">"</span> to track)</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>4.1 将文件main.py 添加至版本库</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_1c2bd90b-4e14-408f-9ba8-e16d5eaa0d3a" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_1c2bd90b-4e14-408f-9ba8-e16d5eaa0d3a" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_1c2bd90b-4e14-408f-9ba8-e16d5eaa0d3a" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">$ git add main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"># 再次查看状态
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)">$ git status
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 0, 1)">On branch master
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">No commits yet
</span><span style="color: rgba(0, 128, 128, 1)">10</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">Changes to be committed:
</span><span style="color: rgba(0, 128, 128, 1)">12</span>   (use <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git rm --cached &lt;file&gt;...</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> to unstage)
</span><span style="color: rgba(0, 128, 128, 1)">13</span>         new <span style="color: rgba(0, 0, 255, 1)">file</span>:   main.py    #版本库已识别 main.py(staged, 显示绿色)</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>4.2 一次性添加所有文件夹中未添加的文件</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_c4c03105-77fb-4cbf-93ad-af7e7f7d7ebe" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_c4c03105-77fb-4cbf-93ad-af7e7f7d7ebe" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_c4c03105-77fb-4cbf-93ad-af7e7f7d7ebe" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ git add .</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>commit(提交改变)</h3>
<p>1. 提交状态变更,并通过-m 自定义改变的信息</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_f5f7df68-b864-4114-a3dd-39063019e915" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_f5f7df68-b864-4114-a3dd-39063019e915" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_f5f7df68-b864-4114-a3dd-39063019e915" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ git commit -m <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">create main.py</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">4</span> create main.py
</span><span style="color: rgba(0, 128, 128, 1)">5</span><span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">file</span> changed, <span style="color: rgba(128, 0, 128, 1)">0</span> insertions(+), <span style="color: rgba(128, 0, 128, 1)">0</span> deletions(-<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">6</span>create mode <span style="color: rgba(128, 0, 128, 1)">100644</span> main.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>流程图</h3>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130022523120-407649040.png" alt="" width="565" height="233" loading="lazy"></p>
<p>&nbsp;</p>
<h2>2.2 log &amp; diff</h2>
<h3>log(操作日志)</h3>
<p>1. 查看log</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_c544c605-1cf9-4369-b469-348ae62ddaf2" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_c544c605-1cf9-4369-b469-348ae62ddaf2" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_c544c605-1cf9-4369-b469-348ae62ddaf2" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">$ git log
</span><span style="color: rgba(0, 128, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">4</span> commit 32ba8cb21a13f46ac74b957aecc541ad6baa7303 (HEAD -&gt;<span style="color: rgba(0, 0, 0, 1)"> master)
</span><span style="color: rgba(0, 128, 128, 1)">5</span> Author: dongyu lin &lt;dongyulin@email.com&gt;
<span style="color: rgba(0, 128, 128, 1)">6</span> Date:   Mon Nov <span style="color: rgba(128, 0, 128, 1)">30</span> <span style="color: rgba(128, 0, 128, 1)">02</span>:<span style="color: rgba(128, 0, 128, 1)">58</span>:<span style="color: rgba(128, 0, 128, 1)">58</span> <span style="color: rgba(128, 0, 128, 1)">2020</span> +<span style="color: rgba(128, 0, 128, 1)">0800</span>
<span style="color: rgba(0, 128, 128, 1)">7</span>
<span style="color: rgba(0, 128, 128, 1)">8</span>   create main.py    #创建文件的操作记录</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>2. 修改文件并查看log</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_b5688f5f-8057-4b7b-a141-5d7ad047d818" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_b5688f5f-8057-4b7b-a141-5d7ad047d818" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_b5688f5f-8057-4b7b-a141-5d7ad047d818" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # main.py 中添加一行代码:a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)">$ git status
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">On branch master
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> Changes not staged <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> commit:
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>   (use <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git add &lt;file&gt;...</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> to update what will be committed)
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>   (use <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git restore &lt;file&gt;...</span><span style="color: rgba(128, 0, 0, 1)">"</span> to discard changes <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> working directory)
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">      modified:   main.py    #文件已修改但并未提交(显示红色)
</span><span style="color: rgba(0, 128, 128, 1)">11</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> no changes added to commit (use <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git add</span><span style="color: rgba(128, 0, 0, 1)">"</span> and/or <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git commit -a</span><span style="color: rgba(128, 0, 0, 1)">"</span>)</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>3. 添加(add)修改</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_02bf65aa-4559-4b0e-a0b1-ddc6b6b31176" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_02bf65aa-4559-4b0e-a0b1-ddc6b6b31176" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_02bf65aa-4559-4b0e-a0b1-ddc6b6b31176" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ git add main.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>4. 提交(commit)修改</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_660c6d36-ff1a-49c4-af62-e93bdc33210d" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_660c6d36-ff1a-49c4-af62-e93bdc33210d" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_660c6d36-ff1a-49c4-af62-e93bdc33210d" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ git commit -m <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">change a=1</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)">#输出
</span><span style="color: rgba(0, 128, 128, 1)">4</span> change a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">5</span><span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">file</span> changed, <span style="color: rgba(128, 0, 128, 1)">1</span> insertion(+)    #提示文件有一处添加</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>5. 变更之后查看log</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_fc5e3cd7-f865-4df9-b20b-8c875e1c504d" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_fc5e3cd7-f865-4df9-b20b-8c875e1c504d" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_fc5e3cd7-f865-4df9-b20b-8c875e1c504d" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">$ git log
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> commit 693ee47f323013129611ab00ceee77bf5787eec4 (HEAD -&gt;<span style="color: rgba(0, 0, 0, 1)"> master)
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> Author: dongyu lin &lt;dongyulin@email.com&gt;
<span style="color: rgba(0, 128, 128, 1)"> 6</span> Date:   Mon Nov <span style="color: rgba(128, 0, 128, 1)">30</span> <span style="color: rgba(128, 0, 128, 1)">03</span>:<span style="color: rgba(128, 0, 128, 1)">19</span>:<span style="color: rgba(128, 0, 128, 1)">42</span> <span style="color: rgba(128, 0, 128, 1)">2020</span> +<span style="color: rgba(128, 0, 128, 1)">0800</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span>   change a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">commit 32ba8cb21a13f46ac74b957aecc541ad6baa7303
</span><span style="color: rgba(0, 128, 128, 1)">11</span> Author: dongyu lin &lt;dongyulin@email.com&gt;
<span style="color: rgba(0, 128, 128, 1)">12</span> Date:   Mon Nov <span style="color: rgba(128, 0, 128, 1)">30</span> <span style="color: rgba(128, 0, 128, 1)">02</span>:<span style="color: rgba(128, 0, 128, 1)">58</span>:<span style="color: rgba(128, 0, 128, 1)">58</span> <span style="color: rgba(128, 0, 128, 1)">2020</span> +<span style="color: rgba(128, 0, 128, 1)">0800</span>
<span style="color: rgba(0, 128, 128, 1)">13</span>
<span style="color: rgba(0, 128, 128, 1)">14</span>   create main.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>diff:查看unstaged 状态的修改部分(还没add)与上个commit 的文件有何不同</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_386de19a-07b8-4169-b67b-b7aad6ff824d" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_386de19a-07b8-4169-b67b-b7aad6ff824d" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_386de19a-07b8-4169-b67b-b7aad6ff824d" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> #上次提交的文件 a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> # 本次修改后未add 的文件 a=<span style="color: rgba(128, 0, 128, 1)">2</span> b=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> $ git <span style="color: rgba(0, 0, 255, 1)">diff</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">#输出
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 255, 1)">diff</span> --git a/main.py b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> index d25d49e..61ce15f <span style="color: rgba(128, 0, 128, 1)">100644</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> --- a/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)">10</span> +++ b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)">11</span> @@ -<span style="color: rgba(128, 0, 128, 1)">1</span> +<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)"> @@
</span><span style="color: rgba(0, 128, 128, 1)">12</span> -a = <span style="color: rgba(128, 0, 128, 1)">1</span>    #删除了 a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> +a = <span style="color: rgba(128, 0, 128, 1)">2</span>    #添加了 a=<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">15</span> +b = <span style="color: rgba(128, 0, 128, 1)">1</span>    #添加了 b=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">16</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>diff --cached:查看staged 状态的修改部分(已经add,还没commit)与上个commit 的文件有何不同</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_59ceced9-56b3-45c8-baaf-1b0fce6727aa" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_59ceced9-56b3-45c8-baaf-1b0fce6727aa" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_59ceced9-56b3-45c8-baaf-1b0fce6727aa" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">$ git add .    #add 全部修改文件
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> $ git <span style="color: rgba(0, 0, 255, 1)">diff</span> --<span style="color: rgba(0, 0, 0, 1)">cached    #查看add之后的文件差异
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 255, 1)">diff</span> --git a/main.py b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> index d25d49e..61ce15f <span style="color: rgba(128, 0, 128, 1)">100644</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> --- a/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> +++ b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> @@ -<span style="color: rgba(128, 0, 128, 1)">1</span> +<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)"> @@
</span><span style="color: rgba(0, 128, 128, 1)">10</span> -a = <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> +a = <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> +b = <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>diff HEAD:同时查看unstaged 和staged 状态的修改部分与上个commit 的文件有何不同</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_d2d91399-d701-4e15-ab32-39df52b2fb5a" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_d2d91399-d701-4e15-ab32-39df52b2fb5a" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_d2d91399-d701-4e15-ab32-39df52b2fb5a" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> # 上次commit 的文件 a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> # 本次add过a=<span style="color: rgba(128, 0, 128, 1)">2</span> b=<span style="color: rgba(128, 0, 128, 1)">1</span>,还没add过c=<span style="color: rgba(0, 0, 0, 1)">b
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> $ git <span style="color: rgba(0, 0, 255, 1)">diff</span> HEAD    #unstaged &amp;<span style="color: rgba(0, 0, 0, 1)"> staged
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 255, 1)">diff</span> --git a/main.py b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> index d25d49e..ac13cf6 <span style="color: rgba(128, 0, 128, 1)">100644</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> --- a/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)">10</span> +++ b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)">11</span> @@ -<span style="color: rgba(128, 0, 128, 1)">1</span> +<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)"> @@
</span><span style="color: rgba(0, 128, 128, 1)">12</span> -a = <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> +a = <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">15</span> +b = <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">16</span> +c =<span style="color: rgba(0, 0, 0, 1)"> b
</span><span style="color: rgba(0, 128, 128, 1)">17</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>比较</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_3b3dbc73-1f3e-4a0c-b5ff-b975efc88853" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_3b3dbc73-1f3e-4a0c-b5ff-b975efc88853" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_3b3dbc73-1f3e-4a0c-b5ff-b975efc88853" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> $ git <span style="color: rgba(0, 0, 255, 1)">diff</span> HEAD    #unstaged &amp;<span style="color: rgba(0, 0, 0, 1)"> staged
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 255, 1)">diff</span> --git a/main.py b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> index d25d49e..ac13cf6 <span style="color: rgba(128, 0, 128, 1)">100644</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> --- a/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> +++ b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> @@ -<span style="color: rgba(128, 0, 128, 1)">1</span> +<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)"> @@
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> -a = <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> +a = <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> +b = <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> +c =<span style="color: rgba(0, 0, 0, 1)"> b
</span><span style="color: rgba(0, 128, 128, 1)">14</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span>
<span style="color: rgba(0, 128, 128, 1)">15</span>
<span style="color: rgba(0, 128, 128, 1)">16</span> $ git <span style="color: rgba(0, 0, 255, 1)">diff</span><span style="color: rgba(0, 0, 0, 1)">    #unstaged
</span><span style="color: rgba(0, 128, 128, 1)">17</span>
<span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">#输出
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 255, 1)">diff</span> --git a/main.py b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)">20</span> index 61ce15f..ac13cf6 <span style="color: rgba(128, 0, 128, 1)">100644</span>
<span style="color: rgba(0, 128, 128, 1)">21</span> --- a/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)">22</span> +++ b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)">23</span> @@ -<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span> +<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)"> @@
</span><span style="color: rgba(0, 128, 128, 1)">24</span>a = <span style="color: rgba(128, 0, 128, 1)">2</span>    # 前面没有+
<span style="color: rgba(0, 128, 128, 1)">25</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span>
<span style="color: rgba(0, 128, 128, 1)">26</span>b = <span style="color: rgba(128, 0, 128, 1)">1</span>    # 前面没有+
<span style="color: rgba(0, 128, 128, 1)">27</span> +c =<span style="color: rgba(0, 0, 0, 1)"> b
</span><span style="color: rgba(0, 128, 128, 1)">28</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span>
<span style="color: rgba(0, 128, 128, 1)">29</span>
<span style="color: rgba(0, 128, 128, 1)">30</span> $ git <span style="color: rgba(0, 0, 255, 1)">diff</span> --<span style="color: rgba(0, 0, 0, 1)">cached    #staged
</span><span style="color: rgba(0, 128, 128, 1)">31</span>
<span style="color: rgba(0, 128, 128, 1)">32</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">33</span> <span style="color: rgba(0, 0, 255, 1)">diff</span> --git a/main.py b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)">34</span> index d25d49e..61ce15f <span style="color: rgba(128, 0, 128, 1)">100644</span>
<span style="color: rgba(0, 128, 128, 1)">35</span> --- a/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)">36</span> +++ b/<span style="color: rgba(0, 0, 0, 1)">main.py
</span><span style="color: rgba(0, 128, 128, 1)">37</span> @@ -<span style="color: rgba(128, 0, 128, 1)">1</span> +<span style="color: rgba(128, 0, 128, 1)">1</span>,<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)"> @@
</span><span style="color: rgba(0, 128, 128, 1)">38</span> -a = <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">39</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span>
<span style="color: rgba(0, 128, 128, 1)">40</span> +a = <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">41</span> +b = <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">42</span> \ No newline at end of <span style="color: rgba(0, 0, 255, 1)">file</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h1>回到从前</h1>
<h2>3.1 reset(针对整个版本库)</h2>
<h3>commit --amend(添加修改至上次commit 的版本)</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_a8894a5c-4db7-4404-8dc8-cc0d77267b7b" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_a8894a5c-4db7-4404-8dc8-cc0d77267b7b" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_a8894a5c-4db7-4404-8dc8-cc0d77267b7b" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> $ <span style="color: rgba(0, 0, 255, 1)">touch</span> <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">.py    #创建文件
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> $ git add <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">.py    #添加文件
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> $ git commit --amend --no-edit    #<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">--no-edit</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:不编辑,直接合并到上一个commit
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span>Date: Mon Nov <span style="color: rgba(128, 0, 128, 1)">30</span> <span style="color: rgba(128, 0, 128, 1)">03</span>:<span style="color: rgba(128, 0, 128, 1)">47</span>:<span style="color: rgba(128, 0, 128, 1)">46</span> <span style="color: rgba(128, 0, 128, 1)">2020</span> +<span style="color: rgba(128, 0, 128, 1)">0800</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span><span style="color: rgba(128, 0, 128, 1)">2</span> files changed, <span style="color: rgba(128, 0, 128, 1)">3</span> insertions(+), <span style="color: rgba(128, 0, 128, 1)">1</span> deletion(-<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>create mode <span style="color: rgba(128, 0, 128, 1)">100644</span> <span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">10</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> $ git log --oneline    #<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">--oneline</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:每个commit 内容显示在一行
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">13</span> 6cfc14d (HEAD -&gt; master) change <span style="color: rgba(128, 0, 128, 1)">2</span>    #添加过2.py文件的change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> 693ee47 change a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">15</span> 32ba8cb create main.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<h3>reset(回到上个add)</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_e592f25d-1c13-4e66-913b-ed5bf1ff2491" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_e592f25d-1c13-4e66-913b-ed5bf1ff2491" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_e592f25d-1c13-4e66-913b-ed5bf1ff2491" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> #main.py添加一行代码:d=<span style="color: rgba(128, 0, 128, 1)">4</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)">$ git add main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> $ git status -<span style="color: rgba(0, 0, 0, 1)">s
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 0, 1)">Mmain.py    #staged(显示绿色)
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">$ git reset main.py
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">Unstaged changes after reset:
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">M       main.py
</span><span style="color: rgba(0, 128, 128, 1)">13</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> $ git status -<span style="color: rgba(0, 0, 0, 1)">s
</span><span style="color: rgba(0, 128, 128, 1)">15</span>M main.py    #unstaged(显示红色)</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<h3>reset --hard HEAD(回到上个commit)</h3>
<h4>git指针</h4>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130042506589-1349603864.png" alt="" width="530" height="146" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130042616069-2129479060.png" alt="" width="536" height="175" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130042705157-1336493012.png" alt="" width="534" height="146" loading="lazy"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130042719632-648230342.png" alt="" width="533" height="175" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;每个<strong>&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>commit</code></span></strong>&nbsp;都有自己的&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>id</code></span>&nbsp;数字号,&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>HEAD</code></span>&nbsp;是一个指针, 指引当前的状态是在哪个&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>commit</code></span>. 最近的一次&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>commit</code></span>&nbsp;在最右边, 我们如果要回到过去, 就是让&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>HEAD</code></span>&nbsp;回到过去并&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>reset</code></span>&nbsp;此时的&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>HEAD</code></span>&nbsp;到过去的位置.</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_04fce03b-2260-4c77-afc4-4e12ddf2e87f" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_04fce03b-2260-4c77-afc4-4e12ddf2e87f" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_04fce03b-2260-4c77-afc4-4e12ddf2e87f" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> $ git log --<span style="color: rgba(0, 0, 0, 1)">oneline    #查看所有commit的id
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> 7f82abd (HEAD -&gt; master) change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> 693ee47 change a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">32ba8cb create main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(0, 0, 0, 1)">#HEAD 显示当前commit
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> $ git reset --<span style="color: rgba(0, 0, 0, 1)">hard HEAD
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> HEAD is now at 7f82abd change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">10</span>
<span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">#HEAD 回到前一个commit
</span><span style="color: rgba(0, 128, 128, 1)">12</span> $ git reset --hard HEAD^
<span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">14</span> HEAD is now at 693ee47 change a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">15</span>
<span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 0, 1)">#HEAD 回到任意commit
</span><span style="color: rgba(0, 128, 128, 1)">17</span> $ git reset --<span style="color: rgba(0, 0, 0, 1)">hard 32ba8cb
</span><span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">HEAD is now at 32ba8cb create main.py
</span><span style="color: rgba(0, 128, 128, 1)">20</span>
<span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)">#查看log中的HEAD变更日志
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 0, 1)">$ git reflog
</span><span style="color: rgba(0, 128, 128, 1)">23</span> 7f82abd (HEAD -&gt; master) HEAD@{<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">}: reset: moving to 7f82abd
</span><span style="color: rgba(0, 128, 128, 1)">24</span> 32ba8cb HEAD@{<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">}: reset: moving to HEAD
</span><span style="color: rgba(0, 128, 128, 1)">25</span> 32ba8cb HEAD@{<span style="color: rgba(128, 0, 128, 1)">2</span><span style="color: rgba(0, 0, 0, 1)">}: reset: moving to 32ba8cb
</span><span style="color: rgba(0, 128, 128, 1)">26</span> 693ee47 HEAD@{<span style="color: rgba(128, 0, 128, 1)">3</span><span style="color: rgba(0, 0, 0, 1)">}: reset: moving to HEAD
</span><span style="color: rgba(0, 128, 128, 1)">27</span> 693ee47 HEAD@{<span style="color: rgba(128, 0, 128, 1)">4</span>}: reset: moving to HEAD^
<span style="color: rgba(0, 128, 128, 1)">28</span> 7f82abd (HEAD -&gt; master) HEAD@{<span style="color: rgba(128, 0, 128, 1)">5</span><span style="color: rgba(0, 0, 0, 1)">}: reset: moving to HEAD
</span><span style="color: rgba(0, 128, 128, 1)">29</span> 7f82abd (HEAD -&gt; master) HEAD@{<span style="color: rgba(128, 0, 128, 1)">6</span>}: commit (amend): change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">30</span> 6cfc14d HEAD@{<span style="color: rgba(128, 0, 128, 1)">7</span>}: commit (amend): change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">31</span> 8036b1a HEAD@{<span style="color: rgba(128, 0, 128, 1)">8</span>}: commit: change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">32</span> 693ee47 HEAD@{<span style="color: rgba(128, 0, 128, 1)">9</span>}: commit: change a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">33</span> 32ba8cb HEAD@{<span style="color: rgba(128, 0, 128, 1)">10</span>}: commit (initial): create main.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h2>3.2 checkout (针对单个文件)</h2>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_3744bad6-d037-4f67-95d4-b9c8faa87f3f" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_3744bad6-d037-4f67-95d4-b9c8faa87f3f" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_3744bad6-d037-4f67-95d4-b9c8faa87f3f" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">create main.py
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)">创建main.py文件
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> change a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)">仅对main.py 文件
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">仅对main.py 文件
</span><span style="color: rgba(0, 128, 128, 1)">11</span> a=<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> b=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> c=<span style="color: rgba(0, 0, 0, 1)">b
</span><span style="color: rgba(0, 128, 128, 1)">14</span> d=<span style="color: rgba(128, 0, 128, 1)">4</span>
<span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">创建2.py 文件
</span><span style="color: rgba(0, 128, 128, 1)">16</span>
<span style="color: rgba(0, 128, 128, 1)">17</span> change <span style="color: rgba(128, 0, 128, 1)">3</span>
<span style="color: rgba(0, 128, 128, 1)">18</span> <span style="color: rgba(0, 0, 0, 1)">仅对2.py 文件
</span><span style="color: rgba(0, 128, 128, 1)">19</span> a=<span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">20</span> b=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">21</span> c=<span style="color: rgba(0, 0, 0, 1)">b
</span><span style="color: rgba(0, 128, 128, 1)">22</span> d=<span style="color: rgba(128, 0, 128, 1)">4</span>
<span style="color: rgba(0, 128, 128, 1)">23</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)">24</span> $ git log --<span style="color: rgba(0, 0, 0, 1)">oneline
</span><span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">26</span> 67b64b2 (HEAD -&gt; master) change <span style="color: rgba(128, 0, 128, 1)">3</span>
<span style="color: rgba(0, 128, 128, 1)">27</span> 7f82abd change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">28</span> 693ee47 change a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 0, 0, 1)">32ba8cb create main.py
</span><span style="color: rgba(0, 128, 128, 1)">30</span>
<span style="color: rgba(0, 128, 128, 1)">31</span> #仅main.py 文件回到change a=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)"> 的状态
</span><span style="color: rgba(0, 128, 128, 1)">32</span> $ git checkout 693ee47 -- main.py    #此时main.py内容变为a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">33</span>
<span style="color: rgba(0, 128, 128, 1)">34</span> <span style="color: rgba(0, 0, 0, 1)">$ git add main.py
</span><span style="color: rgba(0, 128, 128, 1)">35</span> $ git commit -m <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">back to change 1 and add commit for main.py</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">36</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">37</span> back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add commit <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> main.py
</span><span style="color: rgba(0, 128, 128, 1)">38</span><span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">file</span> changed, <span style="color: rgba(128, 0, 128, 1)">1</span> insertion(+), <span style="color: rgba(128, 0, 128, 1)">4</span> deletions(-<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">39</span>
<span style="color: rgba(0, 128, 128, 1)">40</span> $ git log --<span style="color: rgba(0, 0, 0, 1)">oneline
</span><span style="color: rgba(0, 128, 128, 1)">41</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">42</span> cbf7a0e (HEAD -&gt; master) back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add commit <span style="color: rgba(0, 0, 255, 1)">for</span> main.py    #此时并未改写change a=<span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">,而是重新添加一个commit
</span><span style="color: rgba(0, 128, 128, 1)">43</span> 67b64b2 change <span style="color: rgba(128, 0, 128, 1)">3</span>
<span style="color: rgba(0, 128, 128, 1)">44</span> 7f82abd change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">45</span> 693ee47 change a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">46</span> 32ba8cb create main.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h1>分支管理</h1>
<h2>4.1 branch</h2>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130053654277-762022753.png" alt="" width="579" height="342" loading="lazy"></p>
<p>之前我们说编辑的所有改变都是在一条主分支&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>master</code></span>&nbsp;上进行的. 通常我们会把&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>master</code></span>&nbsp;当作最终的版本, 而开发新版本或者新属性的时候, 在另外一个分支上进行, 这样就能使开发和使用互不干扰了</p>
<h3>graph(查看分支内容)</h3>
<p>&nbsp;</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_620b6978-d310-4e7e-a2b1-7e3e9cffca04" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_620b6978-d310-4e7e-a2b1-7e3e9cffca04" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_620b6978-d310-4e7e-a2b1-7e3e9cffca04" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ git log --oneline --<span style="color: rgba(0, 0, 0, 1)">graph
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">3</span> * cbf7a0e (HEAD -&gt; master) back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add commit <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> main.py
</span><span style="color: rgba(0, 128, 128, 1)">4</span> * 67b64b2 change <span style="color: rgba(128, 0, 128, 1)">3</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> * 7f82abd change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">6</span> * 693ee47 change a=<span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">7</span> * 32ba8cb create main.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>branch (创建和查看分支)</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_8a972afb-ff69-4d02-b056-b5884ff2ffc8" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_8a972afb-ff69-4d02-b056-b5884ff2ffc8" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_8a972afb-ff69-4d02-b056-b5884ff2ffc8" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">$ git branch dev    #创建dev分支
</span><span style="color: rgba(0, 128, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> <span style="color: rgba(0, 0, 0, 1)">$ git branch    #查看所有分支
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 0, 1)">dev
</span><span style="color: rgba(0, 128, 128, 1)">6</span> * master    # *代表当前的HEAD所在的分支</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>checkout(移动到其他分支)</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_b76bb97d-8782-433d-b402-6a560a060903" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_b76bb97d-8782-433d-b402-6a560a060903" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_b76bb97d-8782-433d-b402-6a560a060903" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">$ git checkout dev
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">3</span> Switched to branch <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">dev</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">4</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 0, 1)">$ git branch
</span><span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">7</span> *<span style="color: rgba(0, 0, 0, 1)"> dev    # HEAD指向dev分支
</span><span style="color: rgba(0, 128, 128, 1)">8</span>   master</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>checkout -b(创建并移动到新的分支)</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_34cfde50-e7e6-4c1a-a748-fc43416efd07" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_34cfde50-e7e6-4c1a-a748-fc43416efd07" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_34cfde50-e7e6-4c1a-a748-fc43416efd07" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> $ git checkout -<span style="color: rgba(0, 0, 0, 1)">b dev2
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">3</span> Switched to a new branch <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">dev2</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">4</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> <span style="color: rgba(0, 0, 0, 1)">$ git branch
</span><span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">7</span> <span style="color: rgba(0, 0, 0, 1)">dev
</span><span style="color: rgba(0, 128, 128, 1)">8</span> *<span style="color: rgba(0, 0, 0, 1)"> dev2    # HEAD 指向dev2 分支
</span><span style="color: rgba(0, 128, 128, 1)">9</span>   master</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>merge(分支中的修改推送到master)</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_3bd3a52f-ab7a-4e0b-9a98-5b88125f9a7e" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_3bd3a52f-ab7a-4e0b-9a98-5b88125f9a7e" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_3bd3a52f-ab7a-4e0b-9a98-5b88125f9a7e" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)">dev分支
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(128, 0, 128, 1)">2</span>.py中添加一行代码:change3 = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">dev</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> $ git commit -am <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">change 3 in dev</span><span style="color: rgba(128, 0, 0, 1)">"</span>    #<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">-am</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">:add所有改变并commit
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> change <span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span><span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">file</span> changed, <span style="color: rgba(128, 0, 128, 1)">2</span> insertions(+<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">$ git checkout master    # 切换至master
</span><span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">12</span> Switched to branch <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">master</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">13</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">$ git merge dev    # 将 dev分支 merge到 master中
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 0, 1)">Updating 47f167e..50e43f0
</span><span style="color: rgba(0, 128, 128, 1)">17</span> Fast-forward    # 默认fast-<span style="color: rgba(0, 0, 0, 1)">forward模式,不保留本次Merge的commit信息
</span><span style="color: rgba(0, 128, 128, 1)">18</span><span style="color: rgba(128, 0, 128, 1)">2</span>.py | <span style="color: rgba(128, 0, 128, 1)">2</span> ++
<span style="color: rgba(0, 128, 128, 1)">19</span><span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">file</span> changed, <span style="color: rgba(128, 0, 128, 1)">2</span> insertions(+<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">20</span>
<span style="color: rgba(0, 128, 128, 1)">21</span> $ git log --oneline --<span style="color: rgba(0, 0, 0, 1)">graph    #log中没有保留dev中的commit
</span><span style="color: rgba(0, 128, 128, 1)">22</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">23</span> * 50e43f0 (HEAD -&gt; master, dev) change <span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev
</span><span style="color: rgba(0, 128, 128, 1)">24</span> * 47f167e back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add comment <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">25</span> * 904e1ba change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">26</span> * c6762a1 change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">27</span> * 13be9a7 create <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">28</span>
<span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)">30</span> <span style="color: rgba(0, 0, 0, 1)">dev2分支
</span><span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(128, 0, 128, 1)">2</span>.py中添加一行代码:change4 = <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">dev2</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">32</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)">33</span> $ git commit -am <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">change 4 in dev2</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">34</span> <span style="color: rgba(0, 0, 0, 1)">#输出
</span><span style="color: rgba(0, 128, 128, 1)">35</span> change <span style="color: rgba(128, 0, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev2
</span><span style="color: rgba(0, 128, 128, 1)">36</span><span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">file</span> changed, <span style="color: rgba(128, 0, 128, 1)">2</span> insertions(+), <span style="color: rgba(128, 0, 128, 1)">1</span> deletion(-<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">37</span>
<span style="color: rgba(0, 128, 128, 1)">38</span> <span style="color: rgba(0, 0, 0, 1)">$ git checkout master    #切换至master
</span><span style="color: rgba(0, 128, 128, 1)">39</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">40</span> Switched to branch <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">master</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">41</span>
<span style="color: rgba(0, 128, 128, 1)">42</span> $ git merge --no-ff -m <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">keep merge info</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> dev2
</span><span style="color: rgba(0, 128, 128, 1)">43</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">44</span> Merge made by the <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">recursive</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)"> strategy.    #recursive模式保留分支中的commit信息
</span><span style="color: rgba(0, 128, 128, 1)">45</span><span style="color: rgba(128, 0, 128, 1)">2</span>.py | <span style="color: rgba(128, 0, 128, 1)">3</span> ++-
<span style="color: rgba(0, 128, 128, 1)">46</span><span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">file</span> changed, <span style="color: rgba(128, 0, 128, 1)">2</span> insertions(+), <span style="color: rgba(128, 0, 128, 1)">1</span> deletion(-<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">47</span>
<span style="color: rgba(0, 128, 128, 1)">48</span> $ git log --oneline --<span style="color: rgba(0, 0, 0, 1)">graph
</span><span style="color: rgba(0, 128, 128, 1)">49</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">50</span> *   85dd1ec (HEAD -&gt; master) keep merge <span style="color: rgba(0, 0, 255, 1)">info</span>
<span style="color: rgba(0, 128, 128, 1)">51</span> |<span style="color: rgba(0, 0, 0, 1)">\
</span><span style="color: rgba(0, 128, 128, 1)">52</span> | * d6ae0fc (dev2) change <span style="color: rgba(128, 0, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev2    #保留分支中的commit信息
</span><span style="color: rgba(0, 128, 128, 1)">53</span> |/
<span style="color: rgba(0, 128, 128, 1)">54</span> * 50e43f0 (dev) change <span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev
</span><span style="color: rgba(0, 128, 128, 1)">55</span> * 47f167e back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add comment <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">56</span> * 904e1ba change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">57</span> * c6762a1 change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">58</span> * 13be9a7 create <span style="color: rgba(128, 0, 128, 1)">1</span>.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h2>4.2 merge(处理分支冲突)</h2>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130070926781-2091371505.png" alt="" loading="lazy"></p>
<p>&nbsp;如何处理 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">master</span> 和 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">dev</span> 同时修改后的 <span style="color: rgba(255, 255, 255, 1); background-color: rgba(0, 0, 0, 1)">merge</span> 冲突问题,比如:</p>
<ul>
<li><span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>master</code></span>&nbsp;中的&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>1.py</code></span>&nbsp;加上&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code># edited in master</code></span>.</li>
<li><span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>dev</code></span>&nbsp;中的&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>1.py</code></span>&nbsp;加上&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code># edited in dev</code></span>.</li>
</ul>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_d5af37e4-135e-4447-b62f-39e20076c268" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_d5af37e4-135e-4447-b62f-39e20076c268" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_d5af37e4-135e-4447-b62f-39e20076c268" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">$ git checkout master
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> $ git log --<span style="color: rgba(0, 0, 0, 1)">oneline    #master 中的log
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> 3d7796e (HEAD -&gt; master) change <span style="color: rgba(128, 0, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> master    #与dev不同
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> 47f167e back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add comment <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> 904e1ba change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> c6762a1 change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> 13be9a7 create <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">$ git checkout dev
</span><span style="color: rgba(0, 128, 128, 1)">11</span> $ git log --<span style="color: rgba(0, 0, 0, 1)">oneline    #dev 中的log
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">13</span> f7d2e3a (HEAD -&gt; dev) change <span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev    #与master不同
</span><span style="color: rgba(0, 128, 128, 1)">14</span> 47f167e back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add comment <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">15</span> 904e1ba change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">16</span> c6762a1 change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">17</span> 13be9a7 create <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">18</span>
<span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">$ git merge dev
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">21</span> Auto-merging <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">22</span> CONFLICT (content): Merge conflict <span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">23</span> Automatic merge failed; fix conflicts and <span style="color: rgba(0, 0, 255, 1)">then</span> commit the result.</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>当 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">merge dev</span> 和 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">master</span> 的时候,<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">Git</span> 发现 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">1.py</span> 在 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">master</span> 和 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">dev</span> 中的版本不同,所以提示 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">merge</span> 有冲突,具体的冲突 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">Git</span> 已经在 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">1.py</span> 文件中标注出来,打开文件就能看到(python自带的IDE打开)</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_da6236a4-bac2-41f9-b9ca-4b0be65ccfff" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_da6236a4-bac2-41f9-b9ca-4b0be65ccfff" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_da6236a4-bac2-41f9-b9ca-4b0be65ccfff" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> a = 1
<span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> I went back to change 1</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> &lt;&lt;&lt;&lt;&lt;&lt;&lt;<span style="color: rgba(0, 0, 0, 1)"> HEAD
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> edited in master</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> =======
<span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> edited in dev</span>
<span style="color: rgba(0, 128, 128, 1)">7</span> &gt;&gt;&gt;&gt;&gt;&gt;&gt; dev</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>此时,需要手动处理 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">1.py</span> 中的冲突,将 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">HEAD</span> 中的描述与 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">dev</span> 中的描述合并起来</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_65dd8e1a-080b-4154-a377-38120635d9c4" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_65dd8e1a-080b-4154-a377-38120635d9c4" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_65dd8e1a-080b-4154-a377-38120635d9c4" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> a = 1
<span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> I went back to change 1</span>
<span style="color: rgba(0, 128, 128, 1)">3</span>
<span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> edited in master and dev</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">commit</span> 现在的文件即可解决冲突</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_3e1ed3d9-3564-4192-b208-8b6929504e39" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_3e1ed3d9-3564-4192-b208-8b6929504e39" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_3e1ed3d9-3564-4192-b208-8b6929504e39" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> $ git commit -am <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">solve conflict</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"> solve conflict
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> $ git log --oneline --<span style="color: rgba(0, 0, 0, 1)">graph
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> *   99ebe95 (HEAD -&gt;<span style="color: rgba(0, 0, 0, 1)"> master) solve conflict
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> |<span style="color: rgba(0, 0, 0, 1)">\
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> | * f7d2e3a (dev) change <span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev
</span><span style="color: rgba(0, 128, 128, 1)">10</span> * | 3d7796e change <span style="color: rgba(128, 0, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> master
</span><span style="color: rgba(0, 128, 128, 1)">11</span> |/
<span style="color: rgba(0, 128, 128, 1)">12</span> * 47f167e back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add comment <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">13</span> * 904e1ba change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> * c6762a1 change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">15</span> * 13be9a7 create <span style="color: rgba(128, 0, 128, 1)">1</span>.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>4.3 rebase(处理分支冲突)</h2>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130070945456-1736923984.png" alt="" loading="lazy"></p>
<p>&nbsp;<img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130070952124-2064345568.png" alt="" width="341" height="152" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130071008590-1059063123.png" alt="" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130071020715-836015021.png" alt="" loading="lazy"></p>
<p>通过 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">rebase</span> 使得 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">branch-A</span> 的 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">C3</span> 吸纳了 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">branch-B</span> 的 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">C4</span> 的更新,在 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">branch-A</span> 与 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">branch-B</span> 共享的分支中生成了新的 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">C3'</span> ;</p>
<p>而通过 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">merge</span> 方式生成的 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">C5 commint</span> 仍旧在 <span style="color: rgba(255, 255, 255, 1); background-color: rgba(0, 0, 0, 1)">branch-A</span> 上面,<strong>因此只能在自己的分支中使用</strong> <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">rebase</span> ,<strong>和别人共享的部分是不能使用的</strong></p>
<p>&nbsp;</p>
<p>如何处理&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">master</span>&nbsp;和&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">dev</span>&nbsp;同时修改后的&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">rebase</span> 冲突问题,比如:</p>
<ul>
<li><span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>master</code></span>&nbsp;中的&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>1.py</code></span>&nbsp;加上&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code># edited in master</code></span>.</li>
<li><span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>dev</code></span>&nbsp;中的&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code>1.py</code></span>&nbsp;加上&nbsp;<span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)"><code># edited in dev</code></span>.</li>
</ul>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_18c9c892-6685-433f-9cfe-fbb569153911" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_18c9c892-6685-433f-9cfe-fbb569153911" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_18c9c892-6685-433f-9cfe-fbb569153911" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">$ git checkout master
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> $ git log --<span style="color: rgba(0, 0, 0, 1)">oneline    #master 中的log
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> 3d7796e (HEAD -&gt; master) change <span style="color: rgba(128, 0, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> master    #与dev不同
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> 47f167e back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add comment <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> 904e1ba change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> c6762a1 change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)"> 8</span> 13be9a7 create <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)">$ git checkout dev
</span><span style="color: rgba(0, 128, 128, 1)">11</span> $ git log --<span style="color: rgba(0, 0, 0, 1)">oneline    #dev 中的log
</span><span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">13</span> f7d2e3a (HEAD -&gt; dev) change <span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev    #与master不同
</span><span style="color: rgba(0, 128, 128, 1)">14</span> 47f167e back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add comment <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">15</span> 904e1ba change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">16</span> c6762a1 change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">17</span> 13be9a7 create <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">18</span>
<span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">$ git merge dev
</span><span style="color: rgba(0, 128, 128, 1)">20</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">21</span> Auto-merging <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">22</span> CONFLICT (content): Merge conflict <span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">23</span> Automatic merge failed; fix conflicts and <span style="color: rgba(0, 0, 255, 1)">then</span> commit the result.</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<div>&nbsp;</div>
<div>通过 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">rebase</span> 合并 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">dev</span> 到 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">master</span></div>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_ff64d914-d3ef-4c9f-8b19-f999fff8ed93" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_ff64d914-d3ef-4c9f-8b19-f999fff8ed93" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_ff64d914-d3ef-4c9f-8b19-f999fff8ed93" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">$ git rebase dev
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> error: could not apply 3d7796e... change <span style="color: rgba(128, 0, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> master
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)">Resolve all conflicts manually, mark them as resolved with
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git add/rm &lt;conflicted_files&gt;</span><span style="color: rgba(128, 0, 0, 1)">"</span>, <span style="color: rgba(0, 0, 255, 1)">then</span> run <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git rebase --continue</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> You can instead skip this commit: run <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git rebase --skip</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> To abort and get back to the state before <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git rebase</span><span style="color: rgba(128, 0, 0, 1)">"</span>, run <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git rebase --abort</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">.
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> Could not apply 3d7796e... change <span style="color: rgba(128, 0, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> master
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> Auto-merging <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">10</span> CONFLICT (content): Merge conflict <span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(128, 0, 128, 1)">1</span>.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p><span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">Git</span> 发现 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">1.py</span> 在 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">master</span> 和 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">dev</span> 上的版本不同,因此提示 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">rebase</span> 有冲突,详情打开 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">1.py</span> 文件即可看到</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_dd2b4cf2-a336-4b23-a88a-c8723de329b3" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_dd2b4cf2-a336-4b23-a88a-c8723de329b3" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_dd2b4cf2-a336-4b23-a88a-c8723de329b3" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> a = 1
<span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> I went back to change 1</span>
<span style="color: rgba(0, 128, 128, 1)">3</span> &lt;&lt;&lt;&lt;&lt;&lt;&lt;<span style="color: rgba(0, 0, 0, 1)"> HEAD
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> edited in dev</span>
<span style="color: rgba(0, 128, 128, 1)">5</span> =======
<span style="color: rgba(0, 128, 128, 1)">6</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> edited in master</span>
<span style="color: rgba(0, 128, 128, 1)">7</span> &gt;&gt;&gt;&gt;&gt;&gt;&gt; 3d7796e (change 4 <span style="color: rgba(0, 0, 255, 1)">in</span> master)</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p>此时 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">HEAD</span> 停留在 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">rebase</span> 模式上</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_8d37fb2f-eca1-4a6e-98bd-2905ec9db5eb" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_8d37fb2f-eca1-4a6e-98bd-2905ec9db5eb" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_8d37fb2f-eca1-4a6e-98bd-2905ec9db5eb" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> <span style="color: rgba(0, 0, 0, 1)">$ git branch
</span><span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">3</span> *<span style="color: rgba(0, 0, 0, 1)"> (no branch, rebasing master)    # HEAD在这
</span><span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 0, 0, 1)">dev
</span><span style="color: rgba(0, 128, 128, 1)">5</span>   master</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p>接下来打开 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">1.py</span> 手动合并差异</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_729e0c2a-c672-4470-8aa2-f770025d6e5c" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_729e0c2a-c672-4470-8aa2-f770025d6e5c" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_729e0c2a-c672-4470-8aa2-f770025d6e5c" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)">1</span> a = 1
<span style="color: rgba(0, 128, 128, 1)">2</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> I went back to change 1</span>
<span style="color: rgba(0, 128, 128, 1)">3</span>
<span style="color: rgba(0, 128, 128, 1)">4</span> <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> edited in master and dev</span></pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<p><span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">rebase</span> 现在的文件即可解决冲突,但是 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">master</span> 的历史会被修改,因此千万不要在共享分支中使用 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">rebase</span></p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_0359d211-97c9-4055-a916-3a5ce63addb7" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_0359d211-97c9-4055-a916-3a5ce63addb7" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_0359d211-97c9-4055-a916-3a5ce63addb7" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> $ git add <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> $ git rebase --<span style="color: rgba(0, 0, 0, 1)">continue
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span> Successfully rebased and updated refs/heads/<span style="color: rgba(0, 0, 0, 1)">master.
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span> $ git log --oneline --<span style="color: rgba(0, 0, 0, 1)">graph
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span> * 7a70f12 (HEAD -&gt; master) change <span style="color: rgba(128, 0, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">in</span> master    # 这条 commit 原本的id=<span style="color: rgba(0, 0, 0, 1)">3d7796e, 所以 master 的历史被修改
</span><span style="color: rgba(0, 128, 128, 1)">10</span> * f7d2e3a (dev) change <span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev    # rebase 过来的dev commit
</span><span style="color: rgba(0, 128, 128, 1)">11</span> * 47f167e back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add comment <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">12</span> * 904e1ba change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> * c6762a1 change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> * 13be9a7 create <span style="color: rgba(128, 0, 128, 1)">1</span>.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h2>4.4 stash(临时修改)</h2>
<p>通过 <span style="background-color: rgba(0, 0, 0, 1); color: rgba(255, 255, 255, 1)">stash</span> 能够将目前手里的工作放在一边分隔开来,再另外单独处理之前的任务</p>
<h3>暂存 dev 分支的任务</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_1d57ccde-cd0a-4235-84f4-88bd838054e0" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_1d57ccde-cd0a-4235-84f4-88bd838054e0" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_1d57ccde-cd0a-4235-84f4-88bd838054e0" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">$ git checkout dev
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> Switched to branch <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">dev</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py中添加一行代码:# feel happy
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">$ git stash
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">11</span> Saved working directory and index state WIP on dev: f7d2e3a change <span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev
</span><span style="color: rgba(0, 128, 128, 1)">12</span>
<span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">$ git status
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)">On branch dev
</span><span style="color: rgba(0, 128, 128, 1)">16</span> nothing to commit, working tree clean    # 干净得很</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>完成 boss 分支的任务</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_d4648028-15d5-4448-85c8-2cd6bff3e46f" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_d4648028-15d5-4448-85c8-2cd6bff3e46f" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_d4648028-15d5-4448-85c8-2cd6bff3e46f" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> $ git checkout -<span style="color: rgba(0, 0, 0, 1)">b boss
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> Switched to a new branch <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">boss</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py中添加一行代码:# lovely boss
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> $ git commit -am <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">job from boss</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)"> job from boss
</span><span style="color: rgba(0, 128, 128, 1)">12</span><span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">file</span> changed, <span style="color: rgba(128, 0, 128, 1)">4</span> insertions(+<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">13</span>
<span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">$ git checkout master
</span><span style="color: rgba(0, 128, 128, 1)">15</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">16</span> Switched to branch <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">master</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">17</span>
<span style="color: rgba(0, 128, 128, 1)">18</span> $ git merge --no-ff -m <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">merge boos job</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> boss
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">20</span> Auto-merging <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">21</span> CONFLICT (content): Merge conflict <span style="color: rgba(0, 0, 255, 1)">in</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">22</span> Automatic merge failed; fix conflicts and <span style="color: rgba(0, 0, 255, 1)">then</span><span style="color: rgba(0, 0, 0, 1)"> commit the result.
</span><span style="color: rgba(0, 128, 128, 1)">23</span>
<span style="color: rgba(0, 128, 128, 1)">24</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)">25</span> <span style="color: rgba(0, 0, 0, 1)">冲突文件
</span><span style="color: rgba(0, 128, 128, 1)">26</span> a = <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">27</span> # I went back to change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">28</span> &lt;&lt;&lt;&lt;&lt;&lt;&lt;<span style="color: rgba(0, 0, 0, 1)"> HEAD
</span><span style="color: rgba(0, 128, 128, 1)">29</span>
<span style="color: rgba(0, 128, 128, 1)">30</span> # edited <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> master and dev
</span><span style="color: rgba(0, 128, 128, 1)">31</span>
<span style="color: rgba(0, 128, 128, 1)">32</span> =======
<span style="color: rgba(0, 128, 128, 1)">33</span> # edited <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev
</span><span style="color: rgba(0, 128, 128, 1)">34</span>
<span style="color: rgba(0, 128, 128, 1)">35</span> <span style="color: rgba(0, 0, 0, 1)"># lovely boss
</span><span style="color: rgba(0, 128, 128, 1)">36</span> &gt;&gt;&gt;&gt;&gt;&gt;&gt;<span style="color: rgba(0, 0, 0, 1)"> boss
</span><span style="color: rgba(0, 128, 128, 1)">37</span>
<span style="color: rgba(0, 128, 128, 1)">38</span> <span style="color: rgba(0, 0, 0, 1)">修改为
</span><span style="color: rgba(0, 128, 128, 1)">39</span> a = <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">40</span> # I went back to change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">41</span>
<span style="color: rgba(0, 128, 128, 1)">42</span> # edited <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> master and dev
</span><span style="color: rgba(0, 128, 128, 1)">43</span>
<span style="color: rgba(0, 128, 128, 1)">44</span> <span style="color: rgba(0, 0, 0, 1)"># lovely boss
</span><span style="color: rgba(0, 128, 128, 1)">45</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)">46</span>
<span style="color: rgba(0, 128, 128, 1)">47</span> $ git commit -am <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">solve conflict</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)">48</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">49</span> <span style="color: rgba(0, 0, 0, 1)"> solve conflict
</span><span style="color: rgba(0, 128, 128, 1)">50</span>
<span style="color: rgba(0, 128, 128, 1)">51</span> $ git log --oneline --<span style="color: rgba(0, 0, 0, 1)">graph
</span><span style="color: rgba(0, 128, 128, 1)">52</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">53</span> *   b218671 (HEAD -&gt;<span style="color: rgba(0, 0, 0, 1)"> master) solve conflict
</span><span style="color: rgba(0, 128, 128, 1)">54</span> |<span style="color: rgba(0, 0, 0, 1)">\
</span><span style="color: rgba(0, 128, 128, 1)">55</span> | *<span style="color: rgba(0, 0, 0, 1)"> 4ed34e8 (boss) job from boss
</span><span style="color: rgba(0, 128, 128, 1)">56</span> * | 2d1961f change <span style="color: rgba(128, 0, 128, 1)">4</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> master
</span><span style="color: rgba(0, 128, 128, 1)">57</span> |/
<span style="color: rgba(0, 128, 128, 1)">58</span> * f7d2e3a (dev) change <span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev
</span><span style="color: rgba(0, 128, 128, 1)">59</span> * 47f167e back to change <span style="color: rgba(128, 0, 128, 1)">1</span> and add comment <span style="color: rgba(0, 0, 255, 1)">for</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">60</span> * 904e1ba change <span style="color: rgba(128, 0, 128, 1)">2</span>
<span style="color: rgba(0, 128, 128, 1)">61</span> * c6762a1 change <span style="color: rgba(128, 0, 128, 1)">1</span>
<span style="color: rgba(0, 128, 128, 1)">62</span> * 13be9a7 create <span style="color: rgba(128, 0, 128, 1)">1</span>.py</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h3>恢复 dev 分支的任务</h3>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_f73c0e0b-e55a-47e1-88ba-2e040af7998a" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_f73c0e0b-e55a-47e1-88ba-2e040af7998a" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_f73c0e0b-e55a-47e1-88ba-2e040af7998a" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(0, 0, 0, 1)">$ git checkout dev
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> Switched to branch <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">dev</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)"> 4</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)">$ git stash list    # 查看stash 中的缓存
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span> stash@{<span style="color: rgba(128, 0, 128, 1)">0</span>}: WIP on dev: f7d2e3a change <span style="color: rgba(128, 0, 128, 1)">3</span> <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> dev    #stash 中有dev 的工作
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> <span style="color: rgba(0, 0, 0, 1)">$ git stash pop    # 通过pop 来提取并继续工作
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">11</span> <span style="color: rgba(0, 0, 0, 1)">On branch dev
</span><span style="color: rgba(0, 128, 128, 1)">12</span> Changes not staged <span style="color: rgba(0, 0, 255, 1)">for</span><span style="color: rgba(0, 0, 0, 1)"> commit:
</span><span style="color: rgba(0, 128, 128, 1)">13</span>   (use <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git add &lt;file&gt;...</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)"> to update what will be committed)
</span><span style="color: rgba(0, 128, 128, 1)">14</span>   (use <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git restore &lt;file&gt;...</span><span style="color: rgba(128, 0, 0, 1)">"</span> to discard changes <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> working directory)
</span><span style="color: rgba(0, 128, 128, 1)">15</span>         modified:   <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py
</span><span style="color: rgba(0, 128, 128, 1)">16</span>
<span style="color: rgba(0, 128, 128, 1)">17</span> no changes added to commit (use <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git add</span><span style="color: rgba(128, 0, 0, 1)">"</span> and/or <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">git commit -a</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)">18</span> Dropped refs/stash@{<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">} (18f4cb0facb172080e905ce8d890bfe1baea3049)
</span><span style="color: rgba(0, 128, 128, 1)">19</span>
<span style="color: rgba(0, 128, 128, 1)">20</span> $ git status -<span style="color: rgba(0, 0, 0, 1)">s
</span><span style="color: rgba(0, 128, 128, 1)">21</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">22</span>M <span style="color: rgba(128, 0, 128, 1)">1</span>.py    # 未add(显示红色)</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h1>Git指令集</h1>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_fc2cce3d-ee7f-42ce-9c6f-9ed8e2c27a13" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_fc2cce3d-ee7f-42ce-9c6f-9ed8e2c27a13" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_fc2cce3d-ee7f-42ce-9c6f-9ed8e2c27a13" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> $ git --<span style="color: rgba(0, 0, 0, 1)">help
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span>
<span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> usage: git [--version] [--help] [-C &lt;path&gt;] [-c &lt;name&gt;=&lt;value&gt;<span style="color: rgba(0, 0, 0, 1)">]
</span><span style="color: rgba(0, 128, 128, 1)"> 5</span>            [--exec-path[=&lt;path&gt;]] [--html-path] [--<span style="color: rgba(0, 0, 255, 1)">man</span>-path] [--<span style="color: rgba(0, 0, 255, 1)">info</span>-<span style="color: rgba(0, 0, 0, 1)">path]
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span>            [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--<span style="color: rgba(0, 0, 0, 1)">bare]
</span><span style="color: rgba(0, 128, 128, 1)"> 7</span>            [--git-<span style="color: rgba(0, 0, 255, 1)">dir</span>=&lt;path&gt;] [--work-tree=&lt;path&gt;] [--namespace=&lt;name&gt;<span style="color: rgba(0, 0, 0, 1)">]
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>            &lt;command&gt; [&lt;args&gt;<span style="color: rgba(0, 0, 0, 1)">]
</span><span style="color: rgba(0, 128, 128, 1)"> 9</span>
<span style="color: rgba(0, 128, 128, 1)">10</span> These are common Git commands used <span style="color: rgba(0, 0, 255, 1)">in</span><span style="color: rgba(0, 0, 0, 1)"> various situations:
</span><span style="color: rgba(0, 128, 128, 1)">11</span>
<span style="color: rgba(0, 128, 128, 1)">12</span> <span style="color: rgba(0, 0, 0, 1)">start a working area (see also: git help tutorial)
</span><span style="color: rgba(0, 128, 128, 1)">13</span> <span style="color: rgba(0, 0, 0, 1)">   clone             Clone a repository into a new directory
</span><span style="color: rgba(0, 128, 128, 1)">14</span> <span style="color: rgba(0, 0, 0, 1)">   init            Create an empty Git repository or reinitialize an existing one
</span><span style="color: rgba(0, 128, 128, 1)">15</span>
<span style="color: rgba(0, 128, 128, 1)">16</span> <span style="color: rgba(0, 0, 0, 1)">work on the current change (see also: git help everyday)
</span><span style="color: rgba(0, 128, 128, 1)">17</span>    add               Add <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)"> contents to the index
</span><span style="color: rgba(0, 128, 128, 1)">18</span>    <span style="color: rgba(0, 0, 255, 1)">mv</span>                Move or rename a <span style="color: rgba(0, 0, 255, 1)">file</span><span style="color: rgba(0, 0, 0, 1)">, a directory, or a symlink
</span><span style="color: rgba(0, 128, 128, 1)">19</span> <span style="color: rgba(0, 0, 0, 1)">   restore         Restore working tree files
</span><span style="color: rgba(0, 128, 128, 1)">20</span>    <span style="color: rgba(0, 0, 255, 1)">rm</span><span style="color: rgba(0, 0, 0, 1)">                Remove files from the working tree and from the index
</span><span style="color: rgba(0, 128, 128, 1)">21</span>    sparse-checkout   Initialize and modify the sparse-<span style="color: rgba(0, 0, 0, 1)">checkout
</span><span style="color: rgba(0, 128, 128, 1)">22</span>
<span style="color: rgba(0, 128, 128, 1)">23</span> <span style="color: rgba(0, 0, 0, 1)">examine the history and state (see also: git help revisions)
</span><span style="color: rgba(0, 128, 128, 1)">24</span>    bisect            Use binary search to <span style="color: rgba(0, 0, 255, 1)">find</span><span style="color: rgba(0, 0, 0, 1)"> the commit that introduced a bug
</span><span style="color: rgba(0, 128, 128, 1)">25</span>    <span style="color: rgba(0, 0, 255, 1)">diff</span><span style="color: rgba(0, 0, 0, 1)">            Show changes between commits, commit and working tree, etc
</span><span style="color: rgba(0, 128, 128, 1)">26</span>    <span style="color: rgba(0, 0, 255, 1)">grep</span><span style="color: rgba(0, 0, 0, 1)">            Print lines matching a pattern
</span><span style="color: rgba(0, 128, 128, 1)">27</span> <span style="color: rgba(0, 0, 0, 1)">   log               Show commit logs
</span><span style="color: rgba(0, 128, 128, 1)">28</span> <span style="color: rgba(0, 0, 0, 1)">   show            Show various types of objects
</span><span style="color: rgba(0, 128, 128, 1)">29</span> <span style="color: rgba(0, 0, 0, 1)">   status            Show the working tree status
</span><span style="color: rgba(0, 128, 128, 1)">30</span>
<span style="color: rgba(0, 128, 128, 1)">31</span> <span style="color: rgba(0, 0, 0, 1)">grow, mark and tweak your common history
</span><span style="color: rgba(0, 128, 128, 1)">32</span> <span style="color: rgba(0, 0, 0, 1)">   branch            List, create, or delete branches
</span><span style="color: rgba(0, 128, 128, 1)">33</span> <span style="color: rgba(0, 0, 0, 1)">   commit            Record changes to the repository
</span><span style="color: rgba(0, 128, 128, 1)">34</span>    merge             Join two or <span style="color: rgba(0, 0, 255, 1)">more</span><span style="color: rgba(0, 0, 0, 1)"> development histories together
</span><span style="color: rgba(0, 128, 128, 1)">35</span> <span style="color: rgba(0, 0, 0, 1)">   rebase            Reapply commits on top of another base tip
</span><span style="color: rgba(0, 128, 128, 1)">36</span> <span style="color: rgba(0, 0, 0, 1)">   reset             Reset current HEAD to the specified state
</span><span style="color: rgba(0, 128, 128, 1)">37</span> <span style="color: rgba(0, 0, 0, 1)">   switch            Switch branches
</span><span style="color: rgba(0, 128, 128, 1)">38</span>    tag               Create, list, delete or verify a tag <span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> signed with GPG
</span><span style="color: rgba(0, 128, 128, 1)">39</span>
<span style="color: rgba(0, 128, 128, 1)">40</span> <span style="color: rgba(0, 0, 0, 1)">collaborate (see also: git help workflows)
</span><span style="color: rgba(0, 128, 128, 1)">41</span> <span style="color: rgba(0, 0, 0, 1)">   fetch             Download objects and refs from another repository
</span><span style="color: rgba(0, 128, 128, 1)">42</span> <span style="color: rgba(0, 0, 0, 1)">   pull            Fetch from and integrate with another repository or a local branch
</span><span style="color: rgba(0, 128, 128, 1)">43</span> <span style="color: rgba(0, 0, 0, 1)">   push            Update remote refs along with associated objects
</span><span style="color: rgba(0, 128, 128, 1)">44</span>
<span style="color: rgba(0, 128, 128, 1)">45</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">git help -a</span><span style="color: rgba(128, 0, 0, 1)">'</span> and <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">git help -g</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)"> list available subcommands and some
</span><span style="color: rgba(0, 128, 128, 1)">46</span> concept guides. See <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">git help &lt;command&gt;</span><span style="color: rgba(128, 0, 0, 1)">'</span> or <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">git help &lt;concept&gt;</span><span style="color: rgba(128, 0, 0, 1)">'</span>
<span style="color: rgba(0, 128, 128, 1)">47</span> <span style="color: rgba(0, 0, 0, 1)">to read about a specific subcommand or concept.
</span><span style="color: rgba(0, 128, 128, 1)">48</span> See <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">git help git</span><span style="color: rgba(128, 0, 0, 1)">'</span> <span style="color: rgba(0, 0, 255, 1)">for</span> an overview of the system.</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p>&nbsp;</p>
<h1>Github</h1>
<p>Git:本地管理库</p>
<p>Github:在线管理库</p>
<h2>5.1 GitHub 在线代码管理</h2>
<p>1. 添加在线版本库 repository</p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130081150631-584331828.png" alt="" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130081504356-831437113.png" alt="" width="536" height="529" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>2. 将本地管理库连接到在线管理库</p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130082231238-292847700.png" alt="" width="872" height="489" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>3. 上传成功</p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130082412805-104510728.png" alt="" width="712" height="281" loading="lazy"></p>
<p>&nbsp;</p>
<p>4. 查看文件历史(commit)</p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130082526468-1370820767.png" alt="" width="857" height="231" loading="lazy"></p>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130082544628-1161739924.png" alt="" width="842" height="338" loading="lazy"><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130082645756-2064801297.png" alt="" width="841" height="244" loading="lazy"></p>
<p>&nbsp;</p>
<p>5. 本地更新推送至 github</p>
<div class="cnblogs_code"><img src="https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" id="code_img_closed_a52389b6-2aaf-40e0-8e8a-df6da652c710" class="code_img_closed"><img src="https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" id="code_img_opened_a52389b6-2aaf-40e0-8e8a-df6da652c710" class="code_img_opened" style="display: none">
<div id="cnblogs_code_open_a52389b6-2aaf-40e0-8e8a-df6da652c710" class="cnblogs_code_hide">
<pre><span style="color: rgba(0, 128, 128, 1)"> 1</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)"> 2</span> <span style="color: rgba(128, 0, 128, 1)">1</span><span style="color: rgba(0, 0, 0, 1)">.py添加一行代码:# happy github
</span><span style="color: rgba(0, 128, 128, 1)"> 3</span> <span style="color: rgba(128, 0, 0, 1)">"""
</span><span style="color: rgba(0, 128, 128, 1)"> 4</span> $ git commit -am <span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">change 5</span><span style="color: rgba(128, 0, 0, 1)">"</span>
<span style="color: rgba(0, 128, 128, 1)"> 5</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)"> 6</span> change <span style="color: rgba(128, 0, 128, 1)">5</span>
<span style="color: rgba(0, 128, 128, 1)"> 7</span><span style="color: rgba(128, 0, 128, 1)">1</span> <span style="color: rgba(0, 0, 255, 1)">file</span> changed, <span style="color: rgba(128, 0, 128, 1)">1</span> insertion(+<span style="color: rgba(0, 0, 0, 1)">)
</span><span style="color: rgba(0, 128, 128, 1)"> 8</span>
<span style="color: rgba(0, 128, 128, 1)"> 9</span> $ git push -<span style="color: rgba(0, 0, 0, 1)">u origin main
</span><span style="color: rgba(0, 128, 128, 1)">10</span> <span style="color: rgba(0, 0, 0, 1)"># 输出
</span><span style="color: rgba(0, 128, 128, 1)">11</span> Enumerating objects: <span style="color: rgba(128, 0, 128, 1)">5</span>, <span style="color: rgba(0, 0, 255, 1)">done</span><span style="color: rgba(0, 0, 0, 1)">.
</span><span style="color: rgba(0, 128, 128, 1)">12</span> Counting objects: <span style="color: rgba(128, 0, 128, 1)">100</span>% (<span style="color: rgba(128, 0, 128, 1)">5</span>/<span style="color: rgba(128, 0, 128, 1)">5</span>), <span style="color: rgba(0, 0, 255, 1)">done</span><span style="color: rgba(0, 0, 0, 1)">.
</span><span style="color: rgba(0, 128, 128, 1)">13</span> Delta compression using up to <span style="color: rgba(128, 0, 128, 1)">16</span><span style="color: rgba(0, 0, 0, 1)"> threads
</span><span style="color: rgba(0, 128, 128, 1)">14</span> Compressing objects: <span style="color: rgba(128, 0, 128, 1)">100</span>% (<span style="color: rgba(128, 0, 128, 1)">3</span>/<span style="color: rgba(128, 0, 128, 1)">3</span>), <span style="color: rgba(0, 0, 255, 1)">done</span><span style="color: rgba(0, 0, 0, 1)">.
</span><span style="color: rgba(0, 128, 128, 1)">15</span> Writing objects: <span style="color: rgba(128, 0, 128, 1)">100</span>% (<span style="color: rgba(128, 0, 128, 1)">3</span>/<span style="color: rgba(128, 0, 128, 1)">3</span>), <span style="color: rgba(128, 0, 128, 1)">326</span> bytes | <span style="color: rgba(128, 0, 128, 1)">326.00</span> KiB/s, <span style="color: rgba(0, 0, 255, 1)">done</span><span style="color: rgba(0, 0, 0, 1)">.
</span><span style="color: rgba(0, 128, 128, 1)">16</span> Total <span style="color: rgba(128, 0, 128, 1)">3</span> (delta <span style="color: rgba(128, 0, 128, 1)">0</span>), reused <span style="color: rgba(128, 0, 128, 1)">0</span> (delta <span style="color: rgba(128, 0, 128, 1)">0</span>), pack-reused <span style="color: rgba(128, 0, 128, 1)">0</span>
<span style="color: rgba(0, 128, 128, 1)">17</span> To https:<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">github.com/vincent-lin89/git-demo.git</span>
<span style="color: rgba(0, 128, 128, 1)">18</span>    2d1961f..b888fe8main -&gt;<span style="color: rgba(0, 0, 0, 1)"> main
</span><span style="color: rgba(0, 128, 128, 1)">19</span> Branch <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">main</span><span style="color: rgba(128, 0, 0, 1)">'</span> set up to track remote branch <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">main</span><span style="color: rgba(128, 0, 0, 1)">'</span> from <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">origin</span><span style="color: rgba(128, 0, 0, 1)">'</span>.</pre>
</div>
<span class="cnblogs_code_collapse">View Code</span></div>
<p><img src="https://img2020.cnblogs.com/blog/1681860/202011/1681860-20201130083758829-1893874872.png" alt="" width="957" height="273" loading="lazy"></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h1>参考资料</h1>
<p>莫烦Python</p>
<p>https://mofanpy.com/tutorials/others/git/</p>
<p>官方文档</p>
<p>https://git-scm.com/about</p>
<p>XX.GIT</p>
<p>http://bramus.github.io/ws2-sws-course-materials/xx.git.html#/</p>
<p>Bitbucket</p>
<p>https://www.atlassian.com/git/tutorials</p><br><br>
来源:https://www.cnblogs.com/blue-lin/p/14059251.html
頁: [1]
查看完整版本: 【Github】Git 简易教程