黄怀陞课上的一点点小笔记呜呜呜
Git
basic
add:将改动加到目录
commit:将目录推送到commit
add
-A:和目前的local同步(可以改名字?)
diff:比较区别
- repo中不同版本比较
git diff SHA-1 SHA-2 File
- local和index比较(默认)
git diff File
- local和local比较
git diff --no-index File-1 File-2
- local和repo中某版本比较
git diff SHA File
- index和repo最新版本比较
git diff --cached File
rm:移除
-
还没有add(只有本地修改,不影响版本)直接
rm 'filename'
-
只有add,没有commit(已经添加到目录,还没有到repo)
git rm --cached 'filename'
-
已经commit,需要移除
git rm 'filename'
-
移除目前的修改,退回某个版本
git reset MODE SHA:'filename'
MODE | 含义 |
---|---|
–soft | 只有repo生效 |
–mixed | repo和index生效(默认) |
–hard | repo、index、local都生效 |
checkout:类似于同步的效果?
切换分支(把内容同步到某个分支的HEAD?):git checkout BranchName
git checkout SHA FileName
:取某个SHA下的某个文件,省略SHA则是默认HEAD
branch:分支
--list:列出所有branch
BranchName:创建branch
切换branch:git checkout BranchName
创建并转移到新branch:git checkout -b BranchName
log:显示记录
--author=“Name”:作者
FileName:某个文件
--after=‘yyyy-mm-dd hh:mm’:时间(since、after也一样)
--shortstat:列出修改行数
--oneline:一行显示
shortlog(-n:数量,-s:总计)
grep:查找
git grep Mode ‘SomethingToFind’ SHA:在某一次commit中查找某些东西
-e:or(在每一笔查询之前)
--and:and
blame:查看修改者
某一个谁改的?:git blame Filename (SHA)
-L某几行是谁改的:git blame -L StartLine , FinishLine File (SHA)
stash:暂存
尚未完成的暂存:git stash save
列出暂存(其实是堆叠):git stash list
获取暂存:git stash pop
mv:music vedio!
更改名字:git mv OldFileName NewFileName
(可见add里还有一种)
移动到:git mv [-v] [-f] [-n] [-k] FileName ... <destination directory>
需要commit(相当于add完)
ignore
#:comments
/:folder
*:all
!:except
其他
SHA和HEAD
SHA是一串乱码,代表某一次commit。在show、reset等指令中会用到来表示某一次的内容。为了避免每次都打一堆乱码(图中只是示例,实际情况则是40位的乱码)就产生了HEAD(大写)。HEAD则指向当前branch的最近一次commit。
例如现在有master、aaa、bbb三个分支,后面的数字代表了第几次的commit,数字最大的则是最近的一次commit。在产生master1之后,branch aaa提交了aaa1、aaa2两次commit,随后bbb提交了两次,最后master提交了两次。
当处于master分支,HEAD指向master3这次commit,即SHA开头为0007的这一次。当branch转到aaa或者bbb时,对应的HEAD则为aaa2和bbb2。为了指向之前的commit,就会有~符号。例如在master下时,HEAD~1就指向了master2这个commit。
当master把branch的改动merge之后,目前在master下的HEAD指向master4这次commit。为了可以指向aaa2或是bbb2等不同branch的commit,就有^的符号。HEAD^1代表了aaa2(和HEAD^默认是一个意思),HEAD^2代表bbb2,HEAD^3代表master3.即上一级中按顺序依次排序。这时候如果数字大于3就会报错。父级的顺序由merge时的顺序决定。^和~也可以组合使用。
其中,~2是~~的意思,^2则是上一层第二个父级。
git Bash是Linux的环境但是cmd是Windows的环境所以一些语法会不一样
在任意指令后面–help可以打开帮助文档
参考
https://www.cnblogs.com/hutaoer/archive/2013/05/14/3078191.html
https://www.cnblogs.com/hutaoer/archive/2013/05/07/git_checkout.html
https://www.jianshu.com/p/cad4d2ec4da5