前言
一些废话,请自行跳过前言。
版本控制可以记录一个或多个文件的变化,方便我们在将来对文件进行控制。使用版本控制,我们对文件进行修改删除等任意操作后,仍可以轻松将文件恢复到原先的样子。
git则是一个分布式版本控制系统,每个人的电脑都是一个完整的版本库,安全性高于集中式的版本控制系统。因为个人电脑坏掉不要紧,其他人电脑上还有完整的版本库代码。集中式的话,中央服务器坏掉,所有人都无法工作了,因为需要从中央服务器拉取代码。
一些基本概念
- 工作区:本地的工作目录,可以直接对文件进行修改等操作。
- 暂存区:临时保存本地文件的修改。
- 本地仓库:记录本地所有提交版本,对应本地
.git
文件。 - 远程仓库:保存我们远程代码。
git 的工作流程
- 首先克隆远程仓库到本地,使用命令
git clone
。 - 在工作区修改代码。
- 将修改的代码添加到暂存区,使用命令
git add .
。 - 将暂存区的文件提交到本地仓库,使用命令
git commit -m 'some message'
。 - 将本地仓库的代码提交到远程仓库,使用命令
git push
。
一些常用的命令
git clone: 克隆项目到本地。
git init:初始化一个本地仓库。
git push: 推送本地仓库到远程仓库。
git pull:拉取远程仓库代码到本地仓库。
// branch 相关
git branch xxx: 创建一个 xxx 分支。
git branch -a:查看本地和远程的所有分支。
git checkout xxx:切换到 xxx 分支。
git checkout -b xxx:创建 xxx 分支,并切换到 xxx 分支。
git branch -d xxx: 删除本地 xxx 分支,对于未合并的分支,使用 -D,强制删除。
git push --delete xxx: 删除远程 xxx 分支。
git merge [branch]:合并 branch 到当前分支。
git cherry-pick [commit]:选择一个 commit ,合并到当前分支。
// add 相关
git add [filename]: 添加未跟踪/已更改的文件到暂存区。
git add [目录]:添加该目录下所有文件到暂存区。
git add . : 添加所有未跟踪/已修改的文件到暂存区。
git add -f [filename]: 强制添加文件到 git 版本控制中。有些文件 git 追踪不到时,可以使用该命令。
// commit 相关
git commit -m 'some message': 将暂存区文件提交到本地仓库中。
git commit -a -m 'some message': 将工作区文件添加到暂存区,然后将暂存区文件提交到本地仓库中。
// 查看信息相关命令
git log: 显示提交的版本历史。
git log -p: 显示每次提交的更改。
git log -p [file]:显示 file 文件的每次提交 diff 。
git diff:查看工作区和暂存区的不同。
git diff --cached: 查看暂存区和本地仓库之间的不同。
git diff [commitId]:查看工作区和某次提交之间的不同。
git diff [commitId] [commitId]: 查看两次提交之间的不同。
// 回退相关
git checkout [file]: 恢复暂存区指定文件到工作区。
git checkout . : 将暂存区所有文件恢复到工作区。
git reset --hard [commit]:回退到某次提交,同时重置工作区和暂存区与该次 commit 一致。
// stash 相关
git stash:将工作区文件保存到暂存区。
git stash list:查看 stash 历史列表。
git stash pop:取回最近一次的 stash 到工作区, 同时在暂存区删除该次 stash。
// tag 相关
git tag: 列出所有 tag 。
git tag [tagname]:新建一个 tagname 在当前 commit。
git tag -d [tag]:删除本地 tag
git push origin :refs/tags/tagname: 删除远程 tag