前言
最近团队总有人对GIt指令有疑问,因此跑去调研和实际测试一番,还真发现了之前不太明白的问题,在这记录一下,也许可以帮到大家。
具体场景
初始化
git config --global user.name (userName)
git config --global user.email <demo@demo.com>
git init (name)
初始化repo(会自动创建文件夹)
git init
会在当前路径下初始化repo
本地场景
git add name
添加修改的文件
git add * 添加全部
git commit –m “123”
提交&注释
git status
查看状态
git diff HEAD –- <filename>
对比分析
git log
查看日志
远程场景
git remote add origin git@github.com:michaelliao/learngit.git
添加远程仓库
git push <远程名> <本地名>
推送
git pull
拉取
git reset HEAD
回滚
分支场景
git branch
查看分支
git branch < branchName >
创建分支
git branch –d < branchName >
删除分支(git branch -D name 强行删除分支)
git checkout –b name
创建并切换到分支
git checkout <branchName>
直接切换到分支,若分支不存在则报错
git merge <name>
在当前分支上进行合并
暂存场景
git stash 保存
git stash list 查看
Git stash apply 直接恢复
git stash drop(删除)
git stash pop(直接删除)
标签场景
git tag v1在要打分支的分支上 输入
git log
git tag vx commitid
git tag –d v1 删除
Git push <remoteName> <tagName> 推送单个标签
Git push <remoteName> --tags 推送全部标签
多人协作冲突场景
其他
Intellij IDEA中GIT问题
git rebase <branchName>
与merge有着类似的目的,但过程不一样
取消每个提交(commit),并且把它们临时保存为补丁(patch)(这些补丁放到“.git/rebase”目录中),然后把当前分支更新 到最新的“ branchName ”分支,最后把保存的这些补丁应用到本地分支上。
Shelve
Shelving is temporarily storing pending changes you have not committed yet.
非原生的git指令是intellij自带的工具
类似于stash,作为一个独立的存储点
fork
使用场景:
你想修改一个项目的代码
方法
访问github网站
在项目页面中点击fork( 自己github项目中就会多出一个复制的项目)
clone到本地
开发&commit
Push到我们fork的项目中
提交pull request
fetch与pull
git pull会将本地库更新至远程库的最新状态
git fetch只会将本地库所关联的远程库的commit id更新至最新
参考资料
1.http://gitbook.liuhui998.com/index.html
2.https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
3.…………