初始化本地仓库
Git 使用git init
命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以git init
是使用 Git 的第一个命令。
使用当前目录作为Git仓库,我们只需要使用$ git init
命令初始化它。
$ git init
Initialized empty Git repository in F:/learn/.git/
Initialized表示创建成功
提交文件到仓库
将一个文件添加到Git仓库需要两步,只需要执行git add
和git commit -m ""
命令。
$ git add .... add后可添加多个文件名
$ git commit -m "" 在 " "号输入的是本次提交的说明
查看工作区状态
在编辑和改动一个文件,我们可以通过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: word.doc
no changes added to commit (use "git add" and/or "git commit -a")
git status 命令
可以让我们时刻掌握工作区当前的状态,上面的命令告诉我们文件被修改,但还没有提交仓库。
执行git diff命令
可以查看文件变更内容。
$ git diff
diff --git a/word.doc b/word.doc
index e03ea8e..ae68263 100644
--- a/word.doc
+++ b/word.doc
@@ -1,2 +1,2 @@
- Create workflows to automatically build,
+Git is a distributed version control system.
git diff
命令通过(仓库里的文件和工作区文件进行比较)
撤销工作区文件内容
- 在工作区编辑文件出现错误,需要回滚前一次编辑 执行
git restore ...
命令撤销对工作区文件的修改 - 文件被放入暂存区(staged),还未提交到仓库。
git restore --staged <file>.
撤销暂存区文件回到工作区。
git reset --hard HEAD
撤销工作区中所有未提交文件的修改内容
版本回退
回滚上个提交版本 $ git log
和 $git reset --hard HEAD^
$ git log 查看提交版本
commit 8982ec4 7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master)
Author: yu311 <yu@gmail.com>
Date: Fri May 14 14:06:15 2018 +0800
Git 2
commit e54ebea3c209a690c39c13a46716e8fa000c366
Author: yu311 <yu@gmail.com>
Date: Fri May 14 13:03:36 2019 +0800
Git 1
$git reset --hard HEAD^ 回退到上一个版本
使用commit id
回滚任意版本$ git refolg
$ git refolg
e54ebea (HEAD -> master) HEAD@{0}: reset: moving to HEAD
e54ebea (HEAD -> master) HEAD@{1}: commit: Git 2
8982ec4 HEAD@{2}: commit (initial): Git 1
Git 1
commit 8982ec4 就是commit id号
$ git reset --hard 8982ec4
HEAD is now at 8982ec4 Git 2
在Git回退版本的时候非常快,这是因为git内部有一个指向版本的HEAD指针,当操作版本回滚时,内部其实是在更改HEAD值的指向。
Git 工作区、暂存区和版本库
工作区(Working Directory)
就是你在电脑里能看到的目录,比如我的 learngit 文件夹就是一个工作区:
版本库(Repository)
工作区有一个隐藏目录.git
,这个不算工作区,而是 Git 的版本库。
Git 的版本库里存了很多东西,其中最重要的就是称为stage
(或者叫 index)的暂存区,还有 Git 为我们自动创建的第一个分支 master,以及指向 master 的一个指针叫HEAD
。
图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个 "游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。
执行git add 把文件添加到暂存区(stage, index)。
执行git add git commit 把文件提交到HEAD (master)
删除文件
$git rm file
删除文件
$git status
查看文件状态
远程仓库
关联远程仓库
$git remote add origin [url]
推送本地仓库到远程仓库
$git push -u origin master
由于远程库是空的,我们第一次推送 master 分支时,加上了 -u 参数,Git 不但会把本地的 master 分支内容推送的远程新的 master 分支,还会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令。
克隆远程仓库
git clone [url]
Git 支持多种协议,包括 https,但通过 ssh 支持的原生 git 协议速度最快。
网友评论