Git -- 使用记录


创建版本库 -- 小结

现在总结一下今天学的两点内容:

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文
件;

第二步,使用命令git commit,完成。


时光机穿梭 -- 小结

要随时掌握工作区的状态,使用git status命令。

如果git status告诉你有文件被修改过,用git diff可以查看修改内容。


版本回退 -- 小结

现在总结一下:

HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭
,使用命令git reset --hard commit_id。

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版
本。

工作区和暂存区 -- 小结

暂存区是Git非常重要的概念,弄明白了暂存区,就弄明白了Git的很多操
作到底干了什么。

没弄明白暂存区是怎么回事的童鞋,请向上滚动页面,再看一次。

管理修改 -- 小结

现在,你又理解了Git是如何跟踪修改的,每次修改,如果不add到暂存区
,那就不会加入到commit中。


撤销修改 -- 小结

又到了小结时间。

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,
用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想
丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1
,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版
本回退一节,不过前提是没有推送到远程库。


删除文件 -- 小结
摘自网友评论:
提交代码的更改一共分2个阶段。

1).从工作目录,提交到stage。
2).从stage提交到master。

从工作目录提交到stage,需要用add或者rm命令,只提交到stage,而没有
提交到master,是不会自动同步到master的。

从stage提交到master用commit命令。

退回也是要分两步,一个是从master退回到stage,然后再从stage退回到
工作目录。

对于还没有提交到stage的,可以从stage用checkout命令退回,这一步会
取stage中的文件状态,覆盖掉工作目录中文件的状态,跟master完全没关
系。

对于已经到达stage的,想把state中的文件状态用master中的覆盖掉,就
用reset命令,这样就把stage中修改用master的状态覆盖掉了,完全跟工
作目录没关系

 

GitHub的 工作区与暂存区

工作区与暂存区之间的同步:
暂存区同步成工作区版本分两种情况,
1、工作区新建或者修改了文件
git add filename
2、工作区删除了文件
git rm filename
经过上面,就使得暂存区中的版本同步成了与工作区相同的版本。
若想让工作区同步成暂存区的版本呢?或者可以称之为回退。
git checkout -- filename
这使得工作区同步成了暂存区的版本。

暂存区与版本库之间的同步:
若想将版本库同步成与暂存区相同的版本,只需要git commit –m
“string”即可。
若想将暂存区同步成与版本库相同的版本,或称之为回退,git reset
HEAD filename。

版本库这一层次上也可以进行版本回退。比如我们想将版本库中当前版本
回退到上一个版本,可以git reset --hard HEAD^。

理清楚上面这些关系,就可以结合实现工作区、暂存区、版本库各自层次
以及层次之间的同步回退等操作。

下面用一个例子来说明一下。
(1)
首先在工作区新建一个文件world.txt,为版本A。
然后add到暂存区后马上commit到版本库。
此时,工作区、暂存区以及版本库里都是版本A。
(2)
工作区中修改world.txt文件,为版本B。
然后add到暂存区后马上commit到版本库。
此时,工作区、暂存区、版本库里都是版本B。
(3)
工作区中修改world.txt,为版本C。
然后只add到暂存区而不commit到版本库。
此时,工作区与暂存区里都是版本C,而版本库里是版本B。
(4)
工作区里修改world.txt,为版本D。
此时工作区里版本D,暂存区里版本C,版本库里版本B。

上面的这四步操作和四个版本作为前提,下面就进行三个层次四个版本的
同步。

如果以版本库为对象,此时版本库中是B版本,
若想让其成为A版本,可以进行版本回退,回退到上一个版本即版本A。
如果想让其同步成版本C,只需要commit一下。
如果想让其同步成版本D,则先add一下,然后commit一下。

如果以暂存区为对象,此时暂存区为C版本,
若想让其成为D版本,只需要add一下即可。
若想让其成为B版本,需要回退,reset一下。
若想让其成为A版本,需要先将版本库回退到版本A,然后暂存区reset成版
本库当前版本。

如果以工作区为对象,此时工作区为D版本,
若想让其成为C版本,checkout一下即可。
若想让其成为B版本,先将暂存区reset成B版本,在checkout一下。
若想让其成为A版本,先将版本库回退到版本A,再将暂存区reset成版本库
当前版本即版本A,然后checkout一下。

廖老师,您看看我这样理解对不对?

posted @ 2015-11-27 22:05  t800  阅读(114)  评论(0编辑  收藏  举报