Git 笔记
这篇笔记是我学习廖雪峰大佬写的Git入门指南时候做的笔记,基本上就是将文章中使用到的 Git 指令记下来,包括了用法和拓展的说明。如果有错误的地方,还请指出,谢谢!!!
简单介绍
Git 是分布式版本控制系统
执行提交时,系统会要求输入提交信息。

创建一个本地仓库及基本操作
创建一个版本库
1
2
3
4
5$ mkdir 库名 #创建库
$ cd 库名 #进入库
$ pwd #打印出当前库的位置
$ git init #将这个目录变成Git可以管理的仓库
$ ls -ah #显示隐藏的.git目录线把文件添加到版本库
1
2$ git add 文件名.后缀 #将文件添加到仓库
$ git commit -m "提交的说明" #将文件提交到仓库查看仓库状态
1
2$ git status #返回内容会告诉我们仓库的变化
$ git diff 文件名 #显示出文件变化的内容查看提交日志
1
2$ git log #显示从近到远的提交日志
$ git log --pretty=oneline #简化显示内容版本回退
1
2
3
4
5$ git reset --hard HEAD^ #回退到上个版本
#HEAD^代表上个版本,HEAD^^代表上上版本
#HEAD~100代表往上100个版本
$ git reset --hard #版本号前几位(至少5位)
$ git reflog #打印记录的每一次命令撤销修改
1
2
3
4
5
6#git add 之前的处理方式
$ git checkout -- 文件名 #将文件在工作区的修改全部撤销
#git add 之后的处理方式
$ git reset HEAD 文件名 #将暂存区的修改撤销
$ git checkout -- 文件名
# git commit -m 之后,直接回退版本删除文件
1
2
3
4
5$ rm 文件名 #删除文件管理器中的文件
$ git rm 文件名 #删除版本库中的文件
$ git commit -m 文件名 #删除后提交一下
#如果删错了
$ git checkout -- 文件名 #用版本库里的文件替换工作区的GitHub远程仓库操作
为GitHub创建SSH Key
1
2$ ssh-keygen -t rsa -C "邮箱"
#.ssh目录里,id_rsa是私钥,id_rsa.pub是公钥本地仓库连接GitHub仓库
1
2$ git remote add origin git@github.com:github账户名/仓库名.git
#origin 是远程仓库名,是默认的,可以改成其他的#通过不同的远程库名,可以让本地仓库连接多个远程库推送到远程仓库
1
2
3
4
5
6$ git push -u origin master) #将当前分支master推送到远程
#由于远程库是空的,第一次推送master分支时,加上了-u参数,Git
#不但会把本地的master分支内容推送到远程新的master分支
#还会把本地的master分支和远程的master分支关联起来
#在以后的推送或拉取时就可以简化命令$git push origin master
#将本地master分支的最新修改推送删除远程库
1
2
3
4$ git remote -v #查看远程库信息$ git remote rm origin
#根据名字删除,origin为默认远程库名
#这里的“删除”其实是接触本地与远程的绑定关系
#只有去GitHub上在后台页面找到删除按钮才能真正删除克隆本地及分支操作
从远程克隆一个本地库
1
2$ git clone git@github.com:GitHub账户名/仓库名.git #普通克隆
$ git clone -b 分支名 git@github.com:GitHub账户名/仓库名.git #克隆指定分支创建分支
1
2
3
4$ git checkout -b 分支名 #创建分支
#上面一条命令等于下面两条
$ git branch 分支名
$ git checkout 分支名查看当前分支
1
2$ git branch #查看当前所有分支
#列出来的分支中,当前分支前面会有一个 * 号切换分支
1
2
3
4$ git checkout 分支名 #切换分支
#更加科学,防止搞混的切换方法如下
$ git switch -c 分支名 #创建并切换到新的分支
$ git switch 分支名 #切换到已有的分支合并分支
1
$ git merge 分支名 #将分支合并到当前分支
删除分支
1
$ git branch -d 分支名 #删除分支
解决合并冲突
1
2#解决冲突需要我们手动编辑后重新提交
$ git log --graph --pretty=oneline --abbrev-commit #打印分支合并图禁用 Fast forward 模式合并分支
1
2$ git merge --no-ff -m "提交消息" 分支名 #禁用快速合并模式合并分支
#普通合并可以看出曾经做过合并,快速模式则不行“存储”当前分支(临时切换分支)
1
2
3
4
5
6
7
8$ git stash #将当前分支“存储”起来,以后恢复可继续工作
$ git stash list #查看“存储”起来的工作现场
#恢复方法一:恢复后,stash内容不会删除,需要单独删除
$ git stash apply #恢复
$ git stash drop #删除
#恢复方法二:恢复的同时删除stash的内容
$ git stash pop#多次stash后,选择性恢复
$ git stash apply stash@{0} #最后这里是需要恢复的编号复制一个特定的提交到当前分支
1
$ git cherry-pick 提交编号 #将该编号的提交复制到当前分支上
丢弃没有被合并过的分支
1
$ git branch -D 分支名 #强行删除未合并的分支
查看远程仓库的信息
1
2$ git remote #查看所有的远程仓库
$ git remote -v #查看所有远程仓库更为详细的信息推送分支
1
2
3#将该分支上的所有本地提交推送到远程库
#推送时需要指定本地分支
$ git push origin 分支名抓取分支
1
2
3
4$ git checkout -b 分支名 origin/分支名 #创建远程origin的分支到本地
$ git push origin 分支名 #推送到分支#推送发生冲突的时候
$ git branch --set-upstream-to=origin/分支名 分支名 #连接本体与远程
$ git pull #将最新的提交从分支中抓取下来整理分支提交历史
1
$ git rebase #将一大推分支图合成一条直线
标签基本操作
创建标签
1
2
3
4
5
6
7
8
9$ git branch #打印所有分支
$ git checkout 分支名 #切换到需要打标签的分支上
$ git tag 标签 #打上标签
$ git tag #查看所有标签
$ git tag 标签 提交的编号 #给指定的提交打标签
$ git show 标签 #打印出标签的信息
$ git tag -a 标签 -m "说明文字" 提交的编号 #创建带有说明的标签
#标签与某个commit(提交)挂钩的,如果这个commit(提交)出现在多个分支上
#那么这些分支上都可以看到这个标签操作标签
1
2
3
4
5
6$ git tag -d 标签 #删除标签
$ git push origin 标签 #推送某个标签到远程
$ git push origin --tags #一次性推送全部尚未推送到远程的本地标签
#删除远程标签
$ git tag -d 标签 #删除本地标签
$ git push origin :refs/tags/标签 #删除远程标签Git的修改操作
自定义Git
1
$ git config --global color.ui true #使Git会适当地显示不同的颜色
忽略特殊文件
在Git工作区的根目录下创建一个特殊的 .gitignore 文件,然后把要忽略的文件填进去,Git就会自动忽略这些文件

强行添加文件到Git
1
$ git add -f 文件名 #-f可以强制添加文件到Git中
设置自动补全
1
$ git config --global alias.st status #告诉Git st表示status
附录:命令表

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Aikikoの小窝!


