Git 简单工作流
安装
Installing on Mac
通过 Homerew 安装
brew install git
其它平台安装可以参考:Installing Git
创建新仓库
创建新文件夹,进入,然后执行:
git init
检出仓库
// 从本地
git clone /path/to/repository
// 远端服务器
git clone username@host:/path/to/repository
工作流
本地仓库由 git 维护的三棵 “树” 组成。分别是:
-
工作目录
:持有实际文件 -
缓存区
: 它像个缓存区域,临时保存你的改动 -
HEAD
指向你最近一次提交后的结果
忽略某些文件时,需要编写 .gitignore
,比如:
/node_modules
/public/storage
/public/hot
/storage/*.key
/vendor
/.idea
Homestead.json
Homestead.yaml
.env
composer.phar
添加与提交
查看状态
git status
添加到暂存区
// 添加指定文件
git add <filename>
// 添加所有文件
git add *
// 添加当前目录的所有文件
git add .
提交暂存的区内容,纳入版本管理
git commit -m "代码提交信息"
查看提交纪录
// 显示所有纪录
git log
// 通过简短的方式显示
git log --oneline
推送改动
在提交到本地仓库的 HEAD
中后,可以将这些改动提交到远端仓库:
git push origin master
master
你的远端分支,当然可以任何分支
如果还有连接到某个远程服务器仓库,可以使用如下命令添加:
git remote add origin <server>
分支
分支是用来将特性开发绝缘开来的。在你创建仓库的时候,master
是 “默认的”。通常做法是在其他分支上进行开发,完成后再将它们合并到主分支上。
创建一个分支并切换到该分支
git checkout -b feature_x
// 你在此分支上进行开发...
完成工作切换回 master
分支
git checkout master
删除不需要的分支
git branch -d feature_x
除非你将分支推送到远端仓库,不然该分支就是 不为他人所见的:
git push origin <branch>
更新与合并
-
pull
:更新你的本地仓库至最新改动
git pull
将会在你的工作目录中
获取(fetch)
并合并(merge)
远端的改动
-
merge
:合并其他分支到你的当前分支(例如master
):
git merge <branch>
无论是 pull
还是 merge
操作,git
都会尝试去自动合并改动。但自动合并并非次次都能成功,并可能导致 冲突(conflicts)
。 这时候就需要你修改这些文件来人肉合并这些 冲突(conflicts)
。
改完之后,你需要执行如下命令以将它们标记为合并成功
git add <filename>
然后将合并的改动提交到版本控制
git commit -m “fix 冲突”
当然,在合并改动之前,也可以使用如下命令查看两者的不同之处:
git diff <source_branch> <target_branch>
替换本地改动
如果你对文件有错误修改,可以实用命令替换掉本地改动
git checkout -- <filename>
此命令会使用
HEAD
中的最新内容替换掉你的工作目录中的文件。已添加到缓存区的改动,以及新文件,都不受影响。
git checkout -- <filename>
命令中的--
很重要,没有--
,就变成了 “切换到另一个分支” 的命令
回退所有内容到上一个版本
git reset HEAD^
回退到某个特定的版本
git reset c7bf4e542fe368a1c1f558418fa19ad748480e80
将本地的代码回退到远程的一样
git reset --hard origin/master
标签
软件发布时创建标签,是被推荐的。这是个旧有概念,在 SVN
中也有。可以执行如下命令以创建一个叫做 1.0.0
的标签:
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff
是你想要标记的提交 ID 的前10
位字符。
使用如下命令获取提交 ID:
git log
你也可以用该提交 ID 的少一些的前几位,只要它是唯一的。