常用 git 命令

1、基本命令

  • git add .
  • git commit -m "first commit "
  • git push 远程仓库 本地分支:远程分支
  • git pull 远程仓库 远程分支:本地分支
  • git checkout -b "name" origin/release 创建并切换分支(以远端origin为基准)
  • git branch 列出本地所有分支
  • git branch -r 列出远端所有分支
  • git push origin --delete test 删除远程分支
  • git branch -d test 删除本地分支
  • git branch -D test 如果有未提交的文件,用它
  • git 2.23.0 以后版本,可以使用 git switch 切换分支,git restore path 丢弃暂存区修改
  • git remote update origin -p 同步本地分支与远程分支

2、进阶命令

  • git show // 显示当前分支的提交历史
  • git log // 显示所有分支的提交历史
  • git commit --amend //该命令会触发vim编辑器,用于编辑提交信息(此命令只适合本地commit尚未提交到远端,否则会有冲突)
  • git checkout -- filename // 取消工作区修改,即没有git add .过的文件
  • git reset HEAD -- filename // 取消暂存区,即git add .过但没commit过的文件,注意‘--’前后有空格
  • git reset HEAD~n // 撤销本地仓库当前HEAD之前n个版本的提交,暂存区会被干掉,工作区保留
  • git reset --hard HEAD~n //撤销当前HEAD之前n个版本的提交,暂存区和工作区都会被干掉
  • git merge branch-name //在当前分支合并branch-name分支
  • git rebase master // 在当前分支rebase master分支
  • git diff // 工作区和暂存区对比
  • git diff --staged // 暂存区和HEAD对比
  • git stash //切换分支前将工作区和暂存区(未git add 和 git add .的文件)放置临时存储区,否则会带到其他分支去
  • git stash pop // 取出临时存储区
  • git stash drop // 扔掉临时存储区
  • git stash --keep-index // 存储没有git add过的文件,用于不想提交某个文件
  • git cherry-pick commitID //在当前分支上提取别的分支的某次提交
  • git reflog 查看HEAD指针位置,git reset HEAD@{number} 回到某次提交
  • git tag -a "v2.8.0" -m "导入" 添加tag
  • git push origin v2.8.0 推送tag
  • git pull --rebase 避免多余的 commit 信息
  • git merge --squash branch_name 重新提交,一般用于往主分支上合并代码,避免将功能分支的提交记录合并到主分支上,方便回退
  • git bisect start HEAD ffnc // git 调试 git bisect bad/good/reset
  • git shortlog -sn 查看各成员提交次数
  • git log --author="" 查看哪个人的提交
  • git grep "fe" 查看哪些文件包含 fe
  • git subtree 相关
// 命名远端仓库为 common
git remote add -f common git@code.aliyun.com:happy-life/hl-common-frontend.git
// 添加公共模块 common 到 src/app/common 目录下,并使用 common 仓库的 prod 分支
git subtree add --prefix=src/app/common common prod --squash
// 从子仓库拉取更新
git subtree pull --prefix=src/app/common common prod --squash
// 推送更新到子仓库
git subtree push --prefix=src/app/common common prod

3、常见问题

  • 切分支时当前分支的修改被带到另一个分支问题
    有两种情况:1、当前分支新建了文件(原分支没有这个文件),在切分支之前必须commit掉才不会带到另一个分支;
    2、当前分支修改了某个文件(原分支有这个文件),在切分支之前有两种选择:1、可以使用stash命令缓存起来,这样不会带到另一个分支,当再切回该分支时,再用stash pop命令恢复缓存的修改,这种方式使用的更多;2、commit掉
  • rebase 和 merge 的区别
    merge执行一个合并,或者说一个融合。我们希望在当前分支上往前走,所以我们需要融合合并其他分支的工作,从而放弃其他的分支。一般是在master分支上merge其他分支,出现冲突解决即可。
    rebase存在的价值是:对一个分支做“变基”操作,这意味着改变这个branch的初始commit。它会在新的base上一个一个地运行这个分支上的所有commits.一般是在其他分支上rebase master分支,然后切回master分支,再做merge操作。
  • 怎么解决冲突
    首先搞清楚冲突的是哪个文件,其次搞清楚冲突的双方内容的位置,即哪个是本地的,哪个是远程的。见下图:


    解决冲突

    image.png

4、分支工作流

  • 多人协作


    多分支

    注意:此图代表的是远端分支情况!每次提交代码前请git pull代码,因为可能别人修改过远端branch分支

  • 个人工作流程
    比如你要做个新功能,则基于 master 分支创建 feature 分支,然后在本地执行git checkout -b dev ,在dev分支上开发,当dev分支的功能完成后,切回本地 feature 分支,在 feature 分支上执行git merge dev操作,然后提测 feature 分支。测试通过后,在master 分支上进行合并操作
  • 分支管理


    分支管理

5、可视化工具 sourceTree

用SourceTree轻松Git项目图解
SourceTree 免登录跳过初始设置
SourceTree通过配置SSH来链接GitLab

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354