github--(17/12/2015)

github和git是什么关系

git是一种版本控制系统。跟svn、cvs是同级的概念。

github是一个网站,给用户提供git服务。这样你就不用自己部署git系统,直接用注册个账号,用他们提供的git服务就可以。


git的下载,在windows:https://git-for-windows.github.io/

安装完成后,还需要最后一步设置,在命令行输入:

$git config --global user.name"Your Name"$git config --global user.email"[email protected]"


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

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

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

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


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

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


git log命令显示从最近到最远的提交日志,我们可以看到3次提交,最近的一次是append GPL,上一次是add distributed,最早的一次是wrote a readme file。

如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数:


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

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

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


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

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

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

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

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


手动把文件恢复到上一个版本的状态。如果用git status查看一下:

你可以发现,Git会告诉你,git checkout -- file可以丢弃工作区的修改:

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

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

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

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

文件内容果然复原了。

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

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


命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

1.在工作区

方法:直接checkout撤销操作

2.在暂存区

方法:先reset HEAD退回操作区,再checkout撤销操作

3.在版本区

方法:只能版本回退




$ git config --global user.name "GirlPowerwndless"

$ git config --global user.email "[email protected]"

$ mkdir learngit

$ cd learngit

xiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)

$ pwd

/c/Users/xiaotinh/Music/learngitxiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)

$ git init

Initialized empty Git repository in C:/Users/xiaotinh/Music/learngit/.git/xiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)

$ git add readme.txt

xiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)

$ git commit -m "wrote a readme file"

[master (root-commit) dab77dc] wrote a readme file 1 file changed, 2 insertions(+) create mode 100644 readme.txtxiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)

$ git status

On branch masterChanges not staged for commit:  (use "git add..." to update what will be committed)  (use "git checkout --..." to discard changes in working directory)        modified:  readme.txtno changes added to commit (use "git add" and/or "git commit -a")xiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)

$ git diff readme.txt

diff --git a/readme.txt b/readme.txtindex d8036c1..013b5bc 100644--- a/readme.txt+++ b/readme.txt@@ -1,2 +1,2 @@-Git is a version control system.+Git is a distributed version control system. Git is free software.\ No newline at end of filexiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)

$ git add readme.txt

xiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)$ gig statusbash: gig: command not foundxiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)$ git statusOn branch masterChanges to be committed:  (use "git reset HEAD..." to unstage)

modified:  readme.txt

xiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)

$ git commit -m "add distributed"

[master 455f13b] add distributed

1 file changed, 1 insertion(+), 1 deletion(-)

xiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)

$ git status

On branch master

nothing to commit, working directory clean

xiaotinh@CNBEIN0L062666 MINGW64 ~/Music/learngit (master)

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

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

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

手动把文件恢复到上一个版本的状态。如果用git status查看一下:

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容

你可能感兴趣的:(github--(17/12/2015))