git 语法
使用前配置
git config --global user.name //提交人姓名
git config --global user.email //提交人邮箱
git config --list //查看git配置信息(q退出)
提交步骤
git init //初始化git仓库
git status //查看文件状态
git add 文件列表 //追踪文件,把文件存到暂存区 .为全部文件
git commit -m 提交信息 //向本地仓库提交代码
git commit -am 提交信息 //可以提交已经追踪过且修改的文件
git log //查看提交记录
撤销
git checkout 文件名称 //用暂存区中的文件覆盖工作目录中的文件
git rm --cached 文件名称 //将文件从暂存区中删除
git reset HEAD~ //撤销上一次提交 HEAD 代表:上一次提交
git reset --soft commitid //回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset --hard commitid //彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉
分支
git branch //查看本地分支
git branch -r //查看远程分支
git branch -a //查看本地和远程的所有分支
git branch 分支名称 //创建分支
git branch -m
git branch -d 分支名称 //删除本地分支(没有被合并不能删除时,-D强制删除)
git push origin -d 分支名称 //删除远程分支
git checkout 分支名称 //切换分支
git checkout -b 分支名称 //创建并切换分支
git merge 要合并的分支 //合并分支,要切换到上一级分支上
git stash save 剪切信息 //剪切,不在任何分支中,是独立开来的
git stash list //查看stash储存
git stash pop stash@{1} //粘贴
本地仓库推送到远程仓库
git push 远程仓库地址 分支名称 //本地仓库推送到远程仓库
git remote add origin 远程仓库地址 //给远程地址添加别名
git push origin 分支名称
git remote -v //显示所有远程仓库
git remote rm 远程仓库别名 //删除远程仓库
git remote rename old_name new_name //修改仓库名
git push -u 远程仓库地址 分支名称 //-u记住推送的地址及分支
git push
远程仓库克隆到本地仓库
git clone 仓库地址
拉取
git pull 远程仓库地址 分支名称
git push origin 分支名称
多人开发遇到冲突
- 先pull拉取最新的版本库
- 删除不需要的内容
git忽略清单
- 创建.gitignore文件
- 在文件里添加忽略的文件
为仓库添加详细说明
创建readme.md文件
生成公钥
许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。
GIT服务器上存储的是公钥,本地存储的是私钥,当需要push本地代码库到远程代码库,服务器会要求你出示私钥,并且用你出示的私钥和它的公钥配对来完成认证。由于使用的是不对称加密,所以公钥可以公开,只要保管好私钥就可以。
生成公钥和私钥的命令:ssh-keygen -t rsa 并按回车3下
执行查看公钥的命令:cat ~/.ssh/id_rsa.pub
clear清屏
cd进入下一级
git中一些选项解释
-d
--delete:删除
-D
--delete --force的快捷键
-f
--force:强制
-m
--move:移动或重命名
-M
--move --force的快捷键
-r
--remote:远程
-a
--all:所有
commit提交规范
feat:新功能(feature)
fix:修补bug
docs:文档(documentation)
style: 格式(不影响代码运行的变动)
refactor:重构(即不是新增功能,也不是修改bug的代码变动)
test:增加测试
chore:构建过程或辅助工具的变动
opt: 代码优化
分支:
在我们每次的提交,git都会把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在git里,这个分支叫主分支,即是master分支。HEAD指针严格来说不是指向提交,而是指向master,master才是指向提交的。所以,HEAD指向的就是当前分支。
一开始的时候,master分支是一条线,git用master指向最新的提交,再用HEAD指向master,就能确定当前分支,以及当前分支的提交点,每次提交,master分支都会向前移动一步,这样,随着你不断提交,master分支的线也就越来越长。
当我们创建新的分支,例如dev时,git新建了一个指针叫dev,指向master最后相同的提交,再把HEAD指向dev,就表示当前分支在dev上
你看,git创建一个分支很快因为除了增加一个dev指针,改改HEAD的指向,工作区的文件都没有任何变化
不过,从现在开始,对工作区的修改和提交就是针对dev分支了,比如新提交一次后,dev指针往前移动一步,而master指针不变