首先,当然是安装git了,不用寻思,官网下载即可
https://git-scm.com/downloads
第二是设置账户,鼠标右键,选择git bush,在命令窗口中进行设置
git config --global user.name "Your Name" git config --global user.email "email@example.com"
第三是在项目文件夹中右键git bush进入命令窗口,键入git init 初始化仓库,命令会在本地文件夹创建一个.git的隐藏文件夹,通过文件夹设置可以看到该文件夹,请勿修改该文件夹内容
git init
哒哒哒,基本环境搭配好啦,开始基本的使用吧
1.git add 文件名.后缀
通过该命令把文件存入仓库暂存区
git add index.html
2.git commit -m “解释文档”
通过该命令把add过的文件提交到仓库工作区,-m后面是对本次提交的解释,不建议为空,方便其他工作人员简单明了的理解你干了什么
git commit -m "start working"
3.版本回退
有了版本提交肯定还要有版本回退不是吗?万一哪天你bug了,你肯定不想一行一行的删代码的,那么我们的git是怎么做的呢?
git reset --hard 0023a4
咦,这些git命令大都似曾相识,就是不明白是做什么的也能看出是个命令来着,但是这个0023a4是个什么鬼来着?其实这是我们的每一次对仓库做出修改时git自动为每一次操作保留的id,你当然不需要把id全部都写出来回归版本,但是也不要输入太少,因为在git多人协作的仓库中,那提交与回退的数量也是惊人的。不过这个id,我们又是如何获取的呢?
4.获取每一次仓库更改操作保留的id
git reflog
是不是很简单,过去的commit和reset操作全都出来啦,赶快看看你要回退到哪个版本吧!
5.撤销修改,针对文件是保留到工作区之后修改的和暂存区之后修改的两种情况会有不通过的结果
当然,你撤销修改的git代码是一致的
git checkout -- index.html
现在呢,就遇到的两种不同的情况分析得到的不同结果,以免将来一脸懵逼。
(1)保存到工作区后的修改,然后执行git checkout:回归到版本库工作区的状态
(2)保存到暂存区后的修改,然后执行git checkout:回归到版本库暂存区的状态
其实也不麻烦不是吗》?就是无论如何,我都只退一步,这么理解会不会简单了呢?!
当然,我们能够在每一次提交之前发现自己做了一个不可修复的错误,使用 git checkout -- file 总是好的,但是,如果你不但犯了一个致命的错误,还把它提交到了暂存区了呢?当然我们是有办法修复这个错误的,我们在之前的文章中也提到了
就是 git reset --hard 00123 嘛!回退版本!直接回到上一次提交到仓库时的状态。当然,你也可以选择更加温和的方式,仅仅撤销本次提交到暂存区的操作,保留你在文档中的修改,毕竟,万一你只需要修改掉“老子不干了这句话”,回退版本会不会太夸张了。撤销提交保留修改命令为
git reset HEAD index.html
6.删除文件
在需要删除某一个文件的时候,我们只需要输入 git rm file就可以啦,之后记得要commit一下哦,把你的删除提交到工作区,告诉仓库你删了谁
git rm test.txt git commit -m "confirm rm"
7.远程库
首先你需要在GitHub仓库键入你的ssh密匙,你可以在你的c盘user/administrator/.ssh文件夹中找到,注意这是一个隐藏文件夹,查看隐藏文件夹的方式可自行百度。如果在隐藏文件夹中没有找到该文件,需要打开 git bush 键入下列命令创建该文件,空白部分为你的邮箱
ssh-keygen -t rsa -C " @ .com"
无需设置密码,一直回车即可。然后打开GitHub,把你在c盘user/administrator/.ssh文件夹中获取的 id_rsa.pub(可用记事本打开全部复制)内容复制到GitHub设置中的ssh密匙处即可
(1)先有本地库,将本地库推送到远程。在github上创建一个仓库,例 learngit
连接远程库,注意使用英文字符,小心复制过来的字符的标点符号是中文样式导致的无法连接,注意不要复制我的下行代码,而是你的GitHub提供的路径地址,下行代码是我的库的地址
git remote add origin git@github.com:legendforfree/learngit.git
在本地库推送到GitHub
git push -u origin master
origin是远程仓库的意思,master,主分支,后面我们会提到分支的概念,-u的代码运用是为了将本地分支和远程分支关联起来,今后我们可以省掉这一部分。
只要本地库做出了修改,我们就可以通过下面的指令将其推送到远程库
git push origin master
(2)先有远程库,后有本地库(建议)
键入git clone 命令克隆远程库
git clone git@github.com:legendforfree/learngit.git
(2)既有本地库,又有远程库(不建议)
首先,会报错。
fatal: refusing to merge unrelated histories
因为 两个 根本不相干的 git 库, 一个是本地库, 一个是远端库, 然后本地要去推送到远端, 远端觉得这个本地库跟自己不相干, 所以告知无法合并
解决
git pull origin master --allow-unrelated-histories
8.分支
在之前我们讲到,我们有一个master分支,也就是我们的主分支,但是在我们多人协作的具体工作中,一条主分支是不够的,为了大家的工作互不干扰,我们需要在主分支的基础上创建自己的工作分支,等到自己的功能完善再将其合并到主分支。下面我们从创建一个分支开始吧
(1)创建分支
git branch dev
git checkout dev
git branch dev 命令是创建dev分支,
git checkout dev 命令是切换到dev分支
当然我们也可以是选择 git checkout -b dev 一次性完成上面的两条命令
查看分支命令,并在当前分支上加*标识
git branch
(2)合并分支
切换到主分支或组分支,使用 git merge 命令合并需要合并的分支,例如把dev分支合并到master分支
git checkout master //切换到主分支
git merge dev //合并dev分支到master分支
(3)删除分支
把dev分支合并到主分支之后,你可以根据自己的需要看是否需要删除dev分支,git鼓励创建分支再合并删除,因为这样是更无害而安全的。
git branch -d dev
(4)任务现场
暂存工作内容但不保留到暂存区或工作区
假设你工作还没完成,但是你接到了一个紧急的任务,因为没完成所以不能提交,git提供了一个保存任务现场的命令。
git stash
使用该命令,你做出的不完善的工作将被隐藏。然后你就可以快乐的创建一个bug分支愉快的改bug了。当你完成工作,合并并删除bug分支之后,还得回到我们的任务现场,因为除了紧急任务需要完成,我们的日常工作也是一刻不得放缓!那么这时候,我们又该怎么办呢?
git stash list //查看保留任务现场的列表
git stash pop //把任务现场内容提回本地并从list删除,也可以在 pop 后面加上具体提取哪一个现场 stash@{0}
git stash drop //从list删除多余的隐藏任务现场,不提取
(5)推送分支
推送分支就是把改分支上的所有本地提交推送到远程库,推送时要指定本地分支,这样,git就会把该分支推送到远程库上对应的分支上
git push origin dev
把我们做开发的dev分支推送到远程
(6)拉取分支
在我们推送分支之前往往需要先拉取,因为你不知道在你修改项目的时间范围内,有没有其他人往远程进行过推送,如果有推送,那么你不pull就push肯定是要bug的,拉取远程库到本地的代码为
git pull origin dev
8.创建标签
因为git的id比较长而不规则,所以有些不好记,所以git提供了一种方法作为对指定的某一个版本进行标记
git tag -a v1.0 -m "描述" a24534
git tag是添加标签,-a 指定标签名(-a和-m可省略)v1.0是标签名,也可以理解为产品的版本号,a24534是要打标签的分支上的那次操作的id,可以忽略,忽略默认标签给分支最后一次commit
git tag //查看标签,标签是按照字母排序的,不是创建时间 git tag show //查看标签具体信息
删除标签
git tag -d v1.0
推送标签到远程
git push origin tag v1.0
git push origin --tags //推送全部本地标签
删除远程标签
git tag -d v1.0 //先删除本地标签 git push origin :refs/tags/v1.0 //删除远程标签
常用命令
git status · 查看仓库状态
git diff 查看文档与上次提交后又做了哪些更改
git log 查看版本库提交日志
git reflog 查看每一次提交或回退命令
git branch -D test 强行删除未合并到其他分支的分支
git remote -v 查看远程库信息