2017年4月14日 星期五

Git 常用指令筆記

Basic Workflow
git init 將當前目錄設為working directory
rm -rf .git 刪除git的追蹤

git status 顯示working directory中已修改檔案清單
-s 僅會顯示檔案名稱
-b 顯示分支的資訊
-s -b 僅顯示分支與檔案名稱

git add [filename] 註冊filename到staging area
git add . 註冊所有檔案

git diff 列出working directory與repository的差異
git diff [filename] 僅列出filename與repository的差異
git diff [commit1] [commit2] 比較commit1與commit2的差異

git commit 將staging area的檔案提交到repository
git commit --amend 可以用來修改上次的 commit內容及 log
git commit --amend --author="authorname <authoremil>" --no-edit 修改上次提交
的 Author,--no-edit代表不開啟編輯

git log 顯示commit的列表
git log --pretty=oneline 使用單行顯示commit的列表
gitk 使用圖形化界面顯示commit的列表


Git Config
git config --global user.name "[username]" git config --global user.email "[useremail]" 設定全局的 ~/.gitconfig設定檔中的使用者名稱及 email,通常在第一次使用 git時就設定

git config --local user.name "[username]" git config --local user.email "[useremail]" 設定此目錄 .git/config設定檔所要使用的使用者名稱及 email

git config --global --list git config --local --list 列出全局或此目錄設定檔中的設定

How to Backtrack
HEAD為最近一次的commit

git show 查看 commit的詳細記錄
ex: git show HEAD 查看最近一次commit的紀錄

git checkout HEAD [filename] 把在工作目錄中更改過的filename還原成最近commit的狀態

git checkout [commit_SHA] checkout到 commit_SHA。這時狀態為 dached HEAD state,意思是 HEAD指向某個
commit,而不是 branch。
git switch -
復原這個操作,將 HEAD重新指向 branch。
git switch -c [new_branch]
在此狀態下建立到新的 branch。

git reset [filename] 把在Staging Area中的filename移出Staging Area

git reset HEAD [filename] 把在Staging Area中的filename移出Staging Area並還原成最近的commit狀態

git reset [commit_SHA] 改變git log的history,將commit_SHA 變為最近的 commit,檔案移出 staging area

git reset --soft [commit_SHA] 將 HEAD指向 commit_SHA,不改變git log的history

git reset --hard [commit_SHA] 將 commit_SHA變成最近的 commit,移除之前所有的commit

git cherry-pick [commit_SHA] 將另一個 branch的 commit_SHA "摘下來",加進當前的branch

Git Branching
git branch 顯示目前所在分支

git branch [new_branch] 建立名為new_branch的branch
-d 刪除branch

git checkout [branch_name] 切換分支到branch_name
-b 建立名為 branch_name的分支,並切換到該分支

git merge [branch_name] 將branch_name所做的改變加到當前分支


Git Teamwork
git clone [remote_location] [clone_name] 將遠端的Repository(remote_location URL)複製到Local端命名為clone_name

git remote 顯示遠端Repository的詳細情況
git remote -v 顯示目前 remote所使用的名稱及 URL
git remote set-url [remote_name] [remote_url] 修改 remote所使用的 URL

git fetch 更新Local端Repository


標籤
git tag 列出標籤
git tag [tag_name] 輕量級標籤(lightweight)
git tag -a [tag_name] -m [message] commit_SHA 含附註標籤

git push origin [tag_name] 將標籤推送到遠端
git push --tags 推送所有標籤到遠端

Submodule
git submodule add [remote_location] [submodule_name] 將遠端的Repository(remote_location URL) 設為submodule,並放到submodule_name folder中

Patch
git format-patch -[n] 產生最近n個commit的patch

git format-patch [commit_SHA] 產生commit_SHA之後到最新commit的所有patch (不含commit_SHA)

git format-patch -1 [commit_SHA] 只產生commit_SHA的patch

git apply [patch] 匯入patch但不會commit
git apply --check [patch] 檢查patch是否能apply成功,不會做任何改動

git apply -R [patch] 撤銷 patch但不會commit

Stash
git stash push 將當前的修改存到 "stash entry",並恢復到 HEAD

2017年4月8日 星期六

製作含有USB3.0 Driver的Windows 7開機隨身碟

由於Windows 7本身並沒有集成各家廠商的USB3.0 Driver,所以在有些主機板只有USB3.0 port的情況下,會遇到沒有辦法安裝Windows 7的情況。

所以本篇介紹使用Windows 7* USB 3.0 Creator UtilityDISM,來製作含有USB3.0 Driver的Windows 7開機隨身碟,這樣就能夠使用USB Drive來安裝並操作Windows 7。

這兩種工具都需事先準備好可開機的Windows 7 USB Drive。


Windows 7* USB 3.0 Creator Utility

若工作機是Windows7,下載Win7-USB3.0-Creator-V3-Win7Admin版本。而Windows8.1及Windows10就下載Win7-USB3.0-Creator-V3。

此Utility只適用於Intel USB3.0公板Driver,Driver已經包在裡面,所以不用再另外下載。

1. 開啟Windows7* USB3.0 Creator Utility目錄,在USB_Drivers的目錄下就是此Utility所提供的USB3.0 Driver,另外Utility及DISM的使用方法可以參考Win7-USB3.0-Creator-Readme-v3.pdf。

2. 執行Installer_Creator.exe。

3. 在USB Drive Path選擇Windows 7開機隨身碟根目錄,並執行Create Image

4. 操作完成後,USB 3.0 Driver就被掛載到USB Drive中了。


DISM Graphical User Interface (GUI) Tool
DISM在使用前除了可開機的Windows 7隨身碟外,還需要到主機板廠商的網站下載支援該主機板的USB3.0 Driver。如果沒有的話,就要到Intel或AMD的網站下載適合主機板的公板Driver。要注意Driver是否支援Windows 7

以Intel公版的USB3.0 Driver為例。在Intel的下載頁面https://downloadcenter.intel.com,搜尋Intel® USB 3.0 eXtensible Host Controller Driver就能找到。

1. 建立工作目錄來方便我們操作DISM。例如D:\WIM用來放wim檔案,D:\WIM\MOUNT作為DISM的掛載點。並從下載好的Intel(R)_USB_3.0_eXtensible_Host_Controller_Driver中複製\Drivers\Win7\x64放在D:\WIM\USB3。

2. 從Windows7開機隨身碟的目錄\source複製我們要掛載driver的image檔,install.wim及boot.wim到D:\WIM。

3. 使用系統管理員權限執行DISM GUI.exe

4. 在Mount Control標籤頁,點擊Choose WIM,選擇剛放在D:\WIM下的install.wim。並依據USB Drive中的Windows 7版本選擇index號碼。
1 = Home Basic
2 = Home Premium
3 = Professional
4 = Ultimate

5. Choose Folder選擇D:\WIM\MOUNT作為Mount Location,並確認不要勾選Read Only

6. 執行Mount WIM,並等待一段時間完成。

7. 接著切換到Driver Management標籤頁,點擊Choose Driver,選擇放在D:\WIM\USB3的x64目錄。

8. 如果Driver是unsigned的話,勾選Force Unsigned,並確認有勾選Recurse。之後執行Add Drivers

9. 回到Mount Control標籤頁,點擊Dismount WIM。選擇YES確認變更,並等待一段時間完成。

10. 接著重複相似的步驟。在Mount Control標籤頁點擊Choose WIM,選擇D:\WIM下的boot.wimindex選擇2(Windows Setup。index 1為Windows PE)。Choose Folder選擇D:\WIM\MOUNT。一樣不勾選Read Only

11. 執行Mount WIM,並等待一段時間完成。

12. 切換到Driver Management標籤頁,點擊Choose Driver,選擇D:\WIM\USB3的x64目錄。

13.  如果Driver是unsigned的話,勾選Force Unsigned,並確認有勾選Recurse。之後執行Add Drivers

14. 回到Mount Control標籤頁,點擊Dismount WIM。選擇YES確認變更,並等待一段時間完成。

15. 最後再將修改過的install.wim及boot.wim複製回USB Drive的\source目錄下,取代原本的檔案,含有USB3.0 Driver的開機隨身碟就完成了。