Git 的使用
- 两大特点:
- 版本控制:可以解决多人同时开发的代码问题,也可以解决找回历史代码的问题
- 分布式:Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。首先找一台电脑充当服务器的角色,每天24小时开机,其他每个人都从这个“服务器”仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。可以自己搭建这台服务器,也可以使用GitHub网站。
安装
sudo apt-get install git
Git使用
-
创建一个版本库
git init
-
创建版本
git add 文件名 // 将文件名加入到版本库中 git commit -m '版本信息' // 提交
-
查看版本记录
git log git log --pretty=oneline // 带参数,简略显示
-
回退版本
git reset --hard HEAD^ git reset --hard HEAD~1 // 后面的数字表示前多少个版本
-
回到之后的版本
git reset --hard 版本号
- 前面那堆黄色的就是版本号,写的时候复制前几个就可以了
-
查看操作记录
git reflog
- 若回到之前的版本后,终端不小心关了,又想回到之后的版本,这时就可以查看操作记录,里面可以查到版本号
-
工作区:你所操作的目录,即你代码文件所存在的目录
-
版本库:在工作区目录下有个
.git
,它就是版本库,里面有很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。 -
查看当前工作区的状态
git status
- 只要 commit 后,又没有新的操作,工作区就是干净的
- 只要没有 commit ,查看工作区状态就可以根据提示取消暂存,以及放弃修改回到修改前,但若 commit 后 ,就之只能版本回退回到之前的
-
取消暂存、丢弃工作区
git reset HEAD 文件名 //取消暂存 (add后没有commit) git checkout -- 文件名 //丢弃当前工作区 (没有add)
-
对比工作区中文件与之前的不同
git diff HEAD -- 文件名
-
对比两个版本间的文件的不同
git diff HEAD HEAD^ -- 文件名
-
删除
git rm 文件名 git commit -m '版本信息'
- 用
rm
删除了文件,若是真的想删,可以执行上面的两条语句,若是不小心,也可根据工作区的提示 checkou 一下,这样删除的文件就又回来了 - 命令
git rm
用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失 最近一次提交后你修改的内容
- 用
分支
-
分支就像工厂里一件产品的两条流水线,它们各自相互独立,当它们合并在一起时,一件完整产品就出来了
-
创建分支并切换到该分支
git checkou -b 分支名
-
查看当前在哪条分支
git branch
-
切换分支
git checkout 分支名
-
合并某分支到当前分支
git merge 分支名
- 合并分支有时可能会有冲突,这时就需要手动去修改,然后提交
-
删除分支
合并完后就可以删除了
git branch -d 分支名
-
显示分支合并情况
git log --graph --pretty==oneline
-
不使用快速合并:会做一次新的提交
git merge --no-ff -m '说明信息' 分支名
-
保存当前工作现场
git stash
-
查看之前保存的工作现场
git stash list
-
恢复工作现场
git stash pop
应用场景:当你在工作时,有一个bug需要你去紧急修复
- 先
git stash
保存当前你的工作现场 - 确定bug在哪条分支上,在该条分支上创建一条临时分支
- 在临时分支上修复bug ,修复完成,切回该分支,完成合并(尽量不要用快速合并),然后删除临时分支
git stash pop
恢复之前的工作现场
- 先
使用GitHub
-
SSH 生成
ssh-keygen -t rsa -C "邮箱地址"
主目录下的**.ssh** 文件夹中,
id_rsa.pub
文件里的内容就是 -
克隆项目
git clone 网址
-
若克隆出现错误,执行
eval "$(ssh-agent -s)" ssh-add
-
-
上传分支
git push origin 分支名 // 推送该分支到github上
-
本地分支跟踪服务器分支
git branch --set-upstream-to=origin/远程分支名称 本地分支名称
-
从远程分支上拉取代码
git pull orgin 分支名称
END…