共计 3795 个字符,预计需要花费 10 分钟才能阅读完成。
基本概念
工作区(Working Directory): 就是你在电脑里能看到的目录
版本库(Repository): 工作区有一个隐藏目录.Git,这个不算工作区,而是 Git 的版本库。
暂存区 : Git 的版本库里存了很多东西,其中最重要的就是称为 stage(index) 的暂存区
配置
配置个人帐号信息
- CLI 方式:
git config --global user.email "jmilkfan@example.com" | |
git config --global user.name "jmilkfan" |
- Edit 方式 :
针对账户的配置: vim ~/.gitconfig
[ | ]|
| email = jmilkfan@example.com | |
| name = jmilkfan | |
[ | ]|
repositoryformatversion = 0 | |
filemode = true | |
bare = false | |
logallrefupdates = true | |
editor = vim |
针对单个项目的配置: vim projectName/.git/config
| repositoryformatversion = 0 | |
| filemode = true | |
| bare = false | |
[remote "origin"] | |
| url = http://fanguiju@192.168.1.1:8080/openstack/projectname | |
| fetch = +refs/heads/*:refs/remotes/origin/* | |
[branch "master"] | |
| remote = origin | |
| merge = refs/heads/master | |
[remote "gerrit"] | |
| url = ssh://fanguiju@192.168.1.1:8080/openstack/projectname.git | |
| fetch = +refs/heads/*:refs/remotes/gerrit/* |
安装
sudo apt-get install git | |
yum install -y git |
本地版本库
版本库又名仓库(repository),可以简单理解为一个目录,这个目录里面的所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
创建 Git 仓库
- 创建工作目录
mkdir jmilkfanDir
- 将工作目录变成 Git 工作区
cd jmilkfanDir | |
git init |
生成 .git 目录, 这个目录才是本质上的 Git 仓库, 是 Git 来跟踪管理版本库的根本。
- 在工作区创建文件, 并将文件添加到 Git 仓库中, 让 Git 仓库能够记录这个文件的当前状态(内容)
NOTE1 : 只能跟踪文本文件的改动(txt/html/ 代码文件),而没法跟踪图片、视频、word 文件这些二进制文件内容的变化
NOTE2 : 建议所有文件都使用标准的 UTF-8 编码
touch README.md | |
git status | |
git status -s | |
git add README.md | |
git add . | |
git diff | |
git commit -m "注释, 便于记录这次提交的内容主题" | |
git commit |
status 指令: 可以让我们时刻掌握 Git 仓库当前的状态
add 指令: 本质上是将工作区中的文件记录到 Git 仓库的暂存区中, 并没有真正写入到 Git 仓库
diff 指令: 看当前工作区中的文件内容与已往 Git 仓库中记录的内容有那些不同
commit 指令: 将暂存区的内容提交到 Git 仓库中记录. 所以, add 可以指定多个文件, 最终由 commit 一次性写入到 Git 仓库.
- 删除文件
git rm README.md | |
git commit -m "remove README.md" |
删除文件也会导致工作区和 Git 版本库的不一致, 所以也需要提交操作, 来让 Git 版本库来记录这一此的改变.
NOTE: 删错了, 也可以很轻松地把误删的文件恢复到最新版本
git checkout -- README.md
Git 仓库版本回退
Git 仓库的版本被称为 commit, 一旦你把文件改乱了,或者误删了文件,还可以回退最近的一个 commit.
通过 log 来查看 commit ID:
git log # 查看完整的 log 信息 | |
# Or | |
git log --pretty=oneline # # 查看简洁的 log 信息 |
回退的步骤:
-
首先,Git 必须知道当前版本是哪个版本,在 Git 中,用 HEAD 表示当前版本, 上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上 100 个版本写 100 个 ^ 比较容易数不过来,所以写成HEAD~100。
-
git reset
指令. EG:
git reset --hard HEAD^ | |
# Or | |
$ git reset --hard [commit ID] |
NOTE: 回退“回退”的方法
只要上面的命令行窗口还没有被关掉,你就可以顺着往上找到那个希望回退“回退”的 commit id
那么忘记了 commit 怎么办 ? 还可以使用 git reflog 指令
git reflog
修改管理
如果每次在工作区中对文件的修改,不 add 到暂存区,那就不会被提交到 commit 中.
所以当我们 git add 了一个文件后, 发现还需要继续对文件进行修改时, 先别着急提交第一次修改,再次 git add 第二次修改之后 git commit,就相当于把两次修改 合并 后一块提交了.
第一次修改 ⇒ git add ⇒ 第二次修改 ⇒ git add ⇒ git commit
- 撤销修改
我们可以通过git checkout -- filename
手动的把 filename 文件中的修改撤销掉.git checkout -- filename
命令中的 – 很重要,没有 –,就变成了“切换到另一个分支”.
把 filename 文件在工作区的修改全部撤销,这里有两种情况:
1. filename 文件自修改后还没有被 add 到暂存区,现在执行 git checkout -- filename
就能够撤销修改, 从而让文件回到和版本库中所记录的一样;
2. filename 已经 add 到了暂存区后,又对文件作了修改,现在执行撤销修改的话, filename 文件就回到 add 到暂存区后的状态(即仍会保留暂存区中的内容)。
NOTE: 针对第二种情况, 我们还可以在 commit 之前, 用命令 git reset HEAD filename
把暂存区的内容进行撤销,让 filename 文件重新放回工作区的状态. git reset 命令既可以回退版本,也可以把暂存区的修改回退到工作区。
- 使用技巧 :
场景 1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- filename
。
场景 2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,第一步用命令git reset HEAD file
,就回到了场景 1,再git checkout -- filename
.
场景 3:已经提交了不合适的修改到版本库时,想要撤销本次提交,git reset --hard [commit ID]
Git 教程系列文章:
GitHub 使用教程图文详解 http://www.linuxidc.com/Linux/2014-09/106230.htm
Git 使用图文详细教程 http://www.linuxidc.com/Linux/2016-11/136781.htm
Ubuntu Git 安装与使用 http://www.linuxidc.com/Linux/2016-11/136769.htm
Git 标签管理详解 http://www.linuxidc.com/Linux/2014-09/106231.htm
Git 分支管理详解 http://www.linuxidc.com/Linux/2014-09/106232.htm
Git 远程仓库详解 http://www.linuxidc.com/Linux/2014-09/106233.htm
Git 本地仓库(Repository)详解 http://www.linuxidc.com/Linux/2014-09/106234.htm
Git 服务器搭建与客户端安装 http://www.linuxidc.com/Linux/2014-05/101830.htm
Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm
分享实用的GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm
Git 从入门到学会 http://www.linuxidc.com/Linux/2016-10/135872.htm
Git 基本操作详解 http://www.linuxidc.com/Linux/2016-10/135691.htm
Git 的详细介绍:请点这里
Git 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-01/139831.htm
