1,简介
命令中有 - 和 -- (一般 '-' 为常用的,'--' 为可选的)
组成(三棵树)(快照)
Working Directory Stage(Index) Respository
2,git常用命令
用户创建:
git config --global "lwc" git用户名
git config --global user.email "lwc" git邮箱
常用操作:
git config --list 查看git配置
git init 创建一个空的git仓库
git add 文件名 添加到暂存区
git reset HEAD 文件名 从暂存区撤销(不指定文件名会将最后一次提交全部撤销)
git commit -m/am "提交说明" 提交到本地仓库(m/am(add+commit -m 新文件除外))
git status 查看状态
git add 文件名 添加到暂存区("."代表所有)
git checkout 文件名 会把暂存区的覆盖掉修改后的(危险)(空格)--防止与分支重名
git log 提交日志(时间由近到远)
git log --decorate 指向提交的所有引用
git log --decorate --oneline 指向提交的所有引用的精简显示
git log --decorate --oneline --graph --all 指向提交的所有引用的精简显示的图像显示的搜所有分支
git reflog --date=[iso | local | relative] | grep [-w 全词匹配] <branchname>
[iso:格式化后的时间时间local:实际时间relative:相对时间, 多少天之前]
返回历史版本(reset 命令):
git reset --mixed HEAD~ 返回上一个快照(mixed为默认,一下不写)
git reset HEAD~~ 返回上上一个快照(以此类推)
git reset HEAD~10 防止错误支持数字(此处相当于10个~)
调用git reset --mixed HEAD~之后实际上它影响了两颗树
1.移动HEAD 指向,使其指向上一个快照
2.将HEAD移动后指向的快照回滚到暂存区(暂存区上一个版本)(HEAD在此)
调用 git reset --soft HEAD~之后实际上它影响了一颗树
1.移动HEAD 指向,使其指向上一个快照(暂存区仍然是最新的)
调用 git reset --hard HEAD~之后实际上它影响了三颗树
1.移动HEAD 指向,使其指向上一个快照
2.将HEAD移动后指向的快照回滚到暂存区(暂存区上一个版本)
3.将暂存区的文件还原到工作目录(工作目录上一个版本)(HEAD在此)
git reset 快照的id 根据id回滚(可以模糊查询)
git reset 版本快照 文件名/文件路径 回滚指定文件(HEAD指针不会变)
比较
git diff 比较暂存区个工作目录
git diff 快照id1 快照id2 比较历史两个快照
git diff 快照id 比较工作目录和git仓库快照
git diff --cached [快照id] 比较暂存区和仓库的快照(id不加为当前)
修改最后一次提交
git commit --amend 修改提交说明(编辑)
git commit --amend -m "新的说明" 修改提交说明
git rm 文件名 删除工作区和暂存区的文件(仓库还会存在(reset --soft))
git rm -f 文件名 强制删除工作区和暂存区的文件(暂存区和工作空间不一致会无法删除)
git rm --cached 文件名 删除暂存区
git mv 旧的文件名 新的文件名 重命名文件
分支
git branch 查看分支
git branch 分支名 创建分支
git checkout 分支名 切换分支
git checkout -b 分支名 创建+切换分支
git merge 分支名 合并某分支到当前分支
git branch -d 分支名 删除分支
git checkout HEAD~ 创建一个匿名分支(切换其他分支失效,实验用)将上一个快照拷贝暂存和工作区
checkout 命令
1.从历史目录快照(或暂存区拷贝文件) 到工作区
2.切换分支
git checkout 快照id 将快照拷贝暂存和工作区
远程仓库
git clone url 从远程仓库克隆项目
git remote -v 显示对应的克隆地址
git remote add origin url 添加显示对应的克隆地址
git push -u origin master 推送
git remote rm origin 删除
git remote set-url origin url 修改
git pull 拉取
仓库迁移
git clone --bare git://xx.xx.xx.xx/project_name.git
git push --mirror git@code.aliyuan.com/path/new_project_name.git
合并
//这个往上的将会被合并,本身不受影响
git reset --hard commitid
git merge --squash HEAD@{1}
git commit -m "feature B complete"
恢复
git reflog --date=iso
git checkout -b recovery_branch_name commitid
git push origin recovery_branch_name
只写了一些工作学习中常用的命令,其余的日后补充。
















