目录
1.git安装
1.1官网下载
1.2配置
2.git基本概念
2.1本地
2.2远程
2.1.1 代码托管中心是干嘛的呢?
单一团队程序员之间协作
多团队程序员之间协作
2.1.2 代码托管中心分类
3.git常用操作
3.1向远程提交代码
3.2不同阶段的代码回退
3.2.1 reset命令:前进或者后退历史版本
hard参数
mixed参数
soft参数
3.2.2 reset使用场景
假如你修改了工作区,并把工作区中的修改 git add 到了暂存区。如果你想撤销工作区和暂存区中的修改。
假如你修改了工作区,并把工作区中的修改 git add 到了暂存区,然后又 git commit 提交到了版本库。
假如你修改了工作区,并把工作区中的修改 git add 到了暂存区,然后又 git commit 提交到了版本库,并将本地分支的代码推上了云端。
3.2代码拉取
3.2.1 fork项目
3.2.2 clone项目,并添加远程项目路径
3.2.3查看项目远程仓库配置,如果没有源的地址则新增
3.2.4 添加源项目地址
3.2.5确认是否添加成功
3.2.6 获取源项目的更新
3.2.7 当自己fork的仓库更新时,需要
3.3分支关系和切换
3.4日志
3.5idea 使用git的场景
在IDEA中实战Git_idea如何使用git_大雨将至的博客-CSDN博客
Git
安装详情见https://www.cnblogs.com/liuwenwu9527/p/11688323.html
工作区(Working Directory):就是你在电脑里能看到的目录。说人话就是idea直接能看到的这部分纯代码区域。(不含 .git 目录)
暂存区(stage):从物理位置上看隶属于本地库,是版本库中设立一个暂存区(Stage or Index)。从功能上逻辑来看,是工作去本版本库交互的中间人。工作区文件的提交或者回滚首选都是通过暂存区。
本地仓库,也叫版本库(repository):代码下载下来后隐藏的.git目录,这个目录不属于工作区。即又可以称为版本库。 Git的版本库里存了很多东西,其中最重要的有三个,一个就是称为stage的暂存区,第二个就是Git为我们自动创建的第一个分支master,第三个就是指向master的一个指针叫HEAD。
由此可见,事实上,如果只是个人开发,本地结构已经很够用了,完全能满足代码的提交,回滚,版本控制,等操作。
我们已经有了本地结构,本地结构可以帮我们进行版本控制,为什么还需要代码托管中心呢?
它的任务是帮我们进行团队协作和跨团队写作开发。
局域网环境下: 可以搭建 GitLab服务器作为代码托管中心,GitLab可以自己去搭建
外网环境下: 可以由GitHub或者Gitee作为代码托管中心,GitHub或者Gitee是现成的托管中心,不用自己去搭建
我们将文件往Git版本库里添加的时候,是分两步执行的:
第一步,代码提交到本地仓
1.git add 文件,文件从工作区添加到暂存区
2. git commit -m 文件 ,文件从暂存区提交到本地仓的当前分支上去。(因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在git commit就是往master分支上提交更改。简单来说,就是add的文件全部放到暂存区,然后commit一次性提交暂存区的所有修改)
第二步,将本地仓库的修改Push到远程仓库
git push <远程主机名> <本地分支名>:<远程分支名>
举例
hard参数/mixed参数/soft参数
说人话就是执行了git reset --hard 某个commit提交的索引后本地的代码也就没了,变成了该索引对应的那个快照的代码。如果本地代码不要了,直接就hard就行。
说人话就是,执行git reset --mixed 某次commit的索引后,本地代码还是当前代码,但是暂存区和本地仓(版本库)中已经是该索引对应的快照代码了。
说人话就是,执行git reset --soft 某次commit的索引后,本地代码还是当前代码,暂存区也是本地代码,只是本地仓(版本库)中已经是该索引对应的快照代码了。
git reset --hard head # 简写为 git reset--hard
如果你仅仅只是想要撤销暂存区中的修改。
git reset --mixed # 简写为 git reset
注意,由于没有进入版本库,只是撤回暂存区,所以 hard 后面不用根header~n ,header^
如果你想回退到上一个版本,可以使用下面的命令。
具体的解决方法有: git reset --hard head^ 或 git reset --hard HEAD~1 ,这样本地代新写的代码被重置了,暂存区也回退了
注意:
1如果你回退版本时,采用的是 『 git reset --mixed 版本号 』,--mixed 其实本来就是默认选项。
那么,你只是更改了 head 的指向和回退了暂存区,而并没有回退工作区。
2如果你回退版本时,采用的是 『 git reset --soft 版本号 』,
那么,你只是回退了本地仓的版本号,暂存区和工作区没回退。
而,往往我么回退的场景就是代码提交到本地仓了,发现有问题,
这个时候,1要去回退,让本地仓不出现有问题代码,2是不想把本地代码清零了,因为要在这个基础上修改。
所以,一般采用git reset --soft HEAD "版本号"的方式。为啥不用git reset --mixed 呢,好想也行
如果你想撤销刚push到云端的代码,可以按以下步骤:
1.回退本地分支代码到上个版本 git reset --hard head^
2.将本地分支push到云端进行覆盖 git push origin wlb:master -f
我在想最好是不是git reset --soft head^ git push origin wlb:master -f ,因为这样既达到效果,又不重置本地代码
另外,可见远程的代码只能覆盖,不能撤回。
在github或gitee页面上, 点击fork按钮, 将B的项目拷贝一份到A自己的代码仓库中.
克隆A自己的代码仓库到本地.
git clone https://github.com/A/A.git
git remote -v
将B的项目作为最新代码的参考标准(upstream 是上游仓库的别名,别名随意命名)git remote add upstream https://github.com/B/B.git
git remote -v
git fetch upstream
git remote add origin https://gitee.com/northeast-big-bared-flower/kd-osysteam.gitgit pull
git push -u -f origin master
git fetch upstream
git merge upstream/master
在git中,可利用checkout命令转换分支,该命令的作用就是切换分支或恢复工作树文件,语法为“git checkout 分支名”;当参数设置为“-b”时,可以在新分支创建的同时切换分支,语法为“git checkout -b 分支名”。
git怎样转换分支
checkout最常用的用法莫过于对于工作分支的切换了:
git checkout branchName
该命令会将当前工作分支切换到branchName。另外,可以通过下面的命令在新分支创建的同时切换分支:
git checkout -b newBranch
该命令相当于下面这两条命令的执行结果:
1. git branch newBranch
2. git checkout newBranch
首先通过
$ git branch -a
来查看所在目录的分支
$ git branch -a
master
* trunk
remotes/origin/HEAD -> origin/master
remotes/origin/master
remotes/origin/zhanghanlun
然后输入命令切换分支
适用于第一次创建并切换分支
git checkout -b zhanghanlun origin/zhanghanlun
其中远程分支为origin/zhanghanlun
本地分支为zhanghanlun
如果已经有本地分支
直接输入命令
git checkout zhanghanlun
切换到本地为zhanghanlun的分支
git log 可以让我们查看提交的,显示从最近到最远的日志
当历史记录过多的时候,查看日志的时候,有分页效果,分屏效果,一页展示不下:
下一页:空格
上一页: b
到尾页了 ,显示END
退出:q
git reflog
HEAD@{数字} 这个数字的含义:指针回到当前这个历史版本需要走多少步