黄怀陞课上的一点点小笔记呜呜呜

Git

basic

add:将改动加到目录
commit:将目录推送到commit

add

-A:和目前的local同步(可以改名字?)

diff:比较区别

  1. repo中不同版本比较 git diff SHA-1 SHA-2 File
  2. local和index比较(默认) git diff File
  3. local和local比较 git diff --no-index File-1 File-2
  4. local和repo中某版本比较 git diff SHA File
  5. index和repo最新版本比较 git diff --cached File

rm:移除

  1. 还没有add(只有本地修改,不影响版本)直接 rm 'filename'

  2. 只有add,没有commit(已经添加到目录,还没有到repo) git rm --cached 'filename'

  3. 已经commit,需要移除 git rm 'filename'

  4. 移除目前的修改,退回某个版本 git reset MODE SHA:'filename'

MODE含义
–soft只有repo生效
–mixedrepo和index生效(默认)
–hardrepo、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。

master1 SHA: 0001
aaa1 SHA: 0002
bbb1 SHA: 0003
master2 SHA: 0004
aaa2 SHA: 0005
bbb2 SHA: 0006
master3 SHA: 0007

master1 SHA: 0001
aaa1 SHA: 0002
bbb1 SHA: 0003
master2 SHA: 0004
aaa2 SHA: 0005
bbb2 SHA: 0006
master3 SHA: 0007
master4 SHA: 0008

当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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值