本文是一个 Git 速查表,包含了可能每天使用的最常见的 Git 命令。
如果你是与开发人员一起工作的测试人员,你更应该熟悉基本的 Git 命令。
本文包含了作为一名 QA 需要掌握的 Git 知识点。
如果你的机器上没有安装Git,可以查看这篇文章 How to Install Git on Mac and Generate SSH Keys.
Git 初始化
初始化代码仓库
创建一个空的 Git 仓库或者重新初始化一个已存在的
代码语言:javascript复制git init
克隆代码仓库
将 foo 仓库克隆到一个名为 foo 的新目录中:
代码语言:javascript复制git clone https://github.com/<username>/foo.git foo
Git 分支
如何在 Git 仓库中创建一个新的分支
当您想开发一个新需求时,通常会在 Git 中创建一个新分支。可以远离主分支,处理自己的需求分支,这样 master 分支总是干净的。
要创建新分支
代码语言:javascript复制git checkout -b <new_branch_name>
如何在获取 Git 中所有分支
如果您想知道工作目录中有哪些分支可用,请使用:
代码语言:javascript复制git branch
输出示例:
代码语言:javascript复制develop
my_feature
master
如何在 Git 中切换分支
创建新分支时,Git 会自动切换到新分支。
如果您有多个分支,那么可以使用 git checkout
轻松切换分支:
git checkout master
git checkout develop
git checkout my_feature
如何在 Git 中删除分支
要删除本地分支:
代码语言:javascript复制git checkout -d<local_branch>
使用 -D 参数强制执行删除。
如果要删除源上的远程分支,请执行以下操作:
代码语言:javascript复制git push origin :<remote_branch>
相关文章:
- How to install git and generate SSH Keys on Mac
Git 暂存
暂存文件只是为提交做准备。当你添加或修改一些文件时,你需要将这些更改放到 Git 的“暂存区”。”暂存区“就像一个盒子,你把东西放在里面,然后再把这个盒子放在床下,而你的床是一个储存库,里面存放着你以前放过的盒子。
Git 暂存区文件
要往暂存区添加文件,可以使用 git add
命令。可以暂存单个文件:
git add foo.js
或一次添加所有文件:
代码语言:javascript复制git add .
Git 撤销暂存
如果要从暂存区中删除某个文件:
代码语言:javascript复制git reset HEAD foo.js
或删除所有暂存文件:
代码语言:javascript复制git rest HEAD .
您还可以为命令创建别名,然后将其与 Git 一起使用:
代码语言:javascript复制git config --global alias.unstage 'reset HEAD'
git unstage .
Git 状态
如果您想查看哪些文件已被创建、修改或删除,可以通过 git status
查看。
git status
Git 提交
经常提交是一个好习惯。你总是可以在推送之前合并你的提交。在提交之前,需要将文件添加到暂存区。
commit 命令需要指定 -m 选项。
您可以像这样提交:
代码语言:javascript复制git commit-m “更新内容描述”
撤消提交
以下命令将撤消您最近的提交,并将这些更改放回暂存区,这样您就不会丢失任何内容:
代码语言:javascript复制git reset --soft HEAD~1
要完全删除提交并删除所有更改,请使用:
代码语言:javascript复制git reset --hard HEAD~1
合并提交
假设您有4个提交,但您还没有向仓库推送任何内容,并且您希望将所有内容放入一个提交中,那么您可以使用:
代码语言:javascript复制git rebase -i HEAD~4
- HEAD~4指的是最后四次提交。
- -i选项打开一个交互式文本文件。
您将在每次提交的左侧看到“pick”一词。保留顶部的一个,并将所有其他的替换为“s”以进行挤压,保存并关闭文件。
然后打开另一个交互式窗口,您可以在其中将提交消息更新为一个新的提交消息。
Git 推送
在提交更改后,下一步是推送到远程仓库。
第一次推送
首次推送本地分支:
代码语言:javascript复制git push --set-upstream origin <branch>
之后,您可以使用
代码语言:javascript复制git push
将本地分支推送到不同名称的远程分支
要将本地分支推送到其他远程分支,可以使用:
代码语言:javascript复制git push origin <local_branch>:<remote_branch>
撤消上次推送
如果您必须撤消上一次推送,可以使用:
代码语言:javascript复制git reset --hard HEAD~1 && git push -f origin master
Git 获取
当使用 git fetch
时,git不会将其他提交与当前分支合并。如果您需要使存储库保持最新,但正在处理可能会在更新文件时损坏的内容,这一点尤其有用。
要将提交集成到主分支中,可以使用merge。
获取远程仓库更新
代码语言:javascript复制git fetch upstream
Git 拉取
拉取只是执行一次提取,然后执行一次合并。当使用 git pull
时,git 会自动合并其他提交,而不是查看它们。如果不密切管理分支,可能会遇到冲突。
拉取一个分支
如果您有一个名为 my_feature 的分支,并且希望拉取该分支,可以使用:
代码语言:javascript复制git origin/my_feature
拉取全部内容
或者,如果你想把所有的东西和所有其他的分支都拉取出来
代码语言:javascript复制git pull
Git 合并和变基
当运行 git merge
时,HEAD 分支将生成一个新的提交,保留每个提交历史。
重新基础将一个分支的更改重新写入另一个分支,而不创建新的提交。
将主分支合并到指定分支
代码语言:javascript复制git checkout my_feature
git merge master
或者使用 rebase
选项,您可以使用:
git checkout my_feature
git rebase master
将指定分支合并到主分支
代码语言:javascript复制git checkout master
git merge my_feature
Git Stash
有时您在一个分支上进行更改,并希望切换到另一个分支,但不希望丢失更改。
你可以把这些更改隐藏起来。执行如下命令可以在Git中隐藏更改:
代码语言:javascript复制git stash
现在,如果您想取消隐藏这些更改并将其带回工作目录,请使用:
代码语言:javascript复制git stash pop
本文翻译自 https://devqa.io/git-cheat-sheet-for-testers/