持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情
英文文档:git-scm.com/doc
获取当前分支名
git symbolic-ref --short -q HEAD
获取最新tag
git describe --tags `git rev-list --tags --max-count=1`
基础操作
//显示出所有有差异的文件列表
git diff branch1 branch2 --stat
//显示指定文件的详细差异
git diff branch1 branch2 文件名(带路径)
//显示出所有有差异的文件的详细差异
git diff branch1 branch2
//合并分支 先切换到dev_test
git merge feature/settlement
//查看本地分支
git branch -l
//查看远程分支
git branch -r
//查看全部分支
git branch -a
//查看远程分支地址
git remote -v
对比本地和远程
git diff master origin/master
更新
git pull thunder_origin master
解决pr冲突
// 添加远程仓库地址
git remote add 名字 仓库地址
git remote add thunder_origin http://git.xx.cn:8082/xxx.git
// 更新远程origin仓库代码 到 本地仓库
git pull thunder_origin master
// 然后解决冲突 在提交到自己fork的仓库分支
// 最后再提pr或者之前提过 pr也会更新
// 提过pr后 不要在修改对应分支 修改pr上也会修改
还原远程分支
// 还原本地分支
git reset b56de21f0c5365412c6c0cce5a9297fe390e2a66
// 强制提交,远程端将强制跟新到reset版本
git push -f origin sunxinqiang_poster
pull和merge的区别
git pull = git fetch + git merge
-
fetch和push命令可以分别对远程分支进行fetch和push操作,而pull不是直接跟远程分支对话的。
-
fetch同pull的区别在于:
- git fetch:是从远程获取最新版本到本地,不会自动merge
- git pull是从远程获取最新版本并merge到本地仓库
-
从安全角度出发,git fetch比git pull更安全,因为我们可以先比较本地与远程的区别后,选择性的合并。
-
git push 默认推送到master,如果有多个分支,则多个分支一起推送到远程
git分支与删除
// 创建本地分支1
git branch test
git checkout test
// 创建本地分支2
git checkout -b test
// 推送到远程
git push origin test:test
// 删除远程
git push origin --delete test
git push origin -d test
//删除本地
git branch -d test
git branch -D test
// 批量删除本地
git branch -l | grep feature/settlement | xargs git branch -D
检出项目到指定文件夹
git clone 远程地址 文件夹名
git clone http://git.xx.cn:8082/sunxinqiang/xx.git thunderbolt2
检出远程指定分支
git clone -b feature/settlement git@git.xx.cn:Web/xx.git
git clone -b 分支名 远程库地址
重命名本地远程仓库名
git remote rename 原名 新名
git还原所有没提交的更改
- 暂时采用编辑器的功能 这个没验证
git checkout . #本地所有修改的。没有的提交的,都返回到原来的状态
git 暂存更改
// 暂存
git stash
git stash save "work in progress for foo feature"
// 恢复 并删除暂存
git stash pop
git stash pop stash@{id}
// 恢复不删除
git stash apply stash@{id}
// 删除
git stash drop <stash@{id}>
// 删除上一个
git stash drop
// 全删
git stash clear
git merge 后未push 撤销
git reset --hard head
git基于远程分支新建分支
git checkout -b branch/new origin/master
合并trunk有冲突的解决方法
基于trunk新建分支temp
合并featrue分支 解决冲突
用temp分支提pr
删除项目git
//删除文件夹下的所有 .git 文件
find . -name ".git" | xargs rm -Rf
//初始化仓库
git init
master分支删除与重建
fork的master搞坏后
# 1.基于master_origin创建分支 master-b
# 2.gitlab设置master-b为默认分支
# 3.删除 master分支
# 4.基于master-b分支新建master
# 5.删除master-b
# 默认分支设置:gitlab-settings-general-generalProject
git tag 删除
# 删除本地
git tag -d v1
# 删除远程
git push origin :refs/tags/v1
# tag和远程同步,删除本地有 远程没有的tag
# --prune/-p 拉取代码前,删除远程没有的远程引用(tags除外)
# --prune-tags/-P 拉取代码前,删除远程没有的本地tag (需要加上--prune)
# --force/-f 如果更新了tag, 需要加这个才能更新本地tag引用
git fetch --prune --prune-tags --force
git fetch -pPf