(上图来自廖雪峰Git教程)
Git rm --cached 从缓存区删除
-
git log 查看提交历史
- -p -2 (-p:显示每次内容差异 -2:最近两次提交)
- --stat:简略的统计信息
git commit --amend:重新提交
-
git checkout -- <file> 撤销工作区中对文件修改(回到最近一次git commit或git add时的状态)
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git checkout -- file
。 - 场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令
git reset HEAD file
,就回到了场景1,第二步按场景1操作。 - 场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
- 场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令
git reset HEAD <file> 取消暂存
git reset --hard HEAD^ 回到上一个版本
git reset --hard commit_id 回到某个版本git reflog 记录每一次命令
git diff 是工作区(work dict)和暂存区(stage)比较
git diff --cached 是暂存区(stage)和分支(master)的比较-
配置全局的用户名和邮箱:
git config --global user.name "xxx"
git config --global user.email "xxx"在项目根目录下单独配置:
git config user.name “xxx”
git config user.email "xxx"查看当前配置
git config --list -
创建分支并切换
git checkout -b dev 创建dev分支并切换到dev分支
等同于以下两条命令:
git branch dev
git checkout devgit branch -d dev 删除dev分支
git branch -D <name> 强行删除未合并的分支
git branch 查看分支
git branch -vv 查看本地分支和远程分支的关联关系 git merge 用于合并指定分支到当前分支(fast forward模式)
git merge --no-ff -m "merge xxx" dev 合并dev分支到当前分支,普通模式合并,合并后的历史有分支(禁用fast forward)git stash 储藏工作现场,用于把未完成的任务保存起来,切换到其他分支修改bug。
git stash pop 恢复工作现场
git stash list 罗列保存的工作现场git checkout -b branch-name origin/branch-name 在本地创建和远程分支对应的分支,名称最好一致
git branch --set-upstream-to=origin/remote-branch your-branch 建立本地分支和远程分支的关联(remote-branch:远程分支,your-branch:本地分支)
(在要关联的本地分支上) git pull origin 远程分支名称
git pull (origin branch-name) 从远程抓取分支
git push (origin branch-name) 从本地推送分支git tag <name> 创建一个标签
git tag -a <tagname> -m "blabla...." <commit_id> 指定标签信息
git tag 查看所有标签
git show <tagname> 显示标签信息
git tag -d v0.1 删除标签git remote -v 查看远程库信息
git remote add <name> url 添加远程库
git remote rm <name> 删除远程库git remote remove origin 删除远程地址
git remote add origin ssh://xxx.git(远程地址)
常见问题
- 生成密钥:
ssh-keygen -t rsa -C "your email" - 出现:Could not open a connection to your authentication agent
- 使用 ssh-agent bash 命令
- 再使用 ssh-add id_rsa_name 命令即可