1. 程式人生 > 其它 >【雜項】利用CUDA實現tensorflow的gpu加速——以NXP的eIQ Portal Command line環境為例

【雜項】利用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協議。

  • 準備工作步驟

    1. 進入使用者主目錄(c:Users/UserName):

      $ cd ~
      
    2. 建立SSH Key:

      $ ssh-keygen -t rsa -C "[email protected]"
      

      一路回車後(一開始會問要不要設定密碼,回車即不需要)在/.ssh中有id_rsa(私鑰)和id_rsa.pub(公鑰)。

    3. 在Github設定SSH Key:填上任意Title,在Key文字框裡貼上id_rsa.pub檔案的內容。

    4. 補:設定新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
        

相關資料