本文适用读者
对Git有基本的认识,或了解其大致原理,仅对操作比较生疏,本文适合作为工具书用于检索使用,也是博主用于备忘,偶尔翻阅
Git安装
# for ubuntu / debian
sudo apt-get install git
# for old_version ubuntu/debian
sudo apt-get install git-core
# for centos
sudo yum install git
# install from source_code
先从Git官网下载源码,然后解压,依次输入:
./config
make
sudo make install
这几个命令安装就好了。
# widows
直接去下面地址下载安装就好
https://gitforwindows.org/
安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
git 使用
先设置用户名和邮箱
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
创建版本库
$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
# 这样空的仓库建好了
添加文件
- 由于git 只能跟踪文本文件的改动,因此建议使用utf8 格式书写代码和文档。
- 不要使用windows 自带记事本进行书写
- 不要使用doc书写文档(不是文本,属于二进制文件)
- 推荐 sublime text ,notepad++
# 往readme.txt 中写一些内容,然后
$ git add readme.txt
提交文件
$ git commit -m "wrote a readme file"
# -m 后面是提交说明文档
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
为什么Git添加文件需要add,commit一共两步呢?因为commit可以一次提交很多文件,所以你可以多次add不同的文件,比如:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
查看状态
#运行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 com
查看修改情况
$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 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.
查看日志和提交版本
$ git log
回退版本
在Git中,用HEAD表示当前版本,也就是最新的提交1094adb…(注意我的提交ID和你的肯定不一样),
# 上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
$ git reset --hard HEAD^ # 表示回退到上一个版本
HEAD is now at e475afc add distributed
指定版本号回退 版本号不用写完整,只要不引起歧义
$ git reset --hard 1094a
HEAD is now at 83b0afe append GPL
若记不住版本号,或丢失版本号,也可以找回
git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file
git暂存区
add 之后算是放进了暂存区,commit 才会清空add的暂存
管理修改
每次add 都会管理一次修改,commit 只会清空add过的修改
撤销修改
git checkout – file可以丢弃工作区的修改:
$ git checkout -- readme.txt
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
删除文件
- 确实要删除
git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
- 删错了
$ git checkout -- test.txt
# 一键还原
克隆
-
我们一般主张建立远程仓库后克隆,然后就可以愉快的开展工作
$ git clone git@github.com:michaelliao/gitskills.git Cloning into 'gitskills'... remote: Counting objects: 3, done. remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3 Receiving objects: 100% (3/3), done. # 还可以用https协议 $ git clone https://github.com/michaelliao/gitskills.git # 然后就发现远程仓库的东西就进来了,然后就可以做自己的修改和文件的添加,最后上传 # ok ,that's all.一个简单的流程就走完了。