Git命令
1. 註冊Github賬號,讓Git 知道這臺電腦做的修改要連結到哪一個使用者
git config --global user.name "<Your Name>"
git config --global user.email "< [email protected] >"
2. 建立本機repo,初始化git管理
mkdir Local_repo
cd Local_repo
mkdir cuda_lstm_forward_v1
mkdir cuda_lstm_forward_v2
git init
//列出專案資料夾下的檔案和資料夾(-l參數爲列出詳細資料,-a爲列出隱藏資料夾)
ls -la
3. 將repo add到cashed裏
git add . //添加所有文件
[zhipeng @ cuda_repo]# git add cuda_lstm_forward_v1/
[zhipeng @ cuda_repo]# git add cuda_lstm_forward_v2/
[zhipeng @ cuda_repo]# git status
位於分支 master
尚無提交
要提交的變更:
(使用 "git rm --cached <文件>..." 以取消暫存)
新文件: cuda_lstm_forward_v1/00_lstm.cu
新文件: cuda_lstm_forward_v1/BUILD.sh
新文件: cuda_lstm_forward_v1/cuda_lstm_forward.cc
新文件: cuda_lstm_forward_v2/00_lstm.cu
新文件: cuda_lstm_forward_v2/BUILD.sh
新文件: cuda_lstm_forward_v2/cuda_lstm_forward.cc
新文件: cuda_lstm_forward_v2/cuda_lstm_forward.so
新文件: cuda_lstm_forward_v2/lib00_lstm.so
未跟蹤的文件:
(使用 "git add <文件>..." 以包含要提交的內容)
.DS_Store
//未commit時使用,即可恢復到檔案尚未加入暫存區
$ git rm --cached test.cc
- Cashed的作用:需要提交的文件修改通通放到暫存區,然後,一次性提交暫存區的所有修改,即下一步
4. 提交和撤回
//比較現在檔案和上次commit之間的差異,也就是說你做了哪些修改
$ git diff
// -m爲輸入commit message,也就是說這個commit內做了哪些事情
$ git commit -m "LSTM的加速,v1通用v2定製"
//HEAD^的意思是上一個版本,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100
git reset --soft HEAD^
–mixed
意思是:不刪除工作空間改動代碼,撤銷commit,並且撤銷git add . 操作
這個爲默認參數,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一樣的。
–soft
不刪除工作空間改動代碼,撤銷commit,不撤銷git add .
–hard
刪除工作空間改動代碼,撤銷commit,撤銷git add .
注意完成這個操作後,就恢復到了上一次的commit狀態。
順便說一下,如果commit註釋寫錯了,只是想改一下注釋,只需要:
git commit --amend
總結:
HEAD
指向的版本就是當前版本,因此,Git允許我們在已commit的版本的歷史之間穿梭,使用命令git reset --hard commit_id
。git checkout -- filename
的作用是把filename文件在工作區的修改撤銷到最近一次git add 或 git commit時的內容- 穿梭前,用
git log
可以查看提交歷史,以便確定要回退到哪個版本。 - 要重返未來,用
git reflog
查看命令歷史,以便確定要回到未來的哪個版本。
5. 將repository 做本機和遠端的連結
<remote網址>+.git
git remote add origin https://github.com/MintLucas/Cuda_lstm_forward.git
//將本地端程式push到遠端檔案庫<remote name>/<branch name>分支
$ git push -u origin master
參數-u
等同於--set-upstream
,只要成功設定好upstream後,第二次以後要上傳分支時,就只需要透過git push就可以了,事實上,$ git push -u origin master
可以拆解成
$ git push origin master
$ git checkout master
$ git branch -u origin/master
- 創建+切換分支:
git checkout -b <name>
或者git switch -c <name>
- 合併某分支到當前分支:
git merge <name>
- 刪除分支:
git branch -d <name>
6. 文件刪除
git rm test.txt
rm 'test.txt'
git commit -m "remove test.txt"
如果誤刪,使用git checkout -- <filename>
可從遠端恢復
git checkout
其實是用版本庫裏的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。