初衷:一直使用github desk界面化工具,想学习一下git命令,帮助更好的理解git的工作方式。
- What is Git ? 版本管理工具(VCS)
- 分布式版本控制
- 多个开发人员协调工作
- 有效监听谁做的修改
- 本地及远程操作
- git config
git init #初始化本地git仓库
git config --global user.name "Your Name" #设置本地git用户名
git config --global user.email "email@example.com" #设置本地git邮箱
git config --global --list #查看当前用户(global)配置
git config --global credential.helper store #不需要每次输入邮箱密码了
git clone https://github.com/jakehao-hl/StudyDaily.git #从远程仓库拉取
git remote add origin <url> #把本地仓库的内容推送到GitHub仓库。
- git add / git rm
git add <file> #将所有Untracked和Unstaged的文件放入暂存区
git add -A #提交所有变化
git add -u #提交被修改(modified)和被删除(deleted)文件,不包括新文件(new)
git add . #提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件
git rm --cached 3.txt #将该文件移除暂存区
git rm readme.txt #不但暂存区中的内容没了,工作区的对应文件也会被删除,比较彻底。
git rm -r --cached filename #去掉已经托管在GIT上的文件
git checkout -- file #未使用 git add 缓存代码时
git reset HEAD readme.md #已经使用了 git add 缓存了代码
git reset --hard HEAD^ #已经用 git commit 提交了代码
- git status
git status #查看状态
git status -s #来查看简写的状态
#git status命令用于显示工作目录和暂存区的状态。
#使用此命令能看到,未跟踪状态(Untracked),位于暂存区待提交状态(Staged),Modified状态。
#git status不显示已经commit到项目历史中去的信息。
#看项目历史的信息要使用git log
- git branch / git checkout / git merge
git branch #查看本地所有的分支
git branch -a #查看远程所有的分支
git branch <name> #创建分支
git branch –d dev #删除dev分支
git push origin --delete dev #删除远程的dev分支
git branch -m dev develop #重命名分支
git checkout –b dev #创建dev分支 并切换到dev分支上
git merge dev #在当前分支上合并dev分支代
git push origin dev #把当前新增的dev分支推送到远程库(远程仓库没有给分支则会新建立该分支)
git checkout — * #把XX文件在工作区的修改全部撤销。
git checkout master #切换回master分支
git push --set-upstream origin dev #提交修改并创建远程分支dev
git checkout -b dev origin/dev #切换远程分支,切换远程的dev分支到本地, 本地分支名称叫dev
git fetch origin dev:dev #切换远程分支,切换远程的dev分支到本地, 本地分支名称叫dev
- git log
git log -p reset.txt #搜索git日志通过文件名搜索
git log --pretty=format:"%h - %an, %ar : %s" #定制要显示的记录格式
git log -p -2 #显示最近的两次提交
git log --author 'Jake' #仅显示作者匹配指定字符串的提交
git log --grep 'reset3' #搜索提交说明中的关键字
git log --pretty=oneline #如果信息量太多可以进行比较好的列表显示
- git diff
git diff # 比较当前文件和暂存区中文件的差异,显示没有暂存起来的更改
git diff --cached # 在下次提交时要提交的内容,同下面一个
git diff --staged # 比较暂存区中的文件和上次提交时的差异
git diff HEAD # 比较当前文件和上次提交时的差异
git diff <commit ID> # 查看从指定的版本之后改动的内容
git diff <branch name> <branch name> # 比较两个分支之间的差异
git diff <branch name>...<branch name> # 查看两个分支分开后各自的改动内容
- git commit / git reset / git revert
git commit -m “message” #提交
git checkout -- <file> #恢复某个已修改的文件(撤销未提交的修改)
#没有push
git reset --hard HEAD^ #彻底将工作区、暂存区和版本库记录恢复到指定的版本库目录里的内容(慎用)
git reset --mixed HEAD^ #仅仅只是撤销已提交的版本库和暂存区,不会修改工作区
git reset --soft HEAD^ #相当于调用 "git reset --mixed" 命令后又做了一次 "git add"
#已经push
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61
- git fetch / pull / push
git fetch #git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中
git pull #即git fetch + git merge,这样可能会产生冲突,需要手动解决。
git push #推送到仓库
- git stash
git stash save "save message" #执行存储时,添加备注,方便查找,只有git stash 也要可以的
git stash pop #恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除
- 图解1
- 图解2
- 图解3
参考: