Git
Git,这个世界上目前最先进的分布式版本控制系统(没有之一)。
它的出现,可以让你结束手动管理多个“版本”的史前时代,进入到版本控制的 20 世纪。
[ Git 工作流 ] Git 和其他版本控制系统,如 SVN 的一个不同之处就是有暂存区的概念。
- 工作区( Workspace),是电脑中实际的目录。
- 暂存区( Index ),类似于缓存区域,临时保存你的改动。
- 仓库区( Repository ),分为本地仓库和远程仓库。
[ Git 常用命令 ] 通常提交代码分为几步:
git add
:从工作区提交到暂存区git commit
:从暂存区提交到本地仓库git push
或git svn dcommit
:从本地仓库提交到远程仓库。 < Gitlab >
一般来说,记住以下命令,便可进行日常工作了:
安装 Git
可以直接从 Git 官网上下载安装程序?!,进行安装。安装完成后:
1 2 |
// Mac 系统在命令行中输入 git --version 可以测试是否安装成功 // windows 系统上进入项目根目录,点击右键,安装成功的话,可以看到“Git Bash” |
[ 配置 - 自报家门 ] 安装完成后,还需要最后一步设置,在命令行中输入:
12 $ git config --global user.name "Your Name"$ git config --global user.email "email@example.com"
创建版本库(本地仓库)
什么是版本库呢?版本库,又名仓库(repository),可以简单理解成一个目录。这个目录里的所有文件都可以被 Git 管理起来,每个文件的修改、删除,Git 都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻进行“还原”。
第一步:在合适的地方,创建一个空目录(即,项目根目录)
12345 cd Webpiecepwd // 显示当前路径,/Users/admin/webpiecemkdir proj // 在 Webpiece 文件夹下创建 proj 项目目录cd projpwd // /Users/admin/webpiece/proj
第二步:初始化一个 Git 仓库 ( 生成 .git 隐藏目录 )
1 $ git init
然后,就可以写代码了 ...
第三步:文件备份 // 把文件存储到版本库,需要 2 步:
- 把文件添加到仓库(可批量添加)
1234 $ git add readme.txt // git add <file>// 执行上面的命令,没有任何显示,这就对了,Unix的哲学是“没有消息就是好消息”,说明添加成功。// 可以批量添加$ git add ./ // 除了多次 add 之外,可以使用该命令把当前目录中的所有文件添加到仓库
- 把文件提交到仓库
123456 $ git commit -m "write a readme file" // git commit -m <message>// 解析:-m 后面输入的是本次提交的说明,可以输入任意内容,当然最好是有意义的,这样你就能从历史记录里方便地找到改动记录。[master (root-commit) eaadf4e] wrote a readme file1 file changed, 2 insertions(+)create mode 100644 readme.txt
Then,一次次的进行编写代码的工作,一次次的备份 ... 以下命令对于了解当前状态有所帮助:
123 git status // 该命令可以让我们时刻掌握仓库当前的状态git diff // 查看difference,显示的格式正是Unix通用的diff格式
版本回退
[ 查看提交日志 ] 下面一大串类似
1094adb...
的是commit id
(版本号),和 SVN 不一样,Git 的版本号不是 1,2,3… 递增的数字,而是一个 SHA1 计算出来的一个十六进制数字(分布式版本控制,防止冲突)。
1234567 git log // 该命令可以显示从最近到最远的提交日志// 如果嫌输出信息太多,看得眼花缭乱的,可以试试加上 --pretty=oneline 参数$ git log --pretty=oneline1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) append GPLe475afc93c209a690c39c13a46716e8fa000c366 add distributedeaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 wrote a readme file
[ 返回操作 ] 每提交一个新版本,实际上 Git 就会把它们自动串成一条时间线。
123456 // 返回上一个版本$ git reset --hard HEAD^ // 查看实际内容,已经被还原了// 上一个版本 HEAD^ 上上一个版本 HEAD^^ 上100个版本 HEAD-100// 返回某一个版本$ git reset --hard e475afc93c20 // 复制版本号的一部分即可
现在,回退到了某个版本,关掉了电脑,第二天早上就后悔了,想恢复到新版本怎么办?
[ 历史操作 ] 找不到新版本的
commit id
怎么办?在 Git 中,总是有后悔药可以吃的。当你用$ git reset --hard HEAD^
回退到add distributed
版本时,再想恢复到append GPL
,就必须找到append GPL
的 commit id。Git 提供了一个命令
git reflog
用来记录你的每一次命令:
12345 $ git refloge475afc HEAD@{1}: reset: moving to HEAD^1094adb (HEAD -> master) HEAD@{2}: commit: append GPLe475afc HEAD@{3}: commit: add distributedeaadf4e HEAD@{4}: commit (initial): wrote a readme file