git 分布式管理系统学习

这几天在学习git,看了廖雪峰的官方网站跟着步骤学习,还是有一些出错的点,总结并记录下一些自己遇到的问题:

1,安装git

到git官网下载并安装,很简单。

2,创建本地工作文件夹取名gitdemo

进入gitdemo文件夹,右键,gitbash窗口。输入

1 git init

这就相当于把gitdemo文件夹变成了git的版本仓库

3,添加文件到git仓库(也就是gitdemo)

1 git add read.txt   //说明要提交的文件
2 git commit -m "这里是注释" //提交

4,版本穿梭(回退,前进)

git status //命令可以让我们时刻掌握仓库当前的状态
git diff "文件名" //顾名思义就是查看difference,显示的格式正是Unix通用的diff格式,可以从上面的命令输出看到
$ git log
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Tue Aug 20 15:11:49 2013 +0800

    append GPL

commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Tue Aug 20 14:53:12 2013 +0800

    add distributed

commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao <askxuefeng@gmail.com>
Date:   Mon Aug 19 17:51:55 2013 +0800

    wrote a readme file

git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:

$ git log --pretty=oneline
3628164fb26d48395383f8f31179f24e0882e1e0 append GPL
ea34578d5496d7dd233c827ed32a8cd576c5ee85 add distributed
cb926e7ea50ad11b8f9e909c05226233bf755030 wrote a readme file
$ git reset --hard 3628164
HEAD is now at 3628164 append GPL
$ cat readme.txt
Git is a distributed version control system.
Git is free software distributed under the GPL.

在Git中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^回退到add distributed版本时,再想恢复到append GPL,就必须找到append GPL的commit id。Git提供了一个命令git reflog用来记录你的每一次命令:

$ git reflog
ea34578 HEAD@{0}: reset: moving to HEAD^
3628164 HEAD@{1}: commit: append GPL
ea34578 HEAD@{2}: commit: add distributed
cb926e7 HEAD@{3}: commit (initial): wrote a readme file
小结

现在总结一下:

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

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

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

5,工作区和暂存区

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

每次修改,如果不add到暂存区,那就不会加入到commit中。

6,撤销修改

$ git checkout -- readme.txt

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commitgit add时的状态。

git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

 

Git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区:
小结

又到了小结时间。

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

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

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

 7,创建分支与合并分支

Git鼓励大量使用分支:

查看分支: git branch 

创建分支: git branch <name> 

切换分支: git checkout <name> 

创建+切换分支: git checkout -b <name> 

合并某分支到当前分支: git merge <name> 

删除分支: git branch -d <name> 

8,bug修复

bug分支

9,创建标签

  • 命令 git tag <name> 用于新建一个标签,默认为HEAD,也可以指定一个commit id;

  •  git tag -a <tagname> -m "blablabla..." 可以指定标签信息;

  •  git tag -s <tagname> -m "blablabla..." 可以用PGP签名标签;

  • 命令 git tag 可以查看所有标签。

  • 命令 git push origin <tagname> 可以推送一个本地标签;

  • 命令 git push origin --tags 可以推送全部未推送过的本地标签;

  • 命令 git tag -d <tagname> 可以删除一个本地标签;

  • 命令 git push origin :refs/tags/<tagname> 可以删除一个远程标签。

10,自定义git

$ git config --global color.ui true

 

posted @ 2016-08-01 17:53  大名鼎鼎的博客  阅读(50)  评论(0)    收藏  举报