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