《Git从入门到精通_高见龙》的笔记

目录

第5章 开始使用Git

第6章 使用分支

第7章 修改历史记录

第8章 标签

第9章 其他常见的情况及一些冷知识


第5章 开始使用Git

cd xxx切换至哪个目录
mkdir xxx创建一个名为xxx的目录(文件夹)

git init

初始化当前目录,让Git对当前目录进行版控

git status

查看当前状态
echo "hello, git" > welcome.html创建一个文件,并将一个内容写入文件中
git add welcome.html将这个文件加入暂存区,让Git开始追踪它
git add *.html将所有未跟踪的html文件加入暂存区
git add --all将所有文件加入暂存区
git add .与--all参数的区别:1.Git的版本;2.执行命令所在的目录
git commit -m "init commit"将暂存区的内容提交到存储库中存档
git commit --allow-empty -m "空的"这样子没有内容也可以提交
git commit -a -m "update content"没有提前add,也可以提交,只对已经存在于存储库中的文件有效,对于untracked file无效
touch index.html创建文件
git log查看历史记录(commit的记录)
git log --oneline --graph输出的结果更加精简,一次性看到更多的commit
git log --oneline --auther="Sherly"查找作者名为Sherly的commit
git log --oneline --auther="Sherly\|Eddie"查找这两个人的commit,注意使用“\”
git log --oneline --grep="LOL"commit信息中搜索符合关键字的内容
git log -S "Ruby" 所有的commit的文件中进行搜索
git log --oneline --since="9am" --until="12am" --after="2017-01"根据时间查找commit
rm welcome.html删除文件
git rm welcome.html请Git帮忙删除,这样不用再add
git rm welcome.html --cached

不删除文件,只是让它不再受Git控制

mv hello.html world.html直接改名
git mv hello.html world.html请Git帮忙改名
git commit --amend -m "xxx"改动最后一次commit的信息

git add xxx.html

git commit --amend --no-edit

把文件并入最后一次commit,其中--no-edit参数表示不要编辑commit的信息

touch images/.keep

.keep文件是空的,目的是为了让Git可以感应到images目录的存在(空的目录无法被提交)
touch .gitignore创建并编辑文件的内容,即可忽略文件(只对规则设置后存入的文件有效)
git add -f 文件名称可以无视.gitignore中的规则
git clean -fx清除那些已经被忽略的文件(f表示强制)
git log welcome.html查看单一文件的commit记录
git log -p welcome.html查看这个文件每次commit做了哪些改动
git blame index.html可以看到哪一行代码是谁在什么时候写的
git blame -L 5, 10 index.html只显示文件中指定的行
git checkout xxx.html恢复刚刚被删除但还没有被add的文件(原理是从暂存区中恢复)
git checkout .恢复所有被删除的文件(还没有add)
git checkout HEAD~2 welcome.html用2个版本以上的那个文件来覆盖当前工作区的这个
git reset e12d8ef^表示拆掉e12d8ef这一个commit(前往e12d8ef的前一个commit)等价于git reset HEAD^(^表示前一个),也可以直接写git reset [SHA-1]
git reset HEAD~2 --hard/--mixed/--softreset指令的三种模式
git reflog也是一个查看记录的命令
git branch查看当前所在的分支
git add -p index.htmlGit会询问是否要把整个区域加到暂存区,y是整个加入,e是部分加入(会有编辑器)

第6章 使用分支

git branch 分支名称新增分支
git branch -m 旧名 新名重命名分支
git branch -d 分支名称删除分支
git branch -D 分支名称强制删除还没有合并的分支
git checkout 分支名称切换分支
git checkout -b 分支名称分支存在则会切换;分支不存在Git会创建后切换
git merge 分支名称用当前所在分支合并分支名
git merge 分支名称 --no-ff不适用快转(Fast-Forward)模式合并
git branch 分支名称 [SHA-1]创建一个分支,指向[SHA-1]这个commit
git rebase 分支名称作为新的参考基准
git reset ORIG_HEAD --hard回到“危险操作”之前HEAD的位置

第7章 修改历史记录

git rebase -i [SHA-1]

可用于批量修改commit信息(-i表示进入rebase指令的互动模式;[SHA-1]表示从现在到[SHA-1]这个commit)

进入vim后:pick改为reword

git reset ORIG_HEAD --hard取消这次的rebase
git rebase -i [SHA-1]

可用于批量合并分支

进入vim后:pick改为squash(一直会合并到最近的那个pick)

git rebase -i [SHA-1]

可用于将1个commit拆分成多个commit

进入vim后:pick改为edit

git rebase --continue

因为现在还处于rebase状态,所以要让rebase继续执行
git rebase -i [SHA-1]

可用于在commit之间增加新的commit

进入vim后:pick改为edit

git rebase -i [SHA-1]

可用于调整commit的顺序

进入vim后直接修改顺序

git rebase -i [SHA-1]

可用于删除commit

进入vim后直接删除

git revert HEAD --no-edit

取消不要的(最后一个)commit,且不编辑commit信息

新做一个commit来取消不要的commit

第8章 标签

git tag 标签名 [SHA-1]

为[SHA-1]这个commit加上名为xxx的轻量标签;若没有给出[SHA-1],则默认加在当前所在的commit上

git tag 标签名 [SHA-1] -a -m "xxxxx"-a表示创建有附注的标签
git show 标签名

查看标签所指向的那个commit的信息(有附注的标签会比轻量标签多显示信息)

git tag -d 标签名删除标签

第9章 其他常见的情况及一些冷知识

git add --all

git commit -m "not finish yet"

git reset HEAD^

手边的工作做到一半,要切换到别的任务(方法一)
git stash

手边的工作做到一半,要切换到别的任务(方法二)

先把修改都存起来

git stash list

查看当前的stash列表
git stash pop stash名

pop指令:把某个stash拿出来并套用在当前的分支上;套用成功后这个stash就会被删除

(没有指定stash名则默认从编号小的开始)

git stash drop stash名将stash从列表中删除
git stash apply stash名apply指令:指定stash套用,成功后stash不会被删除
git filter-branch --tree-filter "rm -f config/database.yml"不小心把账号密码放在Git中了,想把它删掉
git cherry-pick [SHA-1]

将指定的commit捡过来街道当前的分支上

(类似复制过来,指定的commit还在原来的位置)

git cherry-pick [SHA-1] [SHA-1] [SHA-1]一次捡多个commit
git cherry-pick [SHA-1] --no-commit捡过来但是先不合并,而是先放在暂存区

1.git filter-branch -f --tree-filter "rm -f config/database.yml"

2.rm .git/refs/original/refs/heads/master

3.git reflog expire --all --expire=now

4.git fsck --unreachable

5.git gc --prune=now

(6.git push -f)(若已经被push出去)

1.-f表示强制覆写filter-branch的备份点

2.这个文件对刚刚做的filter-branch(备份点)念念不忘,所以要将它删除

3.reflog也念念不舍,所以也要删除(要求reflog立刻过期,默认为30天)

4.查看unreachable对象

5.启动资源回收机制

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值