git结构概览

初始化
git init
git init --bare repo_name.git #创建一个名为repo_name的裸仓库,作为远程仓库使用
查看状态
git status
添加文件至暂存区
git add filename #添加某个文件
git add . #添加工作区中的所有文件
提交至本地仓库
git commit -m "本次提交的说明" #不带m参数则会打开互交界面,输入提交说明后通过vi操作保存退出完成提交
git commit -a -m "本次提交说明" #跳过暂存区直接提交
git commit --amend #修改上次提交的说明信息
撤销提交
git revert HEAD #撤销最近一次提交
git revert 版本号 #撤销指定提交
回滚
git reset HEAD^ #恢复到上一次提交的版本,前几次就用几个^
git reset --hard/mixed/soft 版本号 #soft: 只改变HEAD指向,暂存区和工作区内容不变;mixed: 工作区不变,暂存区内容丢失;hard: 工作区也恢复成以前的状态
创建分支
git branch 分支名
git checkout -b 分支名 #创建并切换分支
切换分支
git checkout 分支名
查看分支
git branch #本地分支
git branch -a #本地和远程的所有分支
删除本地分支
git branch -d 分支名
合并分支
git merge 分支名 #合并指定分支到当前分支
添加远程仓库
git remote add 远程仓库名称 远程仓库地址
查看远程仓库
git remote
git remote -v #更详细的远程仓库信息
克隆远程仓库到本地
git clone 项目远程仓库地址
推送本地仓库到远程仓库
git push -u 远程仓库名 分支 #一般第一次需要这样相对完整的执行
git push 远程仓库名 本地分支:远程分支 # 无省略的命令
git push
删除远程分支
git push 远程仓库名 --delete 远程分支名 #其实这个并不常用,除非跟所有相关人员都协调好,否则不要用
比较文件差异
git diff #工作区和暂存区
git diff branchname #工作区和指定分支的差异,远程分支写法:remotes/远程仓库名/远程分支名
git diff 分支1 分支2 #比较两个分支的差异
git diff 提交id 文件 #工作区指定文件当前版本与指定历史版本的差异
查看版本历史记录
git log
git log -次数 #查看最近n次的提交历史记录
git log --oneline #每条提交记录以单行简要显示
git log --graph --all --online #图形显示所有分支历史
git log --grep=关键词 #查找提交信息中包含关键词的提交历史
git log filename #查看指定文件的历史记录
参考资料
git push --force # 强推
git pull --force origin master:master # 强拉