1. 註冊github賬號,讓git 知道這台電腦做的修改要鏈結到哪乙個使用者
git config --global user.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
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
總結:
5. 將repository 做本機和遠端的鏈結
//將本地端程式push到遠端檔案庫/
分支$ 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
6. 檔案刪除git rm test.txt
rm 'test.txt'
git commit -m "remove test.txt"
如果誤刪,使用git checkout --
可從遠端恢復
git checkout
其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。
git 版本控制的一些命令
git add 暫存區的目錄樹會更新,同時將工作區修改或新增的內容寫到了物件庫乙個新物件,該物件的id被記錄在暫存區的檔案索引中,工作區後續的add 和 暫存區後續的commitf都更新到這個id對應的物件中 git commit 暫存區的目錄樹寫入物件庫,head指向新的暫存區的那個目錄樹。簡單理...
版本控制 SVN和GIT的一些使用感受
原本在學校跟隨導師做專案的時候,就一直在使用版本管理,主要是用來記錄專案的修改,專案成員之間的溝通和交流。使用的服務端是visual svn,客戶端是tortoisesvn,常用的tortoisesvn指令也僅限於svn update和svn commit,前者用來從伺服器更新,以期望檢視其他同學的...
Git 忽略一些檔案不加入版本控制
在git中如果想忽略掉某個檔案,不讓這個檔案提交到版本庫中,可以使用修改 gitignore 檔案的方法。這個檔案每一行儲存了乙個匹配的規則例如 此為注釋 將被 git 忽略 a 忽略所有 a 結尾的檔案 lib.a 但 lib.a 除外 todo 僅僅忽略專案根目錄下的 todo 檔案,不包括 s...