Git入门
Git常用命令
git branch # 查看本地全部分支
git branch -a # 查看本地和远端全部分支
git branch -r # 查看远程所有分支
git reset --soft <commitId> # 撤销提交的commit信息,commit的代码不会消失
git reset --soft HEAD~1 # 撤销提交的commit信息回上1个版本,commit的代码不会消失
git reset --soft HEAD~2 # 撤销提交的commit信息回上2个版本,commit的代码不会消失
git reset --hard <commitId> # 撤销提交的commit信息,commit的代码[会消失]
git checkout <本地分支名> # 切换到本地另外一条分支
git --version / git version # Windows查询当前环境下的Git版本
git fetch -p / git fetch --prune # It will connect to a shared remote repository remote and fetch all remote branch refs. It will then delete remote refs that are no longer in use on the remote repository.
git config # 列出git的所有命令
git config --system --list # 查看系统config
git config --global --list # 查看当前用户(global)配置
git config --local --list # 查看当前仓库配置信息
# 创建版本库
git clone <url> # 克隆远程版本库,一般使用SSH方式
# 修改和提交
git status # 查看状态(当前分支)
git add . # 跟踪所有改动过的文件
git add <file> # 跟踪制定的文件(文件名不需要冒号括起来,这里的文件还需要加上后缀名,即文件类型)
git mv <old> <new> # 文件改名(文件名不需要冒号括起来,这里的文件名还需要加上后缀,即文件类型)
git commit -m "commit message" # 提交所有更新过的文件,并且附上“提交信息”
git push # push当前分支到远程仓库
git push -f # 强制push当前分支到远程仓库
git pull # pull远程仓库到当前分支
git pull -f # 强制pull远程仓库到当前分支
git rm <file> # 删除文件
git rm --cached <file> # 停止跟踪文件但不删除
# 分支与标签
git branch # 显示所有本地分支
git checkout -b [branch] # 新建一个分支并切换到该分支,基来自当前所在分支
git checkout <branch/tag> # 切换到制定分支或标签
git branch <new-branch> # 创建新分支
git branch -m oldbranch # 重命名本地分支
git branch -d <branch> # 删除本地分支
git tag # 列出所有本地标签
git tag <tagname> # 基于最新提交创建标签
git tag -d <tagname> # 删除标签
# 合并与衍合
git merge <branch> # 合并指定分支到当前分支
git rebase <branch> # 衍合指定分支到当前分支
git rebase --abort # 废弃当下rebase
# 远程操作
git remote -v # 查看远程版本库信息
git remote show # 显示远程仓库名字<remote>
git remote show <remote> # 显示指定远程版本库信息
git push # 上传代码以及快速合并
git push <远程主机名> <本地分支名>:<远程分支名> # 不同分支上传代码和快速合并
git pull # 下载代码以及快读合并
git push <remote> :<branch/tag-name> # 删除远程分支或标签
git push --tags # 上传所有标签
git push origin --delete <分支名> # 删除远端分支
git push origin <分支名> # 使用本地分支,在远端创建一个分支,名为<分支名>
# vim命令
# 场景:有时在git bash时会进入vim的编辑界面,此时需要通过Ctrl + C来输入vim命令进行操作
:w 保存文件但不退出vi
:w! 强制保存,不退出vi
:wq 保存文件并退出vi
:wq! 强制保存文件并退出vi
:q 不保存文件,退出vi
:q! 不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始在编辑命令历史
q 英文状态下按q键可以退出(比如在git log, git branch -a这样的显示状态下)
Git安装与环境配置
这一步网上有很多教程,不赘述。这里放其中一个教程的传送门,可以直接跳转过去:[Git & GitHub] Windows安装git和环境变量配置
连接Git与GitLab
通过将本地的Git和GitLab进行连接,可以实时保障代码在云端同步。详细的连接方法在这篇文章有较为详细的介绍:使用Git拉取GitLab上的项目
一、安装Git(windows版、其他平台参阅)
去Git的官网,下载安装包,安装时,一路默认
二、配置Git
2.1 在任意地方,创建一个文件夹,保证该文件夹的目录全部是英文
2.2 打开新建的文件夹,在空白处右击,菜单中点选 Git Init Here
2.3 再次右击,菜单中点选Git Bash,弹出命令行
2.4 配置所有本地仓的账号、邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
2.5 为避免每次远程访问输入密码,使用ssh登陆。ssh应该是与本机信息绑定的,所以每台电脑需要单独生成。
$ ssh-keygen -t rsa -C "youremail@example.com"
2.6 ssh只是本地详细,需要在GitLab中备份,才能被验证。打开自己的GitLab,在My Profile中,点击Add Public Key,title随意。
2.7 key中的内容在本机C盘中,C:Usersaccount(你的账户下),里面有个.ssh文件夹(运行2.5会产生),用文本文档打开id_rsa.pub,将里面的内容全部复制到key中,即可;
2.8 到此,基本配置完毕;我们需要获取GitLab上项目的地址,每个项目地址不同,一般在GitLab的Projects中,能找到跟你相关的所有项目,点开一个项目,就能看到项目地址,然后在Git Bash中输入类似如下地址:
$ git clone git@github.com:michiao/gitskills.git
2.9 在克隆仓库时,Git 通常会自动创建一个名为 master 的分支来跟踪 origin/master,如果需要关联不同的分支,使用命令
$ git checkout --track origin/br-2.1.2.1
2.10 将数据同步到本地,一般关联后,直接:
$ git pull
即可完成项目的拉取
至此,我们完成了一个在GitLab上的项目,到本地的过程。
入门
使用gitlab做Git仓库,不论对个人还是对团队都是一种监督和激励。
git 几个commit点合并成一个commit点
git log -- 获取git日志
git rebase -i <commit id> --以一个commit为基本
-- squash要被合并的commit,存储修改,结束
本地clone gitlab上的项目
- 在gitlab中复制ssh地址
- 在需要拉下文件夹的本地目录文件中使用Git Bash Here打开命令输入框
- 输入命令:git clone + “复制好的ssh路径”
Git进阶
引入git版本控制(即g)it管理文件之后,文件的颜色不仅仅是白色,会有多种颜色变化,以下对颜色的含义进行阐述:
- 红色:创建之后没有add,没提交,未加入版本控制范围之内,这时候文件时红色的,需要先add文件。
- 绿色:add之后文件是绿色的(即已加入版本控制),还没有提交(commit)。
- 蓝色:原本有一个文件,改动过后没有提交(commit)是蓝色的,提交之后,变成你正常颜色(即白色)。
- 白色:加入版本控制,已提交,无改动。
- 灰色:版本控制忽略文件。
git使用心得:
- commit之前review一下,检查代码时候有错误、是否规范。
- 平时开发在本地test分支开发,不要跑到master分支开发。
- 在团队合作开发的情况下,push项目到remote上时,先pull一下,让本地项目和remote端在本地合并好,再push上去。
Git图谱
其它
桌面辅助工具:tortoisegit
Git如何回滚一次错误的合并
在gitlab写博客
具体步骤如下:
- 在gitlab写博客的工具: https://hexo.io/
- cmd直接安装依赖:npm install hexo-cli -g
- 用markdown语法,轻量级
- 用Node.js把markdown的文件产生做一个博客文件
- 用这个可以部署在各大代码Git仓库(静态网站)
- hexo的一些介绍。可以部署在Github(麻烦一些)、可以的话部署在GitLab简单。https://search.bilibili.com/all?keyword=hexo