【雜項】利用CUDA實現tensorflow的gpu加速——以NXP的eIQ Portal Command line環境為例
Git Bash/Ubuntu Terminal快捷鍵
- 複製:
ctrl + insert
/shift + ctrl + c
- 貼上:
shift + insert
/shift + ctrl + v
Git 命令
Git初始化與幫助
-
設定名字和郵箱
$ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"
-
檢視當前編輯者姓名和郵箱
$ git config user.name $ git config user.email
-
檢視git工具版本
$ git version # or $ git --version
建立repository
-
建立空的Git倉庫
-
預設,初始分支名為master:
$ git init
-
指定初始分支名:
$ git init --initial-branch=<branch name> # e.g. $ git init --initial-branch=main
-
-
新增檔案(夾):
$ git add <fils>/<directory>
特殊:add所有檔案
$ git add .
-
提交檔案:(帶說明)
$ git commit -m "commit instructions"
提交檔案的說明可以同時針對多個檔案:
$ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files."
增刪改查
-
檢視倉庫狀態(是否有檔案被修改未add,add後未commit;即工作區、暫存區、版本庫間區別):
$ git status
-
檢視工作區與暫存區的區別:
$ git diff
檢視工作區和版本庫的區別:
$ git diff HEAD -- file
-
git log
(檢視commit歷史資訊)相關:-
基本命令(不帶引數):
$ git log
-
commit在一行內顯示:
$ git log --pretty=oneline # or $ git log --oneline
-
用圖線展示branch歷史:
$ git log --graph --pretty=oneline
-
縮短commit id:
$ git log --abbrev-commit
-
展示最新n次commit:
$ git log -n
-
-
檢視輸入的命令歷史:(來確定要回到未來的哪個版本)
$ git reflog
-
回退與撤銷
-
回退(版本庫)版本——在committed(版本庫)中切換:
-
HEAD:當前版本
-
HEAD^:上一個版本
-
HEAD^^:上上個版本
-
HEAD~100:上100個版本
回退上一個版本:
$ git reset --hard HEAD^
根據版本號回退到制定版本(包括"未來"的版本,下面1094a為版本號前5位):
$ git reset --hard 1094a
-
-
撤銷工作區修改——從工作區回退到最近一次commit(版本庫)或add(暫存區)的狀態:
即直接丟棄工作區:(checkout還有其他用法:見下面恢復從版本庫刪除的某個檔案)
$ git checkout -- file
或
$ git restore file
-
撤銷暫存區修改——將暫存區修改撤銷,放回工作區:
即丟棄暫存區,放回工作區(工作區可以進一步丟棄):
$ git reset HEAD file
或
$ git restore --staged file
-
-
從版本庫刪除某個檔案(本地,即工作區也會一起被刪除):
$ git rm file $ git commit -m "message"
若在工作區誤刪某個檔案,可以通過如下命令從版本庫恢復到工作區:
$ git checkout -- file
或:
$ git restore file
刪除與修改命令相同的原因:刪除也是一種改變
遠端倉庫
預備工作
-
注:筆記中使用
SSH
協議,github還支援HTTP
協議。 -
準備工作步驟
-
進入使用者主目錄(c:Users/UserName):
$ cd ~
-
建立SSH Key:
$ ssh-keygen -t rsa -C "[email protected]"
一路回車後(一開始會問要不要設定密碼,回車即不需要)在/.ssh中有
id_rsa
(私鑰)和id_rsa.pub
(公鑰)。 -
在Github設定SSH Key:填上任意Title,在Key文字框裡貼上
id_rsa.pub
檔案的內容。 -
補:設定新SSH
進入
.ssh
資料夾後,輸入命令:ssh-keygen -t rsa -b 4096 -C "[email protected]"
按一次回車後會問:
Overwrite (y/n)?
,輸入y
後步驟同上。
-
本地庫→遠端倉庫
-
首次將本地庫push到遠端庫上:(在github中新建了
GitLearningNotes
這一repository)在本地對應倉庫執行命令:
$ git remote add origin [email protected]:<github name>/<repository name>.git
e.g.:
$ git remote add origin [email protected]:NormalLLer/GitLearningNotes.git $ git remote add origin [email protected]:oo_2022/pre_2022_2_20231198_pre2_task2.git
然後:
$ git push -u origin master
-
將本地庫push到遠端庫origin:
-
格式一:(預設遠端庫分支名與本地分支名相同)
$ git push <remote name> <local branch name> $ git push origin master # 將本地當前分支push到origin庫的master分支上
-
格式二:(重新命名遠端庫分支名)
$ git push <remote name> <local branch name>:<remote branch name> # 將local-branch推送到remote並改名為remote-branch-name
-
注:可用
--force
引數強行push,但有風險!# e.g. $ git push --force javarepo main
-
遠端倉庫→本地庫
-
從遠端庫克隆(首次):
# git clone <repo:local/SSH/HTTP> $ git clone [email protected]:<Github name>/<repository name>.git
-
獲取遠端倉庫更新(但不與本地庫合併):
$ git fetch <remote name>
-
(在fetch後)將其的某個分支與本地當前分支合併:
$ git merge <remote name>/<remote branch name>
-
以上兩個命令的合併:
$ git pull <remote name> <remote branch name>:<local branch name> # or $ git pull <remote name> <remote branch name> # or $ git pull
-
退出合併:(恢復合併前狀態)
$ git merge --abort
其它
-
檢視遠端庫資訊:
$ git remote # or $ git remote -v
-
刪除遠端庫:(指解除本地庫與遠端庫的繫結)
$ git remote rm name # e.g: $ git remote rm origin
-
刪除遠端庫某個分支:
$ git push <remote name> --delete <remote branch name>> # e.g. $ git push origin --delete testbranch2
-
當遠端倉庫(別人修改)和本地倉庫(自己修改)衝突時:
- 方法一:先pull(fetch + merge)下來後修改再push(根據git bash的輸出反饋進行操作)
- 方法二:採用rebase(略)
分支管理
-
建立分支:
$ git branch <name>
-
切換分支:
$ git checkout <name> # or $ git switch <name>
-
修改本地分支名:
$ git branch -m <old> <new> # e.g. $ git branch -m master main # 將master修改為main
-
建立並切換分支:
$ git checkout -b <name> # or $ git switch -c <name>
-
建立並將指定遠端分支clone到本地:
$ git switch -c <local branch name> <remote name>/<remote branch name> # e.g. $ git switch -c localtest origin/testbranch
-
檢視分支:
-
檢視本地庫分支:
$ git branch
-
檢視遠端庫分支:
$ git branch -r
-
檢視所有分支:
$ git branch -a
-
-
fast forward模式與name分支合併(合併後log中無分支名字):
$ git merge <name>
-
刪除本地分支:
$ git branch -d <name>
-
在個
git log
後新增引數:$ git log --graph --pretty=oneline --abbrev-commit -n # --graph: 用ascii圖表示分支合併歷史 # --abbrev-commit: 縮寫前面序號SHA (abbreviation n.縮寫) # -n: 顯示最新n條
-
普通模式合併分支(合併後log有分支名記錄):
$ git merge --no-ff -m "annotation" <branch name>
-
將本地
lb
分支與遠端rb
分支建立連結:$ git branch --set-upstream-to=<remote name>/<remote branch name> <local branch name> # e.g. $ git branch --set-upstream-to=origin/rb lb
Stash 相關
注:stash v. 藏
-
儲藏當前修改(包括工作區和暫存區):
$ git stash # or add annotations by "save" $ git stash save "annotations"
-
恢復stash:
# 將快取堆疊中的第一個stash彈出並刪除 $ git stash pop
# 將快取堆疊中的第一個stash輸出但不刪除 $ git stash apply # 輸出制定stash $ git stash apply stash@{0} # e.g. 輸出最新
# 刪除stash $ git stash drop $ git stash drop stash@{0}
-
檢視現有stash:
$ git stash list
標籤相關
-
建立標籤
$ git tag -a <tag name> -m "annotations" <commit id>
-
形式一:在最新commit建立tag
$ git tag <name> # e.g. $ git tag v1.0
-
形式二:在指定
commit id
建立tag$ git tag <name> <id> # e.g. $ git tag v1.1 f52c633
-
形式三:在指定
commit id
建立帶有說明文字的tag$ git tag -a <tag name> -m "annotations" <commit id> # e.g. $ git tag -a v1.2 -m "create tag v1.2 in id:1094ab" 1094ab
-
-
檢視標籤列表:
$ git tag
-
檢視tag具體說明:(tag說明文字、commit說明文字等)
$ git show <tag name>
-
本地倉庫刪除標籤:
$ git tag -d <tag name>
-
本地與遠端倉庫的相關資訊互動
-
推送指定標籤到遠端:
$ git push <remote name> <tag name> # e.g. $ git push origin v1.0
-
推送所有標籤到遠端:
$ git push <remote name> --tags
-
從遠端倉庫刪除指定tag:
-
先從本地刪除(設刪除v0.9)
$ git tag -d v0.9
-
再刪除遠端tag:
$ git push <remote name> :refs/tags/<tag> # e.g. $ git push origin :refs/tags/v0.9
-
-