Git版本控制

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其實是用版本庫裏的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章