1 安装git。
直接从Git官网直接下载安装程序,然后按默认选项安装即可。安装完成后,在开始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
2 创建一个版本库(repository)。
$ mkdir learngit //创建文件夹
$ cd learngit //进入文件夹
$ pwd //现实当前路径
/Users/michael/learngit
3 通过git init
命令把这个目录变成Git可以管理的仓库:
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
4 添加文件 git add的时候必须在已经是git的目录下。
$ git add readme.txt
提交文件
$ 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
后面输入的是本次提交的说明。
1 file changed
:1个文件被改动(我们新添加的readme.txt文件);2 insertions
:插入了两行内容(readme.txt有两行内容)。
5 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")
6 git diff 查看修改了什么。
$ 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.
7 git log
命令 查看日志
$ git log
commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 21:06:15 2018 +0800
append GPL
commit e475afc93c209a690c39c13a46716e8fa000c366
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 21:03:36 2018 +0800
add distributed
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 20:59:18 2018 +0800
wrote a readme file
最近的一次是append GPL
,上一次是add distributed
,最早的一次是wrote a readme file
。
8 git reset
命令,退回上一个版本。
$ git reset --hard HEAD^
HEAD is now at e475afc add distributed
在Git中,用HEAD
表示当前版本,也就是最新的提交1094adb...
(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^
,上上一个版本就是HEAD^^
,当然往上100个版本写100个^
比较容易数不过来,所以写成HEAD~100
。
$ git reset --hard 1094a
HEAD is now at 83b0afe append GPL
也可以这样,退回版本号。
9 git reflog
用来记录你的每一次命令。
10 git checkout -- file命令。撤销工作区的修改。也就是取消刚才的修改。
$ git reset HEAD readme.txt
Unstaged changes after reset:
M readme.txt
11 删除文件
$ rm test.txt
远程仓库,关联github或者gitee。
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa
和id_rsa.pub
这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面:
然后,点“Add SSH Key”,填上任意名称,在Key文本框里粘贴id_rsa.pub
文件的内容:
这一步的意思是把你本地git的密匙给了github或者gitee,这样他们就关联起来啦。
第三步:在github或者gitee建立仓库。最好名字和本地仓库一样。
第四步 运行命令:
$ git remote add origin git@github.com:dongaifeng/learngit.git
这一步的意思是把本地项目跟你在github,gitee上的仓库关联起来。这个地址可以在github上找到。
第五步 就可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
用git push
命令,实际上是把当前分支master
推送到远程。加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,以后的推送就不用加了。
$ git clone git@github.com:michaelliao/gitskills.git
git clone 是从远程库克隆到本地库。
git remote -v
origin git@github.com:dongaifeng/learngit.git (fetch)
origin git@github.com:dongaifeng/learngit.git (push)
git remote -v 是查看本地库都关联了什么远程库。
git remote rm origin
git remote rm 是删除关联 后面跟的是远程库名称。