《ProGit》读后感:我的git理解和常用Git命令

git 中文乱码

输入:$env:LESSCHARSET=‘utf-8’
ide中输入:LESSCHARSET=utf-8

git 特点:

本地存有所有的记录快照,而不是比较差异。而且一般只添加数据。
所以:1.命令运行都比较快
2.通过任意本地快照都可以恢复git服务器数据
3.本地的任何操作只要提交到了本地快照中,基本没有无法恢复的情况

git 的三种状态(commited\modified\stage):

执行git status 就可以看到,在我的理解中文件应该还有两种状态
【modified】 - Changes not staged for commit 本地已修改,但还没有保存到数据库中
【stage】 - Changes to be committed: 本地修改后执行了 git add等,表示暂存
【commited】 - 本地已提交到了本地数据库中,可以执行git log --stat -1 查看文件 执行 git log -p -1 查看详情
【Untracked】 - Untracked files 未被跟踪的,执行git status 可以看到
【Ignore】 - 被排除的,还没有验证这个是否属于Untracked

git config 的三种级别

(local 【仓库配置,项目的.git文件种】> global【只针对当前用户】 > system【每一个用户以及每一个仓库的配置】) 优先级从左到右

git 命令


git help
    git help <verb>
    git <verb> help
    man git-<verb>

git init 仓库初始化
git clone <url> 克隆
git status 查看仓库状态
    git status --short 或者 git status -s 得到一种更为紧密的数除
git add <path> 跟踪新文件

查看已暂存和未暂存的区别 git status / git diff
查看已暂存即将提交的区别 git diff --staged 或 git diff --cached

git commit 提交更新
    git commit -m "xxx" 提交
    git commit -a 跳过暂存区直接提交(不建议用)
    git commit -m "yyy" --amend 用本次更新覆盖上次的更新,很有用,可以用来改提交文字,增加提交文件,并且push之后只有一条commit记录,很整洁

git rm 移除文件
    git rm <path> 从跟踪列表和本地同时移除该文件
    git rm -f 强制删除,从跟踪列表删除,同时删除暂存和modified的文件
    git rm --cached 从跟踪列表删除 但保留本地文件

git mv 移动或者重命名文件,重命名时注意大小写问题,本地仓库和服务器大小写敏感规则不一样的时候,很难搞

git log 查看提交历史,建议在各种命令后面带上-1,-2等,只查看最近1、2条
    git log -p 或 git log --patch 以补丁方式输出
    git log --stat -1 查看最近1次的提交,以统计的模式查看
    git log --pretty 有以下几种格式oneline/short/full/fuller/format 例子git log --pretty=online

修改git add的文件
    git commit --amend
    git reset HEAD <filePath> 取消暂存file文件 会把staged的文件变成Changes not staged for commit

撤销对文件的修改(不可恢复)
    git checkout <path>

git remote 查看远程仓库
    git remote -v
    本地分支和远程分支  本地分支:master 远程分支 origin/master 远程分支也是在本地的 只要更新他 他的HEAD就不会变

git fetch origin 更新远程分支

git push 推送
    git push origin master


git tag 打标签

git 别名
    例子: git config --global alias.last 'log -1 HEAD'
    使用 git last

git 提交
git 是面向对象的,每一次提交会向数据库中保存这些内容
(1) Blob 提交的文件的快照A
(2)Tree 一个树对象(git中把每一个子目录的校验和保存为对象),这个树对象中包含指向提交的文件的快照的指针
(3)Comit Object提交对象, 包含作者、邮箱、树对象,父提交(上一次提交的指针)

每一个分支都指向最新的一次提交,并且自动向前移动

git branch 创建新分支 - 实际上就是在当前所在对象上创建了一个指针HEAD,指针HEAD指向本地的最新的分支
可以用 git log --oneline --decorate
git branch -b <new name> 在当前对象创建一个新分支并切换过去
git branch -d <branch name> 删除分支
git branch -v 查看所有分支 和 最后一次提交
git branch --merged 可以查看已经合并到当前分支的分支
git branch --no-merged 这个参数后可以增加参数 当不输入时代表当前分支
例如:查看未合并到master分支的分支有哪些呢? git branch --no-merged master

跟踪分支
在跟踪分支上执行git pull git会自动合并 我理解的跟踪分支就是跟远程的分支关联起来的分支
git clone时会自动创建跟踪分支
例子git checkout -b dd5401 origin/iteration_54_from_master_01 创建dd5402分支 并且跟踪远程分支


git checkout <分支名> 切换分支,建议先pull再拉取分支,执行了checkout之后,HEAD就指向了新分支

git merge
 fast-forward 快进 如果这个分支的指针向前移动就可以进入到下一个分支,那么就进行快进,不会有冲突
 git merge xxx 合并xxx的分支到当前分支
 如果遇到冲突 比如 主分支master 在某次提交A 后分别有两个分支 branch1 和 branch2 ,当在branch1执行 git merge branch2的时候出现冲突
 那么git会使用branch1和branch2的快照的共同祖先A, 这三个快照做一个简单的三方合并 合并后的分支有两个parent 一个指向branch1 一个指向branch2
 在解决冲突时,可以用git status 查看冲突文件,当退出合并工具git会询问是否解决冲突,如果解决了会自动执行git add 把合并后的文件放到暂存区
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值