大家可以收藏起来慢慢看,此文档绝对包含了日常所需要的命令,以及一些解决问题的命令,强烈建议收藏!!
一、概念
Git本地有四个工作区域∶
● 工作区 (Working Directory )
○ 工作区,在电脑上能看到的目录
● 本地版本库
○ 工作区有一个隐藏目录 .git
● 暂存区 (Stage/Index)
○ 用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表
● 远程的git仓库 (Remote Directory)
○ 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换
交换关系如下:
基本命令
从git服务器拉取代码
git clone https://github.com/xxxxxxxxx
配置开发者用户名和邮箱
git config user.name xxx
git config user.email xxx
创建、重命名、查看、删除项目分支,通过 Git 做项目开发时,一般都是在开发分支中进行,开发完成后合并分支到主干。
基于某个分支创建新分支
git branch xxx
对分支重命名
git branch -m 旧 新
查看分支列表
git branch
删除分支
git branch -d xxx
切换分支
git checkout xxx 从当前分支切换到xxx分支
git checkout -b xxx 基于当前分支新建名为xxx的分支
查看文件变动状态
git status -s
添加
git add . 全部添加
git add 指定目录 添加指定内容
提交
git commit -m '提交原因'
推送远端
git push --set-upstream origin xxx 将xxx推送远端
拉取远端代码(多人开发时开发前一定要先拉取)
git pull
看日志
git log
为项目标记里程碑
git tag xxx
git push origin xxx
将当前开发完成的内容标记为xxx并将xxx推送远端
将本地修改暂存
暂存:git stash save ‘保存的名字’
取出:git stash pop 注:跟栈一样先进后出此为取出
查看:git stash list 我保存了两个a是先保存的,b是后保存的,取出的话先取出b再取出a
也可通过这种方式取出指定内容
git stash drop stash@{xx}删除指定暂存内容
git stash clear 清除所有暂存
移动或重命名文件、目录
git mv 旧 新
将 旧重命名为新 ,同时添加变动到暂存区,加 -f 参数可以强制重命名,相比用 mv 旧 新命令省去了 git add 操作
从工作区和暂存区移除文件
git rm xxx
删除远程分支
git push orign --delete xxx
查看远程分支
git branch -a
删除以提交再远程仓库的文件
git rm -r --cached xxx
后提交 git commit -m “delete .idea”
关联远程仓库
git remote add origin https:xxxxx
首次推送
git push -u origin master
查看分支合并图全部
git log --graph
git log --graph --pretty=oneline --abbrev-commit 简版
git symbolic-ref --short -q HEAD 查看当前分支名称
查看当前最后一次提交的commit_id
git log -1 --pretty=format:%H # 完整的
git log -1 --pretty=format:%h # 前7位
可以查看已经commit 但是还没有push 的代码
git log master ^origin/master
查看到未传送到远程代码库的提交描述/说明
git cherry -v
命令如下:
git show COMMIT
或
git diff COMMIT^!
三、高级命令
rebase
git rebase branch_name 重新定义分支的版本库状态,合并分支,这个和merge很像但是有区别
submodule
git submodule 通过 Git 子模块可以跟踪外部版本库,它允许在某一版本库中再存储另一版本库,并且能够保持2个版本库完全独立
git submodule add https://github.com/gafish/demo.git demo
将 demo 仓库添加为子模块
git submodule update demo
更新子模块 demo
proc/cpuinfo processor
添加暂存区文件撤回
如果不小心把不需要的文件添加到暂存区,怎么撤回?
比如我不小心把依赖包文件夹node_modules(这个很大而且没必要git管理这份代码)add了,怎么撤回这个文件?
第一种方法:
$ git reset HEAD – node_modules
第二种方法:
$ git rm -r --cached node_modules
将已推送的commit撤回
将错误的commit且以推送到远端撤回提交
git reset --hard commit_id
git push origin HEAD --force
撤销commit
git reset --soft HEAD^ 如果想连着add也一起撤销的话将sort 换成 hard
HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1
如果进行两次的commit,想要都撤回,可以使用HEAD~2
–soft
不删除工作空间的改动代码 ,撤销commit,不撤销git add file
–hard
删除工作空间的改动代码,撤销commit且撤销add
–mixed:
(默认操作)将分支回退到指定提交,暂存区也被同步为该指定提交,工作区保持不变。
git commit --amend
这时候会进入vim编辑器,修改完成你要的注释后保存即可。
cherry-pick(将某提交合到当前分支)
git cherry-pick commit号 合并别的分支的指定提交到当前分支
合并
git merge 分支1 将分支1合并到当前分支
git merge --abort 取消合并
git checkout . //当前分支的修改会重置 谨慎使用
查本地所有分支
git branch --contains CommitID
查远程所有分支
git branch -r --contains CommitID
查本地和远程的所有分支
git branch -a --contains CommitID
撤销目录下的add
git restore --staged src/main/java/com/xxx/x’x’x/parser/