目录
一、git简介
二、git安装
三、git基本命令
四、git分支
五、git远程仓库
六、学习小结
一、git简介
- git是一个版本控制工具,简单来说就是创建了仓库存储和管理代码。(就像个文件夹)
- 利用git可以对代码进行增删改查,最重要的是利于团队作开发。(你写好登录页的代码上传仓库,你同事写好订单页的代码上传仓库,俩人并不冲突,主要一句命令就可以更新得到对方写的代码,不需要拿U盘拷哦)
- 仓库分为本地仓库和远程仓库,本地仓库就是自己电脑,远程仓库就是远程服务器,像github和gitee网站就可以为我们提供远程仓库。对于储存在远程仓库的代码,团队里的任何人都可以任何时间、地点下载到本地,非常方便。
- git主要学习各种命令。
二、git安装
- 进入git官网(Git),点击下载
注:太慢的话可以用淘宝镜像下载(CNPM Binaries Mirror) - 点击Next安装(可以自行修改安装路径)
 - 这三个选项按需勾选,点击Next
 - 在开始菜单创建名为Git的目录,点击Next
 - 选择默认编辑器,点击Next
 - 选择git初始化默认分支的名字,默认为master,想要修改就在输入框填写想改的名字,点击Next
 - 从命令行或者第三方软件使用git,点击Next
 - 使用OpenSSL库来进行HTTPS连接,点击Next
  - 一直点Next即可,最后点Install安装
 - 安装完成,点击Finish
 - 现在开始菜单就多了一个Git文件夹,里面有五个图标

三、git基本命令
注:从开始菜单打开Git文件夹,点击里面的Git Bash或者Git CMD都可以写命令,除了长得稍微有点不一样,命令都是一样的。(我个人习惯用Git CMD)
1.基础配置
git config --global user.name "你的用户名" //设置用户名
git config --global user.email "你的邮箱" //设置邮箱
git config -l //查看所有配置

?2.使用SSH公钥
ssh-keygen -t rsa -C "你的邮箱" //三次回车,生成公钥


ssh -T git@gitee.com //确认并添加主机到本机SSH可信列表

?3.创建git版本库
进入需要进行管理的项目目录,执行git init创建本地git版本库。
git init
以管理C:\Users\蛋蛋\Desktop\project-SPH目录下的app项目为例。?

?此时C:\Users\蛋蛋\Desktop\project-SPH目录下就多了一个.git文件夹,创建本地仓库成功,该目录下的所有文件和文件夹都接受git的管理。?

?4.将文件提交到仓库
分两步,第一步将文件添加到暂存区,第二步将暂存区文件提交到仓库。
(1)通过git add命令将文件提交到暂存区
git add * //将所有文件添加到缓存区
git add 文件路径 //将指定文件添加到缓存区
?(2)通过git commit命令将暂存区文件提交到仓库
git commit //将暂存区所有文件提交到仓库
git commit -m '提交说明' //带说明的提交

5.查看仓库状态
文件新建、修改、添加到暂存区等状态都可以通过git status查询到。
git status //使用频率很高的命令,任何时候都可以用
?6.查看仓库中文件具体的修改
git diff //查看仓库中所有文件的改动情况
git diff 文件路径 //查看指定文件的改动情况
??
7.查看历史提交记录
git log //显示所有提交的历史记录

8.版本回退
如果对最新版本的代码不满意,想回到以前提交的某个版本,就可以使用命令回退。(再也不用苦苦撤销了,真的牛)
git reset --hard HEAD^ //回退到上一个版本
git reset --hard HEAD^^ //回退到上上个版本
git reset --hard "版本id" //回退到指定版本
??
9.回到未来的版本
如果现在又觉得还是最新的版本好,又想回到最新的版本,也是可以实现的。(有点欠揍,但git满足你的无理要求)
git reflog //查看未来版本
git reset --hard "版本id" //回到未来指定版本
??
10.撤销修改
(1)撤销工作区的修改(未被git add到暂存区的修改)
git checkout -- . //撤销工作区所有文件的修改
git checkout -- 文件路径 //撤销工作区指定文件的修改
(2)撤销缓存区的修改
git reset HEAD 文件路径
?
11.删除文件
(1)删除工作区文件(未被git add到暂存区的文件),鼠标右击,选择删除
(2)删除仓库中文件(仓库和本地的文件都被删除,要恢复的话要用版本回退)
git rm 文件路径
四、git分支
分支相当于一个副本,在我们需要增加某些新功能又怕打乱之前的代码,就可以从仓库拉取一个分支,在分支进行开发,最后分支代码没问题再把代码合并到主分支上。(默认就有一个名为master主分支,之前我们的操作都是在主分支master上进行的。团队合作都是在分支上开发,确定大版本的时候才会合并到主分支master)
1. 查看分支
git branch //查看本地分支信息
git branch -v //查看本地分支详细信息
git branch -av //查看包括远程仓库在内的分支详细信息

2. 创建分支?
git branch 分支名字 //创建一个分支

3. 切换分支
新建了分支之后,我们就可以切换到分支进行开发,而主分支master的代码不受到影响
git checkout 分支名字 //切换分支
git checkout -b 分支名字 //创建并切换分支
??
4. 合并分支
我们切换到新建的分支开发后,相当于在修改副本,原件也就是主分支master是不会被修改的。当我们在分支开发完毕,想要将代码同步到主分支master,就需要将分支合并到主分支上。(需要先切换回主分支master,才能操作)
git checkout master //切换回主分支master
git merge 分支名字 //将分支内容合并到主分支master
 ?
?


5. 删除分支?
在分支上完成了开发任务,并且已经把内容合并到主分支了,不需要该分支了,可以删除该分支。
git branch -d 分支名字

五、git远程仓库
远程仓库就是远程的仓库,如github、gitee等代码托管平台,你就可以在上面创建自己的远程仓库,其实可以说就是一个文件夹,将代码提交到远程仓库,你和团队成员就可以随时随地下载项目代码,对于多人协作开发非常方便。(之前都是对本地仓库的操作哈)
1. 克隆远程仓库到本地
如果想要把远程仓库的项目下载到本地,可以使用git clone进行克隆。
git clone 链接
?

2. 推送本地仓库到远程
git remote add origin 远程仓库地址 //origin是远程仓库默认的名字
 
3. 上传本地内容到远程仓库
git push -u origin "master" //首次推送时使用,将本地内容推送到远程仓库origin的master主分支
git push //以后使用简化命令
 
4. 从远程仓库获取最新内容
你和同事早上都使用git clone克隆远程库的项目到本地,各自进行开发,下午同事比你先下班,他下班的时候使用git push将他的最新代码提交到了远程版本库,后来你下班的时候使用git push提交你的最新代码到远程版本库就会报错,因为你的同事对某些代码进行了修改,现在你与远程版本库的代码就存在冲突,这个时候需要在提交之前使用git pull获取远程版本库的代码与你的代码进行合并,再使用git push提交就没问题。
git fetch origin master //获取远程仓库的最新代码
git pull origin master //获取远程仓库最新内容并合并,可直接使用这个

5. 查看远程仓库的信息
git remote -v

说实话我没太看懂这个远程仓库信息,可能只有我一个人在用使用该远程仓库,所以没有体现出远程仓库信息的作用吧。?
6. 关联本地分支与远程分支
之前的操作都是将内容推送到远程仓库的master主分支,前文提到过,团队开发协作中,你不能直接将代码推送到远程仓库的master主分支,大家都是在另外的分支进行开发,只有确定的大版本才会推送到远程仓库master主分支。之前直接git push是推送到默认的远程master主分支,要想以后直接git push就可以推送到另外的某个远程分支,那就必须通过配置将本地分支与该远程分支关联起来。(你也可以不关联,那你每次git push的时候都要写明是提交到哪个远程分支,怪麻烦的)
git branch --set-upstream-to=origin/远程分支名字 本地分支名字 //报错的话git fetch后再次执行该命令
?
?
?  
7. 修改本地仓库对应的远程仓库的地址?
当远程仓库地址发生变化时,需要修改本地仓库对应的远程仓库的地址,不然怎么把代码提交到新的远程仓库呢。
git remote set-url origin 新远程仓库地址
 ?
六、学习小结
git确实很牛,特别方便项目管理和团队协作开发,但是命令确实有点多,我这笨脑瓜子记不住,整理成笔记,忘了就回来看看。后面遇到用得频繁的git命令我会再更新笔记,大家发现错误的地方请指出,非常感谢!
|