【项目实训】学习git基础知识&git基础命令总结

辅助理解(建议看完指令后回来看):

仓库图解
这几个图可以比较直观地反映出基本指令的关系、存储区域的关系、分支间的关系。
workspace:工作目录/工作空间(写代码的位置)
staging area:暂存区(add后的位置)
local repository:本地仓库(commit后更新到的位置)
remote repository:远程仓库(云端,github就是一个免费提供远程仓库托管的网站,本地和github的通信要通过ssh协议通信,也支持https,但是ssh最快)
在这里插入图片描述
在这里,HEAD表示最新的版本。
在这里插入图片描述
在github(或者gitlab、gitee等网站)建立仓库以后,远程库的名字默认叫作 origin ,git clone以后本地master和远程库origin的master分支就关联起来了。如果是先git init 然后git push,两个master的关联要在git push时才完成。

分支图解
在这里插入图片描述
dev是新建的一个分支,并且进行过一次提交。
HEAD应该就是当前暂存区,也就是checkout后的那个分支的指针,它指向dev。
master始终指向主分支。
在这里插入图片描述
当我们发起合并时,master也指向了dev指向的版本,并且HEAD自动指向了master。
按具体开发任务来讲,当一个分支合并以后,这个分支就应当废弃了(可以直接git branch -d < branch name>删除),如果有新的需求,则需要重新开启一个分支进行开发。

在这里插入图片描述
当没合并dev和master时,直接切换到master上后,各个指针的状态如上图.

在这里插入图片描述
冲突,比如两边都修改一个文件,比如下面这种情况
在这里插入图片描述
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容.这种情况就必须要手动处理,手动改动这一部分.然后提交
在这里插入图片描述
当处理完冲突以后,就可以进行合并了,各个指针状态如上图.
在这里插入图片描述
因为我们git merge < branch>是将branch合并到本分支,我们可以利用这个特点来达到上图这种逻辑结构,比如在dev上开发时,尽管分支是master的分支,但合并的时候往dev上合并即可,这样也就可以达到上图的结构.

指令

建立仓库:
git init创建仓库
git clone 创建一个仓库的克隆版本

更改:
本地仓库由三部分组成:工作目录(持有实际文件)、暂存区(临时存储)、HEAD(指向最后一次提交结果,就是本地仓库)
git add提出更改(即加入到暂存区,将删除的文件也通知给暂存区,相当于在暂存区也删掉,并非都是“add”)
git add . 用的比较多,添加所有新文件到工作区
git commit -m “注释” 实际提交改动,此时已经同步到HEAD
git push origin < branch > 提交到远程仓库,分支名可以是master也可以是任何分支

分支:
git checkout -b < branch > 或者git switch -c < name> 创建并切换到branch分支,等价于 branch后再checkout
git checkout master 切换回主分支 master可以替换成任何一个分支
git branch -d < branch > 删除分支
git branch < branch name> 创建一个分支
git merge 合并某个分支到当前分支
git branch 查看本地分支
git branch -a 查看远程库所有分支

更新:
git pull同步至远程仓库(等价于fetch+merge,如果本地有多的文件,就会被删除掉)
git merge < branch > 合并其他分支到你当前的分支
如果出现冲突(conflict)就使用add方法合并
git diff < source_branch > < target_branch > 查看冲突/差异
git diff HEAD查看工作区和版本库最新的区别

查看状态
git status 比如查看当前本地与远程库差了多少次commit

查看git记录
git log

版本回退
git reset --hard HEAD
回退1个版本,git reset --hard HEAD^
回退2个版本,git reset --hard HEAD^^
回退100个版本,git reset --hard HEAD~100
回退后又想返回到原来的版本,git reset --hard < commit id>
这个commit id可以从原来commit结束后返回,也可以通过指令查找(git reflog)
回退原理
在这里插入图片描述
查看git历史操作记录
git reflog 包含了比如从clone开,比如切换分支、提交等记录

撤销操作
git checkout --< filename > 会将HEAD中的最新内容替换到当前工作目录中,也就意味着git checkout – file可以丢弃工作区的修改
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
git reset HEAD < file> 可以把暂存区的修改撤销掉(unstage)
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。

删除操作( 不要乱试
git rm < filename> 将文件从暂存区删除
git romte rm < name> 删除远程库

关联远程库
git remote add origin git@server-name:path/repo-name.git 感觉没什么必要,直接可视化创建仓库然后clone。这是先有本地库后创建远程库时才需要用的操作。

推荐两个git学习网站(也是这篇文章的参考资料):
傻瓜版教程-菜鸟教程
详细版教程-廖雪峰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值