Git学习

06 给文件重命名
mv命令是move的缩写,可以用来移
动文件或者将文件改名
git rm README.md $ git add README
按照已知的知识,需要执行三个命令。

git reset --hard
清除所做的更改。

git mv 可以实现文件重命名。

07git log使用

git log --oneline
简洁模式查看

git log -n4
最近四条

git branch -v
查看分支

git checkout -b temp 4816ffcad93dfa11f5871936f27810fffe35b81d

git commit -am'temp branch add'
先添加再提交

git log --all
查看所有分支提交记录

git log --all --graph
图形化版本演进关系。

这些命令都可以组合

git help --web log
以网页形式查看帮助文档

09探秘git目录

head表示目前正在工作的分支

git checkout master切换到master分支

config 用户名 邮箱等local设置信息

tags可以打一个标签比如说v1.0

heads表示分支,分支互不影响,

git cat-file -t 714a0
查看文件类型

tags也是指向某一次commit

pack是文件的打包

git cat-file -p 88bd94a34ca0bb571609d731c49a05517ccad956
查看文件内容

blob是文件对象

git目录主要是head config refs objects

10 commit tree blob

tree表示当前提交的所有文件夹、文件的快照

11数一数tree的个数

文件加入暂存区就会有blob

tree相当于文件夹,blob相当于文件,但是不包含文件名

12 分离头指针
detached head

git checkout commitId:会出现分离头指针的情况,这种情况下比较危险,因为这个时候你提交的代码没有和分支对应起来,当切换到其他分支的时候(比如master分支),容易丢失代码;
但是分离头指针也有它的应用场景,就是在自己做尝试或者测试的时候可以分离头指针,当尝试完毕没有用的时候可以随时丢弃,但是如果觉得尝试有用,那么可以新建一个分支,使用 git branch <新分支的名称> commitId

如果临时想基于某个commit做变更,试试新方案是否可行,就可以采用分离头指针的方式。测试后发现新方案不成熟,直接reset回其他分支即可。省却了建、删分支的麻烦了。

HEAD最终是指向一次commit

git diff HEAD HEAD^最后两次差异

git diff ea2e9230cf196 09a9fe48a0a7f 比较版本差异

git diff HEAD HEAD~2

14 git删除分支

15 git commit --amend 修改最近一次提交的commit信息

16修改历史commit 的message
rebase本质就是修改历史,之后的历史主要是commit id也会变,但是内容不变。
git rebase -i 5e3d2e7c706372faf4
参数是父节点的commit id,根据提示操作reword。
主要是基于自己的分支,而不是多人协作的情况。

17 整合连续的commit squash

18.不连续

编辑的时候剪切到一起

19 比较暂存区和head是为了准备提交

git add index.html 修改文件之后添加到暂存区
git diff --cached比较暂存区和head的区别

git diff 比较工作区和暂存区的差别,没有add就是在工作区
git diff -- readme.md 比较指定文件的差异 一行可以写多个文件

21 暂存区恢复到和head一致
On branch temp
Changes to be committed:
(use "git reset HEAD ..." to unstage)

modified:   index.html

Changes not staged for commit:
(use "git add ..." to update what will be committed)
(use "git checkout -- ..." to discard changes in working directory)

modified:   styles/style.css

git reset HEAD恢复暂存区 修改保存到工作区 加上-- index.html 指定文件

22工作区恢复到暂存区

变更工作区 checkout 变更暂存区reset

git checkout -- index.html 工作区变得和暂存区一样

24 消除最近的几次提交

git reset --hard 827f026d9b75 重置到某一次提交

git reset HEAD 和 git reset --hard HEAD区别在于不加hard会保存在工作区。

25 git diff temp master -- index.html 比较不同提交的同一文件的差异,不指定文件就是所有的差异 使用commit id也是一样

26 git 删除文件git rm readme.rtf

27 临时加了新任务

git stash临时存放暂存区和工作区
多次stash会形成堆栈,pop会弹出上层

git stash apply 堆栈里面还在
git stash pop 恢复堆栈不在了

28 .gitignore指定忽略的文件和文件夹
doc 文件
doc/ 文件夹下面

29 git 仓库备份

传输协议
http https 需要用户名、密码
ssh协议 需要公私钥
git clone --bare /Users/cmcc/test/.git ya.git
哑协议备份 没有进度条 速度较慢

git clone --bare file:///Users/cmcc/test/.git zhineng.git
只能协议有进度条

git remote add zhineng file:///Users/cmcc/zhineng.git
添加远端仓库 git一定是要在某一个空的文件夹里面

git push --set-upstream zhineng temp
第一次提交要和远端分支关联

github搜索会去readme里面去查找

开源的license
mit license免费开放

git remote add remotegit [email protected]:alfredking/Micro8.git
创建远端仓库

pull先fetch 再merge
fetch拿到一个单独的分支,

git merge GitHub/master
第一次是不相关的无法merge
git merge --allow-unrelated-histories GitHub/master
成功merge
除了merge 还可以rebase。

本地分支往远端分支做push,如果远端分支不是本地分支的祖先,那它俩就不是 fast forward 了。反之,它俩就是fast forward的关系。

34 不同的人修改了不同的文件
git config --local -l显示所有配置
git merge不需要用户参与

35 不同的人修改了同文件的不同区域
fetch之后merge会自动合并

36 不同人修改了同一文件的同一区域

手动merge之后commit

37.同时变更文件名和文件内容
git 可以自动merge

38.把同一文件改成不同的文件名
会产生两个文件,不需要的删除,然后commit

39.禁止向集成分支执行push -f操作
理解rebase和fast forward的概念。
可以使用 git reflog 命令查找历史,然后利用 git reset --hard HAED@{n} 的方式恢复。

你可能感兴趣的:(Git学习)