相关学习文档可以看廖雪峰的教程: 链接
安装
Windows上安装Git
在官网直接 (https://git-scm.com/downloads)下载安装程序,默认安装即可。
安装完成后,开始菜单能找到“Git Bash”说明安装成功
安装完成后在命令行输入:
$ git config --global user.name 加上你的用户名
$ git config --global user.email 加上你的邮箱
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
创建仓库
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
第一步,先创建一个空文件夹
第二步, 通过git init命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
这样就完成了仓库的创建
目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
将文件添加到仓库
第一步,用命令git add告诉Git,把文件添加到仓库:
$ git add 加上文件名
第二步,用命令git commit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
git commit命令,-m后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。
查看仓库状态
要随时掌握工作区的状态,使用git status命令。
如果git status告诉你有文件被修改过,用git diff可以查看修改内容。
版本回退
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
工作区和暂存区
电脑上的目录文件夹就是工作区,工作区里有一个隐藏文件 .git ,这是Git的版本库。
而我们通过 git add 把文件添加进去,实际上就是把文件夹修改添加到暂存区
用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
撤销修改
改了工作区的内容,想直接丢弃工作区的修改时:
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
改了工作区的内容,还添加到了暂存区:
用命令git reset HEAD
删除文件
命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
远程仓库
添加远程仓库
在 Github 上创建 Git 仓库,在本地的仓库目录项运行命令:
$ git remote add origin git@github.com:GitHub用户名 + 仓库名
关联后,把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。
第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
////////
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;
关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;