1、Git的安装:
(1)msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可。
(2)安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
(3)安装完成后,还需要最后一步设置,在命令行输入:
$ git config --global user.name "Your Name"//用户名
$ git config --global user.email "email@example.com"//用户邮箱
用户名和邮箱是提交到Github时要用的,因为Git时分布式版本控制系统,所以得知道都是谁修改了程序;
注意git config
命令的--global
参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
2、创建版本库:
(1)随便创建一个目录,不要带中文(防止出现问题);
(2)通过git init
命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in g:/Git_test/7.1/.git/
瞬间Git就把仓库建好了,而且告诉你是一个空的仓库(empty Git repository),细心的读者可以发现当前目录下多了一个.git
的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
如果你没有看到.git
目录,那是因为这个目录默认是隐藏的,用ls -ah
命令就可以看见。
3、添加文件:
(1)在目录下新建一个readme.txt,用notepad++打开,编码格式为utf-8无BOM格式,内容如下:
this is first test;
(2)用命令
git add
告诉Git,把文件添加到缓存:
$ git add readme.txt
(3)用命令
git commit
告诉Git,把文件提交到仓库(目前这些操作都是本地,不涉及上传到Github):
$ git commit -m "wrote a readme file"
[master (root-commit) c07390b] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
-m 是添加描述,后面的是描述信息,就是每次修改的大概内容描述
4、修改文件:
(1)直接修改readme.txt,将内容修改为this is second test,然后通过git status查看结果:
$ git status
On branch master
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
(2)通过git diff readme.txt查看具体修改的内容
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index d8036c1..7950452 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1 @@
-this is first test
\ No newline at end of file
+this is second test
\ No newline at end of file
(3)将文件添加到缓存,git add readme.txt
(4)将文件提交到仓库,git commit -m "second change"
5、版本回退:
(1)通过git log查看修改记录
$ git log
commit b0d47d7ad6b14b3ae26340b5c47de4eba1752435
Author: Jalon2015 <1121263265@qq.com>
Date: Wed Jul 1 15:48:29 2015 +0800
second change
commit a69d113890318bef3cf771eb9d73ad08ac147d65
Author: Jalon2015 <1121263265@qq.com>
Date: Wed Jul 1 15:46:16 2015 +0800
wrote a readme file
(2)通过git reset --hard ID进行回退:
ID可以是commit后面的那串数字的前几位,也可以是HEAD、HEAD^或HEAD~100等等
$ git reset --hard b0d47d
HEAD is now at b0d47d7 changed second
6、工作区和缓存区的概念:
如图1:是git add file后的状态
(1)左边是工作区,就是我们新建的目录;
(2)stage是缓存区,git add file 就是把文件放到这个stage;
(3)我们创建Git版本库时,Git自动为我们创建了唯一一个master
分支,所以,现在,git commit
就是往master
分支上提交更改;你可以简单理解为,需要提交的文件
修改通通放到暂存区,然后,一次性提交暂存区的所有修改。
图1
如图2:是git commit -m "descripe"后的状态
图2
7、撤销修改:
有两种情况:
(1)撤销缓存区中的修改(此时只执行了git add,还没有git commit -m):git reset HEAD file
注意:这个撤销缓存区的修改,只是把缓存区中存放的修改过的文件删除了,但是工作区的文件还是修改过的,不是以前的;
要想删除工作区修改的文件,还得靠(2)
$ git reset HEAD readme.txt
Unstaged changes after reset:
M readme.txt
(2)丢弃工作区中的修改文件:
git checkout -- readme.txt
$ git checkout -- readme.txt
此时查看状态,会显示,工作区干净了,即修改的文件被丢弃了
运行git status
$ git status
On branch master
nothing to commit, working directory clean
8、删除操作:
在命令行运行rm test.txt即可删除工作区中的文件:
删除操作有两种情况:
(1)确实要从仓库中删除这个文件,那么可以继续运行git rm 和git commit -m ""进行删除(这样就可以删除仓库中的文件)
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d17efd8] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
(2)如果是误操作,可以通过git checkout 来撤销
$ git checkout -- test.txt
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
9、添加远程库:
(1) 要关联一个远程库,使用命令git remote add origin git@github.com:Jalon2015/2015.7.1.git
;
$ git remote add origin git@github.com:Jalon2015/2015.7.1.git
(2) 关联后,使用命令git push -u origin master
第一次推送master分支的所有内容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master
推送最新修改;
$ git push -f -u origin master
Counting objects: 6, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 508 bytes | 0 bytes/s, done.
Total 6 (delta 0), reused 0 (delta 0)
To git@github.com:Jalon2015/2015.7.1.git
+ a90ccd0...46c0ed5 master -> master (forced update)
Branch master set up to track remote branch master from origin.
细心的可能已经发现,命令行多了个-f,那是因为push的时候,远程仓库已经有一部分代码,此时就可以-f来强制覆盖即可(因为是刚创建的远程仓库,里面没啥重要的东西);
如果没有这个-f,可能会提示如下的错误:
$ git push -u origin master
To git@github.com:Jalon2015/2015.7.1.git
! [rejected] master -> master (fetch first)
error: failed to push some refs to 'git@github.com:Jalon2015/2015.7.1.git'
hint: Updates were rejected because the remote contains work that you do
hint: not have locally. This is usually caused by another repository pushing
hint: to the same ref. You may want to first integrate the remote changes
hint: (e.g., 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
10、从远程库克隆:
一般都是先创建个远程库,然后克隆到本地;
在Github上新建一个仓库7.1-17.35,在本地中新建一个目录,执行git clone git@github.com:Jalon2015/7.1-17.35.git:
$ git clone git@github.com:Jalon2015/7.1-17.35.git
Cloning into '7.1-17.35'...
warning: You appear to have cloned an empty repository.
Checking connectivity... done.