<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: thomas chu</title>
    <description>The latest articles on DEV Community by thomas chu (@thomaschu30).</description>
    <link>https://dev.to/thomaschu30</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F384322%2Fd4c08531-d846-4cf8-ab16-abbbaff1138b.gif</url>
      <title>DEV Community: thomas chu</title>
      <link>https://dev.to/thomaschu30</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thomaschu30"/>
    <language>en</language>
    <item>
      <title>tailwind vs windicss</title>
      <dc:creator>thomas chu</dc:creator>
      <pubDate>Sun, 15 Aug 2021 09:37:27 +0000</pubDate>
      <link>https://dev.to/thomaschu30/tailwind-vs-windicss-51oa</link>
      <guid>https://dev.to/thomaschu30/tailwind-vs-windicss-51oa</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;信相前端工程師在切版下過一點功夫的人，一定都聽過 tailwind css ，但不一定有聽過 windicss ，這兩個東西都被稱作是下一個世代的 css ，今天來比較兩個的差異。&lt;/p&gt;

&lt;p&gt;本文章不會說明太多的寫法，只會針對差別來作一個比較&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  tailindcss vs windicss 看看誰比較狂
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Tailwind&lt;/th&gt;
&lt;th&gt;Windicss&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;支援度&lt;/td&gt;
&lt;td&gt;Angular, Vue,React, Nuxt, Next, larval&lt;/td&gt;
&lt;td&gt;Vue, Nuxt, Svelte&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;斷點 Break point&lt;/td&gt;
&lt;td&gt;只能依照 config 的法式撰寫&lt;/td&gt;
&lt;td&gt;輕鬆的變換 breakpointer 的寫法&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSS&lt;/td&gt;
&lt;td&gt;一般你想的到都有支援&lt;/td&gt;
&lt;td&gt;比起 tailwind 有更多的 css 支援度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;討論度&lt;/td&gt;
&lt;td&gt;較多人討論，進版進度快&lt;/td&gt;
&lt;td&gt;討論度沒有 tailwind 高&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;未來發展&lt;/td&gt;
&lt;td&gt;開始有 UI 系統出現&lt;/td&gt;
&lt;td&gt;在寫法上有更好的歸類方式&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  斷點 Break point
&lt;/h2&gt;

&lt;h3&gt;
  
  
  tailwind
&lt;/h3&gt;

&lt;p&gt;預設是使用 min-width 的方式去作切版，也可以自己設定 max-width&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// tailwind.config.js&lt;/span&gt;
&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;screens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;sm&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;640px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c1"&gt;// =&amp;gt; @media (min-width: 640px) { ... }&lt;/span&gt;

      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;md&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;768px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c1"&gt;// =&amp;gt; @media (min-width: 768px) { ... }&lt;/span&gt;

      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lg&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1024px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c1"&gt;// =&amp;gt; @media (min-width: 1024px) { ... }&lt;/span&gt;

      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;xl&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1280px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c1"&gt;// =&amp;gt; @media (min-width: 1280px) { ... }&lt;/span&gt;

      &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2xl&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1536px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="c1"&gt;// =&amp;gt; @media (min-width: 1536px) { ... }&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  windicss
&lt;/h3&gt;

&lt;p&gt;預設也和 tailwind 一樣，但可用 &lt;code&gt;&amp;lt;&lt;/code&gt; &lt;code&gt;@&lt;/code&gt; ，直接變為 max-width 和 max-width &amp;amp; min-width，可以說是非常的方便。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;sm:bg-red-500&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;sm:hover:bg-green-300&lt;/span&gt; &lt;span class="na"&gt;dark:bg-white&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://windicss.org/utilities/variants.html#screen-variants"&gt;windicss docs&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CSS
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;tailwind css&lt;/code&gt; 基本上可說是該有的都有了，只是&lt;code&gt;windicss&lt;/code&gt; 更狂，有更多的 effect css ，如下列：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://windicss.org/utilities/effects.html#mix-blend-mode"&gt;Mix Blend Mode&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://windicss.org/utilities/behaviors.html#caret-color"&gt;Caret Color&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://windicss.org/utilities/behaviors.html#image-rendering"&gt;Image Rendering&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://windicss.org/utilities/behaviors.html#list-style-type"&gt; List Style Type&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  討論度
&lt;/h2&gt;

&lt;p&gt;Tailwind css 在這個上面比較熱絡，也有 youtube, Facebook 的社群可以參考，windicss 在這個上更比相較比較遜色一點，雖然在 tailwind 還沒有 jit mode 的時候，tailwind 的作者還去請教 windicss 的作者是如何作到速度不變慢，還可以持續開發。&lt;/p&gt;

&lt;h2&gt;
  
  
  未來發展
&lt;/h2&gt;

&lt;p&gt;Tailwind 在 1.9 到 2.0 可以說是有一個很大的跳躍，因為多了一個 jit mode 加速了，編譯的速度，不然過去 complier 的時候絕對讓你懷疑人生，在來也加上了 UI 系統，雖然自己切的東西最可以改，但是有時候為速度，還是要有一個寫的東西，這樣子比較可加速開發。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://tailwindui.com/"&gt;Beautiful UI components&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.tailwindcss.com/"&gt;tailwindcss mile stone&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Windicss 在寫法上越來越有規劃的去撰寫你的&lt;code&gt;css&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-blue-400 hover:bg-blue-500 text-sm text-white font-mono font-light py-2 px-4 rounded border-2 border-blue-200 dark:bg-blue-500 dark:hover:bg-blue-600"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Button
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;在這個瞬間你可以沒有辦法看到這個 &lt;code&gt;button&lt;/code&gt; 的樣式，但是如果你換成這樣子呢？&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; 
    &lt;span class="na"&gt;bg=&lt;/span&gt;&lt;span class="s"&gt;"blue-400 hover:blue-500 dark:blue-500 dark:hover:blue-600"&lt;/span&gt;
  &lt;span class="na"&gt;text=&lt;/span&gt;&lt;span class="s"&gt;"sm white"&lt;/span&gt;
  &lt;span class="na"&gt;font=&lt;/span&gt;&lt;span class="s"&gt;"mono light"&lt;/span&gt;
  &lt;span class="na"&gt;p=&lt;/span&gt;&lt;span class="s"&gt;"y-2 x-4"&lt;/span&gt;
  &lt;span class="na"&gt;border=&lt;/span&gt;&lt;span class="s"&gt;"2 rounded blue-200"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Button
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;真的是很想給 windicss 一個起立掌聲 ( 拍手 ) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://windicss.org/posts/v30.html"&gt;WindiCSS v3.0 now in Beta&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  小結
&lt;/h2&gt;

&lt;p&gt;這兩個神器只能說，各有好壞，只是 windicss 的支援度，可能在開發專案上遇到一點點界線，不然其它的地方覺得都是很優秀的，但沒辦法現行的話可能還是會以 tailwind 為首選，同時也是希望 windicss 可以把這個小缺點補上。&lt;/p&gt;

&lt;h2&gt;
  
  
  相關文章
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://lucas-yang.vercel.app/post/windicss/"&gt;Windi CSS - Tailwind CSS 的上位替代&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tailwindcss</category>
      <category>windicss</category>
    </item>
    <item>
      <title>Git 時光機</title>
      <dc:creator>thomas chu</dc:creator>
      <pubDate>Sun, 15 Aug 2021 03:42:23 +0000</pubDate>
      <link>https://dev.to/thomaschu30/git-1el4</link>
      <guid>https://dev.to/thomaschu30/git-1el4</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Git 可以說是比寫 code 還要重要的東西，現在的專案基本上都要共同協作，所以如何避免衝突，不在開發的時候發生災難，可以說是非常的重要，寫 code 寫不好可以問人，但 Git 不行的話可能連工作都沒有辦法一起 co-work 。&lt;/p&gt;

&lt;p&gt;另外如果對 &lt;code&gt;vim&lt;/code&gt; 還沒有很熟的話建議去多了解一下 &lt;code&gt;vim&lt;/code&gt; 的編輯、儲存、查尋方式，對你在使用 git 上會更加的得心應手。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  Git 常用commend line
&lt;/h1&gt;

&lt;h2&gt;
  
  
  git 起手式
&lt;/h2&gt;

&lt;p&gt;在專案位置下初使化 git ，表示可開始用 git 來管理你的專案，此時專案中會出現一個隱藏資料夾  &lt;code&gt;.git&lt;/code&gt; ，然而你在開發的過程中也一定會有你不想要推到 remote 的東西，這個時候你可以建立一個 &lt;code&gt;.gitignore&lt;/code&gt; 的檔案，在裡面編寫你不想要上傳的文件 or 資料夾&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git init    
&lt;span class="c"&gt;# .gitignore 檔案&lt;/span&gt;
node_modules &lt;span class="c"&gt;# 資料夾不推上 git&lt;/span&gt;
/dist 
.env &lt;span class="c"&gt;# 檔案不推上 git&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;在來你需要對專案說，你是誰，所以把你的 email 和名稱和 git 說，因此在 git.config 裡面建立資訊&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="c"&gt;# 查看你目前的 config 清單&lt;/span&gt;
git config &lt;span class="nt"&gt;--list&lt;/span&gt;

&lt;span class="c"&gt;# 建立名稱&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name &lt;span class="o"&gt;[&lt;/span&gt;YOUR_NAME] 

&lt;span class="c"&gt;# 建立 email&lt;/span&gt;
git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email &lt;span class="o"&gt;[&lt;/span&gt;YOUT_EMAIL] 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  clone 專案
&lt;/h2&gt;

&lt;p&gt;開發其它的專案，透過 clone 的方式，把 .git 的檔案一起抓下來&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone &lt;span class="o"&gt;[&lt;/span&gt;YOUR_PROJECT]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  加入 remote
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 查詢remote相關指令&lt;/span&gt;
git remote &lt;span class="nt"&gt;-h&lt;/span&gt; 

&lt;span class="c"&gt;# 將遠端數據庫的名稱從 &amp;lt;old&amp;gt; 改為 &amp;lt;new&amp;gt; &lt;/span&gt;
git remote rename &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;old&amp;gt;&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;new&amp;gt;&lt;span class="sb"&gt;`&lt;/span&gt; 

&lt;span class="c"&gt;# 在 &amp;lt;newurl&amp;gt; 內指定遠端數據庫的新地址&lt;/span&gt;
git remote set-url &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;name&amp;gt;&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;newurl&amp;gt;&lt;span class="sb"&gt;`&lt;/span&gt; 

&lt;span class="c"&gt;# 加入 remote 資料&lt;/span&gt;
git remote add origin &lt;span class="o"&gt;[&lt;/span&gt;YOUR_PROJECT]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  切換遠端分支
&lt;/h2&gt;

&lt;p&gt;首先你應該不會知道專案中所有的 br 叫什麼名稱，所以可透過&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 查看所有 local 遠端 br&lt;/span&gt;
git branch &lt;span class="nt"&gt;-a&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;在確認完之後，在回到專案的位置上，進行切換分支&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;BRANCH_NAME] &lt;span class="o"&gt;[&lt;/span&gt;origin/BRANCH_NAME]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  加入暫存區
&lt;/h2&gt;

&lt;p&gt;把資料加入暫存區&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="c"&gt;# add all file stage&lt;/span&gt;
git add &lt;span class="nb"&gt;.&lt;/span&gt;

&lt;span class="c"&gt;# after everyone check, add file to stage&lt;/span&gt;
git add &lt;span class="nt"&gt;-p&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;取消加入暫存區&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  加入本地儲存區
&lt;/h2&gt;

&lt;p&gt;把資料加入本地儲存區，方法其實有很多種，但主要就是要把你的資料寫到 git 裡面，如果你所要寫的東很多的話，建議你可以用 &lt;code&gt;vim&lt;/code&gt; 的方式去作編輯歐&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="c"&gt;# 會直接進到 vim IDE 中&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s1"&gt;'msg content'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;退回本地儲存區&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# get commit id&lt;/span&gt;
git log 

&lt;span class="c"&gt;# 本地數據庫不見&lt;/span&gt;
git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;^&lt;span class="sb"&gt;`&lt;/span&gt; 

&lt;span class="c"&gt;# 本地數據庫還在&lt;/span&gt;
git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;^&lt;span class="sb"&gt;`&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;commit 訊息邏輯&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;以大寫開頭&lt;/li&gt;
&lt;li&gt;以&amp;lt;動詞&amp;gt; + &amp;lt;受詞&amp;gt; + &amp;lt;內容&amp;gt; 的文法撰寫&lt;/li&gt;
&lt;li&gt;內容不宜過長&lt;/li&gt;
&lt;li&gt;內容需要據有代表性&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  stash
&lt;/h2&gt;

&lt;p&gt;會使用它最常有的情境是，你開發到一半，但是 BOSS 請你趕快的去處理另一件是，這個時候你也還沒有到可下 commit 的時候，這個時候，可用 stash 把你開發的 code 先到一個地方，之後只要回來，在把東西 stash 回來便可繼續開發。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;在 stash 之前建議先把所有的 code 放到暫區，因有時候我們是新建檔，直接 stash 的話新檔就會被遺留在，原本的 br 上面&lt;/p&gt;


&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="nb"&gt;.&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;為了確保我們所寫的東西不要被分別放在不同的 stash list 裡面&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;暫時存現狀&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash save &lt;span class="s1"&gt;'msg ...'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;顯示暫存清單&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;回復暫清單，通當你會去看一下你的清單有什麼，然後確定是第幾個之後用 &lt;code&gt;stash@{0}&lt;/code&gt; 的方式來還原你想的的暫存。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;這裡的 0 是表示，你最一次 stash 起來的東西，1 的話就是倒數第二次的東西，依此類推&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="c"&gt;# 拿回最後一次 stash 的 code&lt;/span&gt;
git stash pop shash@&lt;span class="o"&gt;{&lt;/span&gt;0&lt;span class="o"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# delete stash data&lt;/span&gt;
git stash pop &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;shash ID&amp;gt;&lt;span class="sb"&gt;`&lt;/span&gt; 

git stash apply &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;shash ID&amp;gt;&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;刪除暫檔&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git stash drop &lt;span class="sb"&gt;`&lt;/span&gt;&amp;lt;shash ID&amp;gt;&lt;span class="sb"&gt;`&lt;/span&gt;
git stash clear &lt;span class="c"&gt;# clear all &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  合併分之
&lt;/h1&gt;

&lt;p&gt;通常在有規模的專案下面開發，比較不會用到 merge ，因為主要都是透過 lib 去發 merge request ，而不是自己在本地，就把 code merged 到其它的分支。&lt;/p&gt;

&lt;h2&gt;
  
  
  merge
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git merge &lt;span class="o"&gt;[&lt;/span&gt;BRANCH_NAME]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;但是我們在拉分支的時候，其實就是常常在用 merge 的指令，只是被合併在一起了。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  rebase
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git rebase &lt;span class="o"&gt;[&lt;/span&gt;BRANCH_NAME]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;這兩個都是把 br 作合並的效果，但是 rebase 是直接把原本的分支合回到另一個 br 的分支上，變成一個，也就是說，有些 commit 你可能會沒有辦法在 tree 上面直接的看到，因為被合到另一個 tree 上面了&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1&gt;
  
  
  刪除 branch
&lt;/h1&gt;

&lt;p&gt;Coming soon ... &lt;/p&gt;

&lt;h1&gt;
  
  
  遠端數據庫
&lt;/h1&gt;

&lt;h2&gt;
  
  
  fetch
&lt;/h2&gt;

&lt;p&gt;主要只執行拉 code 的動作，但它不會把 code 和你現在的 br 進行合併，所以執行完後你是會在 &lt;code&gt;HEAD&lt;/code&gt; 上面的&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 把你在遠端的 br 拉下來&lt;/span&gt;
git fetch 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  pull
&lt;/h2&gt;

&lt;p&gt;那 pull 的這個動作，就是我們把 fetch + merge 的動作一起作完，把 code 拉下來，然後 merge 到你現在的 br 中&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# git fetch + git merge &lt;/span&gt;
git pull 

&lt;span class="c"&gt;# 當然你也可選擇 rebase &lt;/span&gt;
git pull &lt;span class="nt"&gt;--rebase&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  push
&lt;/h2&gt;

&lt;p&gt;把你所 commit 好的的檔案往上傳到 remote 端，但是需先確認是否已設定好 origin 的 remote 位置&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &lt;span class="o"&gt;[&lt;/span&gt;BRANCH_NAME]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  tag
&lt;/h1&gt;

&lt;p&gt;若要添加標示標籤，可以在 tag 命令加上 -a 參數執行，執行後會啟動編輯器，請輸入要給予的註解。也可以用 -am 參數來直接添加註解。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;TAG_NAME]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;在 HEAD 指向的提交裡增加名為 &lt;code&gt;[TAG_NAME]&lt;/code&gt; 的標籤，請執行以下的命令。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag &lt;span class="nt"&gt;-am&lt;/span&gt; &lt;span class="s1"&gt;'msg...'&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;TAG_NAME]
git tag &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="c"&gt;#  可以顯示出標籤和註解&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Git Bisect
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;希望你一輩子都不要用到這個東西。&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git bisect start &lt;span class="o"&gt;[&lt;/span&gt;BAD_COMMIT] &lt;span class="o"&gt;[&lt;/span&gt;GOOD_COMMIT]
&lt;span class="c"&gt;# 開始後將自動 checkout 到要檢查的 commit &lt;/span&gt;
&lt;span class="c"&gt;# 請執行以下指令標記正常 or 錯誤&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://www.gss.com.tw/blog/%E4%BD%BF%E7%94%A8-git-bisect-%E5%BF%AB%E9%80%9F%E6%89%BE%E5%88%B0%E7%AC%AC%E4%B8%80%E5%80%8B%E6%9C%89%E5%95%8F%E9%A1%8C%E7%9A%84-commit"&gt;參考文章&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  fork 專案
&lt;/h1&gt;

&lt;p&gt;在 &lt;code&gt;github&lt;/code&gt; 選擇 fork ，需在把你的 remote 專案名稱修正，因為通常 origin 指的是自己的開發 remote。然後在把 fork 的 repositories 設定到你的 origin 裡面。&lt;/p&gt;

&lt;p&gt;確認 remote 的名稱 ⇒ 修正名稱 ⇒ 加入新的fork repositories ⇒ 確認 remote 的名稱&lt;/p&gt;

&lt;h1&gt;
  
  
  Git alais
&lt;/h1&gt;

&lt;p&gt;Coming soon ... &lt;/p&gt;

&lt;h1&gt;
  
  
  檢查 git
&lt;/h1&gt;

&lt;p&gt;下列這些指令是在你開發到一半，想要回去查東西時很用的指令&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="c"&gt;# 看一下還有多少東西沒有進暫存區&lt;/span&gt;
git status

&lt;span class="c"&gt;# 確認這個 br commit 的狀況&lt;/span&gt;
git log 

&lt;span class="c"&gt;# 確認一下遠端&lt;/span&gt;
git remote &lt;span class="nt"&gt;-v&lt;/span&gt;

&lt;span class="c"&gt;# stash 的清單&lt;/span&gt;
git stash list

&lt;span class="c"&gt;# 可以檢看一下指令&lt;/span&gt;
git remote &lt;span class="nt"&gt;-h&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  參考文章
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://zlargon.gitbooks.io/git-tutorial/content/file/move.html"&gt;搬移檔案&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.notion.so/git-commit-message-a18a8a5cc0cb4cc48c4c49c82da4cabe"&gt;git commit message 的格式&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
    </item>
  </channel>
</rss>
