开启工作区
// 一般来说项目至少有 readme.md .gitignore lisense 3个文件
git init 初始化git仓库
git clone url 复制一个仓库
git help 查看帮助
配置
在git中,我们使用git config 命令用来配置git的配置文件,git配置级别主要有以下3类:仓库级别 local 【优先级最高】、用户级别 global【优先级次之】、系统级别 system【优先级最低】
git config --(local/global/system) -l 查看仓库配置
git config --(local/global/system) -e 编辑仓库配置
git config user.name "tom"
git config user.email "hhh@qq.com"
git config --global alias.ci commit
git config --global alias.a "add -A"
// 别名配置
git config --global alias.a 'add -A'
git config --global alias.b branch
git config --global alias.c "commit -m"
git config --global alias.ac "commit -a -m"
git config --global alias.ck checkout
git config --global alias.st status
git add
在提交之前,Git有一个暂存区(staging area),可以放入新添加的文件或者加入新的改动. commit时提交的改动是上一次加入到staging area中的改动,而不是我们disk上的改动.
git add .
会递归地添加当前工作目录中的所有文件.
git add index.js 将index.js修改提交到本地暂存区
git add -A 提交所有变化
git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
撤销修改
// 用暂存区的修改覆盖当前
git checkout demo.txt
// 用上次提交覆盖当前修改
git reset demo.txt
// 回退文件到某个版本
git checkout 5dc1bc214 templates/publish_advertisement.html
提交版本
git add -A
git commit -m "第一次提交"
// 跳过使用暂存区域,自动把所有跟踪文件一起提交
git commit -a -m "第二次提交"
提交到远程仓库
一个git可以有多个remote仓库
// 添加远程仓库
git remote add alibaba https://github.com/paulboone/ticgit
// 拉取更新
git fetch alibaba master
// 推送更新
git push alibaba master
// 远程仓库重新命名
git remote rename alibaba tecent
// 删除仓库
git remote rm tencent
版本回退
git reflog //所有版本历史
git reset --hard hash
git log美化
// 详细配置
const content =
" %H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 --date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明"
// log美化
git config --global alias.lg "log --no-merges --color --graph --date=format:'%Y-%m-%d %H:%M:%S' --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit"
// stash list 美化
git config --global alias.shs '
list --pretty=format:"%C(red)%h%C(reset) - %C(dim yellow)(%C(bold magenta)%gd%C(dim yellow))%C(reset) %<(70,trunc)%s %C(green)(%cr) %C(bold blue)<%an>%C(reset)"'
冲突显示 vim 编辑
`Please enter a commit message to explain why this merge is necessary,
especially if it merges an updated upstream into a topic branch。`
先按esc
:wq 推出
stash
一般作用: 代码提交之前,暂存修改,merge其他人修改后,弹出stash,可以防止代码冲突
git stash // 保存本地更改
git stash save -a "messeag" //
git stash list
git stash pop --index stash@{0}
git stash apply stash@{id} //和pop一样,但是会保存stash记录
git stash clear // 清空
git stash drop // 删上一条
分支
// 创建dev并且切换到dev
git checkout -b dev
// 克隆远程分支创建本地dev
git checkout -b dev origin/dev
// 删除分支
git branch -D bambaoo
// 拉远程特定分支
git clone -b dev ${url}
// 查看当前跟踪的分支
git br -vv
cherry-pick
pick其中的一个分支的一次提交,合并到当前分支
git cherry-pick 08ru289
修改提交信息
git commit --amend -m "update"
git认证失败 储存密码
git config --system --unset credential.helper
//长期存储密码:
git config –global credential.helper store
github项目里的静态页面
github 项目新建gh-pages分支,可以显示静态页面,在项目的settings里可以找到网址
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。