一、常规指令
1.git init 在目录中创建新的本地 Git 仓库(隐藏文件夹.git)
2.git clone
- git clone url 使用 git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。
- git clone source repository destination repository 复制本地仓库的命令方式。
注意:
- source repository:想克隆的本地仓库路径;
- destination repository:想克隆去另一个地方的路径。目录必须没有在文件系统上创建,或创建了但里面为空,不然会克隆不成功。
- 与从远程拉取仓库不同,路径的最后不用写 .git 来表明这是一个仓库。
3.git add file(多个文件之间以空格分开) 可将文件添加到缓存
- git add -A 提交所有变化(A:all);
- git add -u 提交被修改(modified)和被删除(deleted)文件,不包括新文件(new),仅监控已经被add的文件(即tracked file)(u:update);
- git add . 提交新文件(new)和被修改(modified)文件,不包括被删除(deleted)文件。
4.git status 查看项目的当前状态(所含文件)
- git status -s 获得简短的结果输出。
5.git diff 显示已写入缓存与已修改但尚未写入缓存的改动的区别
- git diff 尚未缓存的改动;
- git diff --cached 查看已缓存的改动;
- git diff HEAD 查看已缓存的与未缓存的所有改动;
- git diff --stat 显示摘要而非整个 diff;
- git diff –cached commit 查看暂存区与指定提交版本的不同,版本可缺省(为HEAD)。
- git diff commit 查看工作区与指定提交版本的不同。
- git diff commit..commit 查看2个指定提交版本的不同,其中任一可缺省(为HEAD)。
6.git commit 将缓存区内容添加到仓库中
- git commit -m “…”
- git commit –am "…" 直接提交全部修改,相当于 add 和 commit 一起执行了。
注意:全部文件为 tracked 才行,你新建了文件为 untracked 时,该命令不会执行。
7.git reset HEAD 用于取消已缓存的内容
8.git rm
- git rm file 从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交;
- git rm -f file 如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f;
- git rm --cached file 如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可;
- git rm –r * 可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件,进入某个目录中,执行此语句,会删除该目录下的所有文件和子目录;
- git rm–rf directory 可删除指定目录下的所有文件和子目录。
9.git mv 用于移动或重命名一个文件、目录、软连接。
- git mv source destination 若 destination 不为一个目录名,则执行重命名。如果为一个目录名,则执行移动。
10.git checkout 只是替换指定的文件,对多余的文件保留不做任何处理。
11. git reset 是替换整个目录树,多余的文件将被删除。
12.git push -f 表示将目前自己本机的代码库推送到远端,并覆盖。
13.ls 显示当前仓库中的所有文件名称。
14.git log 列出历史提交记录
- git log --oneline 查看历史记录的简洁的版本
- git log --oneline --graph 查看历史中什么时候出现了分支、合并。
- git log --reverse --oneline 逆向显示所有日志。
- git log --author=XXX 查找指定用户的提交日志可以使用命令
- git log --oneline --before={3.weeks.ago} --after={2010-04-18}
15.git tag -a v1.0 为项目发布一个"1.0"版本,给最新一次提交打上(HEAD)"v1.0"的标签。-a 选项意为"创建一个带注解的标签"。
- git tag -a v0.9 85fc7e7 如果我们忘了给某个提交打标签,又将它发布了,我们可以给它追加标签。
- git tag
v0.9
v1.0
查看所有标签。
- git tag -a tagname -m "标签" 指定标签信息。
- git tag -s tagname -m "标签" PGP签名标签。
- git tag -d v1.1 删除标签。
- git show v1.0 查看此版本所修改的内容。
PS:
- git commit:是将本地修改过的文件提交到本地库中;
- git push:是将本地库中的最新信息发送给远程库;
- git pull:是从远程获取最新版本到本地,并自动merge;
- git fetch:是从远程获取最新版本到本地,不会自动merge;
- git merge:是用于从指定的commit(s)合并到当前分支,用来合并两个分支;
二、分支管理
1.git branch branchname 创建分支
2.git checkout branchname 切换分支
- git checkout -b branchname 创建新分支并立即切换到该分支下。
3.git merge 合并分支
4.git branch -d branchname 删除分支
三、GitFlow工作流:
- 主干分支 master 主要负责管理正在运行的生产环境代码。永远保持与正在运行的生产环境完全一致。
- 开发分支 develop 主要负责管理正在开发过程中的代码。一般情况下应该是最新的代码。
- bug修理分支 hotfix 主要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修理完毕并测试上线后,并回主干分支。并回后,视情况可以删除该分支。
- 发布版本分支 release 较大的版本上线前,会从开发分支中分出发布版本分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后可以视情况删除。
- 功能分支 feature 为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。 开发完成后会合并到开发分支。