一. 指令记录
初始安装
安装完成后,还需要最后一步设置,在命令行输入:
- git config --global user.name “Your Name”*
- git config --global user.email “email@example.com”
创建仓库:进入仓库目录后再 git init
- git init
查看:
- git status // 查看工作区状态
- git log // 查看历史版本,以便向后穿越
- --pretty=oneline // 美化格式
- git log --graph --pretty=oneline --abbrev-commit
- git reflog // 引用日志(reflog)查看版本变更历史,命令历史,以便向前穿越。
git reflog 找到commit id,再”git reset --hard 版本id “退回指定版本。
- git diff HEAD – <文件> //查看工作区和版本库HEAD的区别
增加:
- git add // 从工作区(Working Directory) 保存暂存区(stage)
- git commit -m ‘备注’ // 提交stage所有内容 + “备注信息” 到版本库(Repository)
修改:
工作区退回到stage或repository:
-
git restore //表示将在工作空间(但是不在stage)的文件撤销更改 (有stage,变成stage;没有变成branch版本)
-
git restore --staged //作用是将暂存区的文件从暂存区撤出,但不会更改文件 (删除副本)
工作区退回到最近的repository:
- git checkout – <文件名> //文件名前不要省略"–"。回退到最近一次stage or commit (git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。介绍在后文)
把暂存区的修改撤销(unstage):
- git reset HEAD <文件名> // 把stage的修改撤销掉(unstage),重新放回工作区
回退指定repository:
- git reset --hard HEAD^ // 返回上一个版本
- HEAD^^ // 返回上两个版本
- HEAD~100 // 返回上100个版本
- git reset --hard <版本号前几位> // 返回指定版本
删除:
先手动删除文件,然后使用git rm 和git add效果是一样的
从来没有被添加到版本库就被删除的文件,是无法恢复的!
- git rm <文件> // 版本库中删除文件,之后再 commit
远程
- git push origin master //本地分支master(也可以是其他的分支)推送到远程库上origin
- git push -u origin master // 第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来
- git branch -M master// 本地branch重命名为master
- git branch --set-upstream branch-name origin/branch-name //建立本地分支和远程分支的关联,使用
- git remote rm origin // 删除远程库 origin
分支操作
- git branch //查看所有分支
- git branch dev //创建dev分支
- git branch -d dev // 删除 dev分支
- git branch -D dev //强制删除dev分支(dev已经做出改动)
- git switch -c dev //创建并切换dev分支
- git switch master //切换到master分支
- git merge dev // 合并dev分支到主分支master
- git merge --no-ff -m “merge with no-ff” dev //no-ff模式合并(保留dev)
checkout 用版本库里的版本替换工作区的版本
- git checkout – <文件名> // 回撤文件, 文件回到最近一次git commit或git add时的状态。
- git checkout dev //切换到 dev分支
- git checkout -b dev //创建并切换到dev分支; [-b]创建
- git pull //从远程抓取分支
git stash
-
git stash list
-
git stash
-
git stash pop //复的同时把stash内容删除 (git stash apply+git stash drop)
cherry-pick
- git cherry-pick 【4c805e2】 // 按照【4c805e2】的commit ,复制到当前分支,避免重复劳动。
tag
-
git tag v1.0 //新增标签(当前版本上)
-
git tag -d v1.0 //删除标签
-
git tag //查看所有标签
-
git show v1.0 //查看标签v1.0信息
-
git push origin 【tagname】
二. 问题记录
1. GitHub配置了公钥每次Push仍需要输入用户名和密码
HTTPS的格式为:https://github.com/用户名/仓库名.git
SSH的格式为:git@github.com:用户名/仓库名.git