Git 仓库
`git init // 初始化当前目录为git仓库
git clone \<url\> // 从远程仓库克隆到本地的当前目录为git仓库
`
Git 本地
` git add \<file\> //将file提交到暂存区
恢复:
git checkout -- \<file\> //放弃本地修改,恢复到版本库最后一次commit状态
git rm \<file\> //等于本地删除文件并且git add \<file\>到暂存区(该文件不能处于modified)
git rm -f \<file\> //等于本地删除文件,放弃修改并且git add \<file\>到暂存区(这样还未添加到暂存区的数据会被丢失)
恢复:
git reset HEAD \<file\> //从版本库中恢复
git checkout -- \<file\> //恢复至版本库的状态
git mv \<file old name\> \<file new name\> //文件重命名并到暂存区
恢复:
git mv \<file new name\> \<file old name\> //将文件改回来
//git mv 的好处是,如果直接在本地修改文件名,会产生一个新的新文件名的文件和已删除的老文件名的文件状态,而git mv 命令直接就是文件名的修改
恢复2:
git checkout -- \<file old name\>
rm \<file new name\>
// 将原文件恢复,并将新文件名的文件删除
git checkout -- \<file\> 放弃本地修改,恢复到版本库最后一次commit状态
git diff //查看已修改的文件与暂存区的比较
//配置difftool可以使用vim等编辑器查看修改
` <!–more–>
Git 暂存区
` git diff //查看已修改的文件与暂存区的比较
git diff --cached | git diff --staged //查看暂存区的文件与版本库的比较
// 配置difftool可以使用vim等编辑器查看修改
git commit //将暂存区的文件提交到版本库中
恢复:
git reset HEAD //将文件重置到上一次的commit,版本库中最新的状态
重新提交:
//... 从新提交前可以重新修改新的暂存区的文件,比如继续git add或git rm等等
git commit --amend //改操作会删除覆盖上次的commit为一次新的commit
git rm --cached \<file\> //等于不删除本地文件但是将删除的状态git add \<file\>到暂存区
恢复:
git reset HEAD \<file\>
`
Git 本地仓库
` git log //查看日志
-p //显示提交的内容差异
-\<number\> //显示条数
--graph //提交的分支结构
--pretty = oneline | short | full | fuller //显示格式
--format %H(提交对象) | ...
--stat
--status
`
Git 远程仓库
` git push [remote]() [branch]() //将本库的版本库推到线上,如果配置了remote和branch可以缺省
git push [remote]() [tag name]() // 将本地的分支推送到远程服务器
git fetch [remote]() //获取远程仓库中本地仓库没有的数据
git pull [remote]() [branch]() //将线上的版本库拉去到本地并合并,如果配置了remote和branch可以缺省
git clone \<url\> //克隆远程仓库
git remote //查看已配置的远程仓库的服务器
-v //看到远程残酷的地址url与权限
git remote add \<shortname\> \<url\> //新增一个远程Git仓库
git remote rename \<old remote name\> \<new remote name\> //从命名远程仓库
git remote rm \<remote name\> 重命名远程仓库
git fetch [remote-name]() //从远程仓库中获取数据
`
Git 标签
` git tag //查看已有的标签
-list \<正则\> // 列出所有匹配过的tag
git tag -a \<tag name\> [-m \<tag desc\>]() [commit info]() //打一个附注标签(annotated)
git tag \<tag name\> //打一个轻量标签(lightweight)
git show \<tag name\> //查看标签的详情
git push \<remote\> \<tag name\> //将分支推送到远程仓库
git push --tags // 将本地中远程没有的分支全部推送到远程仓库
git checkout -b [branchname]() [tagname]() //检出标签
`
Git 分支
` // 本地分支管理
git branch //查看分支
-a //查看all分支
git branch \<branch name\> // 创建分支
git branch -b \<branch name\> // 创建分支并checkout 分支
git branch -d \<branch name\> // 删除分支
git checkout \<branch name\> //切换分支
git branch --merged // 查看分支已经合并到当前分支
git branch --no-merged // 查看所有包含未合并工作的分支
// 远程分支管理
git push (remote) (branch) // 创建远程分支
git branch -vv //将所有的本地分支列出来并且包含更多的信息,如每一个分支正在跟踪哪个远程分支与本地分支是否是领先、落后或是都有
git push \<origin\> --delete \<branch name\> // 删除远程分支
// 合并分支
git merge \<branch name\> // 将该合并到当前分支
// 变基合并
git checkout \<branch dev\> // 从branch master checkout 到 branch dev
git rebase \<branch master\> // 通过rebase,将master领先的以补丁方式合并到dev
git checkout \<branch master\> // 切回到master
git merge \<branch dev\> // 合并master,这样的master将保持一条主线
`