git 学习
熟练git已经时现在程序员的标配了,然而在上手一段时间的git之后,发现git并不简单,所以特意写一篇文章用来记录git的知识点。~原文时间:2020-10-25 15:40~
在看了官方推荐的文档Git-book之后,可以说是懵的。 吐槽点:
- 我只想知道怎么用,我该怎么做。而Git-book讲解的更多是git的概念相关,作为小白自然就懵了。
- git命令非常的乱,一堆别名也非常让人头疼,而且在Git-book中还经常会在没有说明的情况下直接使用这些别名,然后用完了在告诉你,或者干脆不做讲解。
- git的log信息非常不友好,想要看到较直观的log,必须要加一堆参数。
总结:对于我这样的小白来说git相当不友好。
吐槽归吐槽,不论是公司要求还是未来的发展趋势,git在版本控制中占据主流,所以还是要硬着头皮学。
在网上搜寻了一番,找到了一些不错的文档
- git-recipes 一个实用主义的文档,主要教一些常用命令和少量的概念。
- 廖雪峰老师的git教程 讲的只是点不是很全,但循序渐进。
- coding的代码托管教程 由于github网速限制,现在很多公司都在用coding。
- 菜鸟教程 简洁,对于从来没有使用过git的新手非常不错。
- Git-book 官方推荐文档,比较难,有非常多概念性的东西。
git配置全局用户名和邮箱
git config --global user.name "John Doe"
git config --global user.email [email protected]
git查看全局配置
git config --list
创建空的git仓库
在所要创建的目录下git init
添加文件到Git仓库
git add <文件路径> git commit -m "说明信息"
查看文件状态和比较文件差异
git status git diff <文件路径>
查看最近提交的信息
git log
版本回退
//回退到上一个版本
git reset --hard HEAD^
//回退到上上个版本
git reset --hard HEAD^^
//回退到上100个版本
git reset --hard HEAD~100
//回退到指定版本
git reset --hard <指定版本号前几位>
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
提交修改
git add <文件路径>
撤销修改
##在工作区
撤销工作区的修改 git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销。
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
##已经添加到暂存区
撤销暂存区的修改
git reset HEAD
创建ssh Key
ssh-keygen -t rsa -C "邮箱地址"
#远程仓库
添加远程仓库
git remote add <customName>
例子
git remote add pd
git push -u pd master 上传pd仓库的master分支,pd是远程仓库的一个别名,-u表示指定一个默认的远程仓库,之后再提交直接git push 即可
查看远程仓库
git remote
直接从远程仓库克隆
git clone
这是最常见的作法
#分支
新建分支
git checkout -b <分支名> 创建并切换分支
相当于
git branch <分支名> 创建分支 git checkout <分支名> 切换分支
查看分支
git branch
切换分支
git checkout <分支名> 切换分支
合并分支到当前分支
需要提交之后才可以合并
git merge <分支名>
删除分支
git branch -d <分支名>
新的切换分支命令switch
git switch -c dev //创建并切换到dev分支、
git switch dev //切换到dev分支
储藏功能
工作只进行到一半,还没法提交,但是要修复bug分支
git stash 把当前工作现场“储藏”起来
git stash list 查看工作现场
git stash pop 恢复工作现场并删除
标签
创建普通标签
git tag <tagName>
创建附注标签
git tag -a <tagName> -m "备注"
查看标签
git tag
查看标签信息
git show <tagName>
默认标签是打在最新提交的commit上的。
如果要对某个特定的commit打标签则需要指定commit id
git tag -a <tagName> -m "备注" <commitId>
##标签的其他操作
命令git push origin
可以推送一个本地标签; 命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d
可以删除一个本地标签; 命令git push origin :refs/tags/
可以删除一个远程标签。
忽略特殊文件 .gitignore
/mtk/ 过滤整个文件夹
*.zip 过滤所有.zip文件
/mtk/do.c 过滤某个具体文件