git使用讲解

这篇使用讲解主要针对,本地仓库和远程仓库之间的一些使用。

在讲解开始前,首先你得拥有一个本地仓库,进入你的项目文件夹,而后用git bash或者你的shell执行git init你便得到了一个本地仓库。

本地仓库的空间

git的本地仓库有三个概念:工作区、暂存区和版本库。

我们知道本地仓库除了我们能看到的文件以外,还有一个.git目录,我们能看到的这些文件就是我们的工作区,而.git就是git的版本管理得以存在的根本,称之为版本库。

版本库中有一个index文件,那就是暂存区。
还有一个objects文件夹,里面存放了不同版本的文件。

git还有一个分支的概念,分支相关文件在.git/refs下,每个分支中可能存在若干个版本,而当前使用的版本则有一个head指针指向,head文件在.git/refs/heads下,虽然叫做指针,但其实就是对应版本的哈希值。

哈希值对应的版本可在.git/objects中找到,哈希值的前两位是文件夹名字,后38位是对象名字。

首先,当前工作区会对应于某一分支,当我们在工作区对文件进行了修改以后,可以通过git add命令来将修改从工作区提交至暂存区,再通过git commit命令来提交至对应的分支下,具体来说是提交至obejcts并修改head的方式,至此我们就在该分支下得到了一个新版本。

你肯定很好奇分支中到底有哪些版本,git log可以满足你,而标有head的版本就是当前版本了。
tips:
分支的查看:1 git status 2 git log 3 .git/HEAD文件

常用命令的意义

git add <file>  //将修改从工作区提交至暂存区
git commit -m   //将暂存区文件提交至对应分支并
git checkout  -- <file> //将已修改未提交至暂存区的文件恢复
git fetch       //从远程仓库获取远程仓库中每个分支的最新版本的哈希值
git merge branch    //将后一个分支和当前分支所有的版本合并到当前分支,并创建一个新版本作为当前分支的head,用以记录合并变化的信息
git pull        //相当于远程的merge,不过是每个分支与从远程仓库的分支进行合并
git diff        //比较工作区与暂存区
git diff --cached   //比较暂存区与最新版本
git diff HEAD   //比较工作区与最新版本

修改的撤销

修改后未提交至暂存区

git checkout -- <file>从暂存区提取文件

修改后已提交至暂存区或对应分区

先使用git log找到分支前一版本或某一你需要的版本的哈希值
再通过git checkout <hash> <file>从某一版本中取出对应的文件
或者通过git reset <hash>直接获取某一版本的所有文件,该操作会消除所有该版本以后提交的版本,慎用

扫描二维码关注公众号,回复: 355659 查看本文章

一些猜想:
当checkout未指定hash值或者分支的时候,默认是从暂存区获取文件
分支名字可以代指分支最新版本哈希值

不成熟的小建议

1.多用git status查看当前情况
2.进行文件恢复之前,用diff查看变化情况
3.多用diff,merge以后,checkout之前,总之变更之前,不确定,就用diff和status看一下
4.尽量不要reset,失去部分版本,你永远不知道会发生什么
5.即使只在本地,也建议使用一个本地仓库,另外一个文件夹作为远程仓库

远程仓库(git服务器)的建立

首先,你得有个项目文件夹
其次,你应该把它git本地仓库

git init

接着,你要得到一个裸仓库,这个裸仓库就是你远程仓库的雏形

git init --bare <git本地仓库文件夹> <xxx.git>

你会得到一个xxx.git的文件夹,称之为裸仓库,然后你就可以把它放置于某个你能访问到的地方,通过ssh或者直接指定目录(本地)

最后,你只需对你的本地仓库依次git add git commit git push就ok了,其中git push需指明地址,第一次的话还需指明分支,它看起来是这样的:
git push --set-upstream <address> master

猜你喜欢

转载自blog.csdn.net/the_k_is_on_the_way/article/details/80024772
今日推荐