git初识
!img
最近做的一个小组合作的作业帮助我了解并且使用了一下git,这篇就像是一篇总结;就自己遇见的问题的一个总结,能力有限,大多知识来源于
- 廖雪峰Git简介
- learn git branching
git的基本介绍
git是一个分布式版本库;
版本管理库分为集中式和分布式;分布式的特点是每一个团队成员的电脑上都有都有一个本地的git仓库跟踪整个项目文件的修改;而集中式就是指本地没有仓库只有远程有一个集中所有的修改,成员都要层远程拉取信息
集中式的缺陷:
- 当项目大的时候拉取很费时间
- 当远程出现了故障整个仓库丧失了就不会再有
而分布式就有其相对的优势:
- 分布式本地主机就存储着修改(git仓库只存储修改而不是所有)只需要从远程拉取别人的修改
- 因为本地存储着修改,即使远程用来分享所有修改的仓库没有了,团队本地还有他们每个人做的修改只要再找一个主机每个人push上自己的修改就又可以恢复项目
本地仓库
在电脑创造本地仓库
修改
git init 命令完成后在其文件夹内出现.git(隐藏文件);这就是我们的本地仓库

之后git会跟踪在这个目录(plus1)下所有的修改
当进行了任何的修改之后
git add .将所有修改加入暂存区git commit -m “信息”将修改放入当前分支- 使用
git status可以查看当前的修改了什么,什么还没有加入暂存区什么已经加入

在.git文件夹中信息

版本回退
git reset

就是会退到上一个commit的状态; HEAD永远指向当前的版本,而HEAD^ 就是回退到上HEAD的上一个 当然也可以使用~3指定回退3个版本


同样也可以HEAD^^回退到前2个版本
还可查看其每个版本的版本号回到特定的版本;通过git log查看每一次提交的信息

commit后面的就是其版本号;回退到b6452c 的版本

远程仓库
将自己的修改递交到远程
git push origin <分支名>
提交时当出现本地的提交落后与远程仓库

拉取远程仓库的修改

出现冲突,需要手动修改分支;通过查看git status可以看见冲突的文件

查看修改的文件;删除不需要的

push test是只本地的修改,下面是远程的
修改完成之后只要在add, commit, pull 即可完成冲突的修改
再进行push就可以把自己的修改更新到远程

【先有远程库后有本地库】假设你已经在本地自己init创造出来了一个.git文件;然后想要从远程加载一个已有更改的仓库;首先使用git remote add origin ... 添加远程仓库get remote -v查看到添加成功

这个时候想要得到远程仓库的东西;使用git pull 会出现以下问题

而使用指定分支和创建跟踪信息的时候

问题:分支master不存在,git branch -a 查看所有branch

对比另一个可以正常工作的git仓储发现,真的没有master

通过查询资料发现,master在初始化后并不存在而是要进行一次git add和git commit之后才存在
再增加新的东西之后可以git branch --set-upstream-to=origin/master master但是pull的时候会出现偏离

事实上是因为我没有先进行git clone ....; 先有远程仓库再有本地仓库就是要先git clone
git clone之后的分支情况如下;有master


并且使用git push -u origin master是指
-u将push的分支和本地现在的分支设置跟踪信息origin是默认值远程仓库的名字
未完成的问题
- rebase
- 有的时候push会要求输入merge的必要性理由,为什么?