git的本质

[size=x-large]git 的本质[/size]

[size=large]配置:[/size]
git的配置操作,本质上,都是在修改config文件 (.git/config)
* git config -l

其中
remote.origin.fetch 与 remote.origin.url 即是 remote 的配置
[list]
* git remote -v 就是显示配置, git remote -v show <name> 细节
* git remote add|rm|set-url|rename 即是增删改操作
* git prune 是与服务器同步的功能
[/list]

其中
branch.master.remote 与 branch.master.merge 即是 branch的配置
[list]
* git branch -v 就是显示配置
* git branch <branchName>|-m|-d 就是增删改的操作
* git branch --set-upstream 设置分支对应的 remote
[/list]


[size=large]分支名:[/size]
git 命令,使用分支时,需要一个名字, 如origin/master, refs/remotes/origin/HEAD等
其实,可以参考 .git/refs目录, 就明白了
[list]
* heads 代表本地分支
* remotes 代表远程分支
* tag 代表tags分支
* master 与 HEAD 同义
[/list]
当我们需要使用分支时,语法大致是这样的 (refs/)? (heads/|remotes/|tags/)? <name>
即,refs 或者 heads 等, 都是可以省略的, git 会遍历查询
假如有冲突时, git报错 warngin: refname '...' is ambiguous , 但还会执行第一个

当然还有更精确及表示更多标识的方式, 即 commitId
而 tag 只是将 commitId 取了一个容易记忆的名字
而 分支,远程分支,可以理解为是一个 commitId 的有序列表(可变数组)


[size=large]分支操作:[/size]
假如将远程仓库也看成是一个个本地分支的话, 就会明白了
[list]
* git pull 就是 git merge origin/master
* git reset <commit> 就是 还原至某分支的状态 (会根据参数,还原 文件,index, commit)
* git rebase 可以看作是另一种merge操作, 算法不同


[size=large]操作index[/size]
* git add 追加 index
* git rm 删除文件,以追加index
* git mv 移动文件,并追加index
* git reset 清除uncommit的index


[size=large]clone[/size]
* 这个大家都知道了,就是一系列git操作的组合


[size=large]checkout[/size]
* 就是在操作HEAD的位置


[size=large]git[/size]
* git的所有操作,如果理解清每个命令, 是如何操作 file, index, commit, branch 的,就都理解了
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值