Git命令
1. 注册Github账号,让Git 知道这台电脑做的修改要连结到哪一个使用者
git config --global user.name "<Your Name>"
git config --global user.email "< your@gmail.com >"
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
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。