详细的介绍在廖雪峰教程网站上,本文为学习此教程过程中的总结,仅供个人参考。
1、创建版本库(repository)及添加文件到git
通过git init命令把当前目录变成Git可以管理的版本库:
$ git init
Initialized empty Git repository in F:/works/.git/
在当前工作区内(例如我works文件夹或其子目录)新建一个learninggit.txt文件(用cat命令查看文本内容):
$ cat learninggit.txt
I am learning git.
01.18.2018
添加文件到git步骤:
第一步,用git add命令把文件添加到仓库:
$ git add learninggit.txt
第二步,用git commit命令把文件提交到仓库:
$ git commit -m "I wrote a learninggit file"
[master (root-commit) 0dce692] I wrote a learninggit file
1 file changed, 2 insertions(+)
create mode 100644 learninggit.txt
为什么Git添加文件需要add
,commit
一共两步呢?因为commit
可以一次提交很多文件,所以你可以多次add
不同的文件,比如:
-
$ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files."
2、查看修改
- 要随时掌握工作区的状态,使用git status命令。
- 如果git status告诉你有文件被修改过,用git diff命令可查看修改内容。
3、版本回退
git log命令显示从最近到最远的提交日志。如果嫌输出信息太多,看得眼花缭乱的,可以试试加上--pretty=oneline参数。
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
现在,我们要把当前版本回退到上一个版本,就可以使用git reset命令:
$ git reset --hard HEAD^
-
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令
git reset --hard commit_id
。 -
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
-
要重返未来,用git reflog查看命令历史,以便确定要回到未来的那个版本的commit_id。
4、工作区和暂存区
Git的版本库(repository)就是工作区中的隐藏文件夹.git。Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。
添加文件到git中的过程如下(图来自廖雪峰Git教程):
5、撤销修改
git checkout -- learninggit.txt 命令可以让这个文件回到最近一次git commit
或git add
时的状态。git checkout -- file
命令中的--
很重要,没有--
,就变成了“切换到另一个分支”的命令。
用命令git reset HEAD file
可以把暂存区的修改撤销掉(unstage),重新放回工作区。
也就是说:
- 当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用git checkout -- file命令。
- 当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用git reset HEAD file命令,第二步用git checkout -- file命令。
- 已经提交了不合适的修改到版本库时,想要撤销本次提交,运用版本回退的方法,不过前提是没有推送到远程库。
6、删除文件
通常rm
命令可以删除文件或者直接手动删掉。现在在版本库内可有两个选择:
一是确实要从版本库中删除该文件,那就用命令git rm
删掉,并且git commit
:
$ git rm learning.txt
rm 'learninggit.txt
'
$ git commit -m "remove learninggit.txt"
[master d17efd8] remove learninggit.txt
1 file changed, 1 deletion(-)
delete mode 100644 learninggit.txt
现在,文件就从版本库中被删除了。
另一种情况是删错了,可从版本库里把误删的文件恢复到最新版本:
$ git checkout -- learninggit.txt
git checkout
其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。
7、用github做远程仓库
第一步在本地创建SSH key,若在Linux上可用以下命令创建SSH key,然后一路回车:
ssh-keygen -t rsa -C "[email protected]"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/you/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
再登陆github添加SSH key,找到账户里面添加SSH,把id_rsa.pub内容复制到key里面。然后在github上创建一个新的版本库btgit(例)。在本地仓库下运行:
$ git remote add origin [email protected]:NT795/btgit.git
关联本地仓库与远程仓库。如果在这里提示错误:fatal: remote origin already exists. 应该先删除远程 Git 仓库:
$ git remote rm origin
然后再添加远程 Git 仓库:
$ git remote add origin [email protected]:NT795/btgit.git
然后运行$ git push -u origin master 命令将本地仓库内容推送到github仓库(实际上是把当前分支master
推送到远程)。
由于远程库是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来,在以后的推送或者拉取时就可以简化命令。
从现在起,只要本地作了提交,就可以通过命令:
$ git push origin master
把本地master
分支的最新修改推送至GitHub。
8、从远程仓库克隆
用命令git clone
从远程仓库克隆一个本地库:
$ git clone git@github.com:NT795/gitskills.git