相信现在做开发的各位对Git都不会陌生了吧,也许有的公司还在用SVN,但Git你一定也要学,Git是目前最流行的分布式版本控制系统,看看Github有多火就知道了,最近的B站后端部分源码泄露和996ICU真是让Github也跟着火得不行,这你还不来学习Git?
而且就我个人做前端的经验来看,基本上中大型项目都使用Git来作为版本控制系统了,这么多人用自然是个好东西。
之前我对Git也是一知半解,这段时间利用空闲时间恶补了一下Git,真的对Git有了新的认知,这里就给大家分享一下我总结出来的白话教程,简单易懂,如果你是没时间没精力去细细研究Git的人,那么恭喜你,看完我这个教程,基本的Git命令和操作你都能够完成,其实真实开发中也用不到太多的Git命令。
因为楼主是Windows系统,所以命令也都是Windows的写法,Mac好像是加上sudo? 反正差别也不是太大。
Windows:
安装完后设置name和email
git config --global user.name "Your Name"
git config --global user.email "email@example.com"
在文件夹创建git仓库
git init
添加文件到git仓库
git add 文件名(带后缀)//可反复提交
git commit -m '你提交的备注'
查看git仓库工作区的状态
git status 一般告诉你文件有没有修改什么的
查看git仓库文件修改后的内容
git diff 文件名
查看git仓库提交历史
git log
--pretty=oneline 简化行数
查看git仓库最新回退记录
git reflog
git仓库代码回退
git reset --hard 提交的历史id
历史id可以使用HEAD^替代
HEAD^上一个版本
HEAD^^上上个版本(依次类推)
GIT的暂存区和工作区
暂存区就是GIT的stage这个区域
工作区就是你git base的文件夹区域
代码提交后是到了GIT自动给你创建的master主分支上
撤销修改
没有add 没有commit 使用git checkout -- 文件名
add了 没有commit 使用git reset HEAD 文件名
add了 也commit了 使用git reset --hard 历史版本id
GIT仓库删除文件
add commit新文件后手动删除了工作区的这个新文件
1.如果想要完全删除
先删除GIT仓库的这个新文件再提交
git rm 文件名
git commit -m '你的备注'
2.如果不小心删除想要恢复(必须是你之前提交过这个新文件)
git checkout -- 新文件名
工作需要了解-GIT的远程仓库(针对第一次使用远程仓库的人)
1.注册github账号。
2.创建SSH Key。
ssh-keygen -t rsa -C "你的邮箱"
id_rsa是私钥,不要泄露
id_rsa.pub是公钥,无所谓
3.guthub使用公钥关联你本地的仓库。
步骤:
1.登陆GitHub,打开“Account settings”,“SSH Keys”页面。
2.然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容。
3.点“Add Key”,你就应该看到已经添加的Key。
添加远程库
步骤:
1.登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。
2.在Repository name填入(你想要取的远程库名),其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库
本地仓库关联远程库命令
git remote add origin git@github.com:michaelliao/learngit.git(这里换成你远程库的github链接)
PS:关联完成后,远程库的默认名字就是origin,不需要再次输入上面的一长串。
本地仓库文件推送到远程库
git push -u origin master
意思是把本地仓库的master分支里的东西推送到远程库
PS: -u是远程库是空的,第一次关联使用
之后如果本地仓库修改了内容,直接这样推送到远程库
git push origin master
当然大家去新公司的第一件事是什么?先配好所需环境,之后当然是拉代码到你本地了。
从远程库克隆代码
git clone 你公司给的github邮箱地址(你需要自己弄一个空文件夹,并且git base把文件夹变成本地GIT仓库)
分支管理工作
创建dev分支
git checkout -b dev(当然分支名可以自己取,公司协作一般是写自己拼音名)
PS: -b意思是创建这个分支并且直接切换到dev这个分支上
-b等于执行了2个步骤 git branch dev 创建dev分支 git checkout dev 切换dev分支
查看所有分支
git branch(其实现在很多IDE,比如VS都可以在左下角看到自己所在的分支)
合并分支
1.先要切换到想要保留的分支比如master分支
git checkout master
2.把dev分支合并到master主分支
git merge --no-ff -m '你的备注' dev(最好使用--no--ff来合并,因为可以看到合并记录)
删除分支
git branch -d dev //-d是必须的,等于执行delete命令
解决冲突
查看分支合并图
git log --graph
手动编辑文件成自己需要保留的内容再提交。
隐藏分支
git stash
恢复之前隐藏的分支
推荐:git stash pop 切换到隐藏的分支,执行这个命令,可以恢复的同时删除stash内容
git stash apply也可以恢复内容,但是不能删除stash内容,所以还要手动删除stash内容
查看分支被隐藏的内容
git stash list
强制删除分支(没合并过)
git branch -D 分支名
GIT多人协作流程
1.首先,可以试图用git push origin <branch-name>推送自己的修改;
2.如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3.如果合并有冲突,则解决冲突,并在本地提交;
4.没有冲突或者解决掉冲突后,再用git push origin <branch-name>推送就能成功!
5.如果git pull提示no tracking information,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream-to <branch-name> origin/<branch-name>。
git rebase
rebase操作可以把本地未push的分叉提交历史整理成直线;
rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。
打标签
git tag 标签名(一般为v1.0这样的版本名)
查看标签
git tag
显示标签信息
git show 标签名
删除标签
git tag -d 标签名
推送标签到远程库
git push origin 标签名 //推送指定标签
git push origin --tags //推送所有标签
远程删除标签
1.本地删除标签
git tag -d 标签名
2.远程删除标签
git push origin :refs/tags/标签名
自定义Git
git命令显示颜色
git config --global color.ui true
git自定命令名
比如把git status改成git st
git config --global alias.st status
最后还想要仔细研究Git的,推荐一下完整学习教程-廖雪峰大佬的Git教程