特别说明一下,我这使用的Mac自带的终端,Windows中使用git基本的命令和操作也是一样的。
这里记录一下是为了方便以后使用!
Git 速查表(摘自 AI有道)
一 . 注册账号和下载
首先,我先对GitHub来一个简单的介绍,GitHub有一个很强大的功能就是,你在服务器上边可以创建一个库,写代码是一件很重的任务,尤其是很多人完成一个很大的项目的时候,就十分的复杂,一群人一起来写某个项目,大家完成的时间,完成的进度都是不相同的,你写一点我写一点,甚至可能你今天写的出现了错误,影响到了我昨天写的代码,最后怎么才能将大家的代码轻松的汇总起来,又怎么在汇总所有人的代码之后发现错误等等一系列问题。这样我们就用到了GitHub这个软件。我们在GitHub服务器上有一个主仓库,这里用来储存你的所有代码,如果不付费的话是所有人都可以看的,如果你不想让别人看到你的代码,可以选择付费仓库。我们创建了主仓库之后,就可以在电脑上创建分支,之后你就可以在电脑上完成自己的代码,写完之后直接同步在电脑的分支,当你认为可以上传的自己的主仓库时,就可以申请更新,当通过审核的时候,你代码就出现在了自己的主仓库中,这样全世界的程序员都可以查看你的代码。全世界现在已经有300万的注册用户,甚至还有一些相当知名的开源项目也在其中公布代码。在GitHub上你可以看到很多计算机领域的精英所分享的自己的代码。这是GitHub的两个主要优点,适合团队协作,以及下载其他优秀者的代码。
我这里因为是已经注册过了,具体注册过程我就不一步步介绍了。
建库的话你登入自己账户,在repositories中new一个新库,需要提交的内容仅仅是包括库名-描述-还有一些public和private选择(GitHub的私有库貌似要收费)。
在网页端建好库后,如果你之前没有下载过git的话需要download git的程序。https://git-scm.com/downloads,下载对应版本的程序,安装过程略。
二 . 配置密钥
网页端的GitHub和git实际上并不是一个东西,如果你需要使用git将代码什么的更新到GitHub上的话是需要提前配置一些git的。
如果要在本机的git和你的GitHub远程端联系上,需要生成一个ssh密钥,就相当于一个验证,获取密钥时需要输入:
$ ssh-keygen-t rsa-C "your_email@youremail.com"
“......"输入的是你注册GitHub的邮箱名称,之后会有一些简单的让你确认的操作,之后让你会提示操作路径、密码等等,如果需要输入账户名和密码就输入你自己GitHub账户的信息,其他的都敲回车也可以。(注意在在你之前生成密钥的路径下打开id_isa.pub文件)
在github网站上,点击头像,选settings,选ssh and gpg keys,添加ssh key。将刚才生成的密钥(也就是pub文件的内容)复制到github上,测试通过即可。
通过命令进行测试:
ssh -T git@github.com
出现下列提示信息则说明你配置成功。如果遇到其他问题也可以自己查询git官方指南进行修改(https://docs.github.com/en)。
Hi your-name! You've successfully authenticated, but GitHub does not
provide shell access.
三 . 常用的命令
git init
: 初始化 git 仓库,即将一个文件夹初始化为一个 git 仓库。git status
: 查看仓库的状态git add <file>
: 将文件提交到暂存区git commit -m “代码提交信息”
: 将暂存区的文件提交到仓库中,并附带说明信息git log
: 查看所有产生的 commit 记录git config -l
: 查看自己的配置,默认配置都在.git/config
文件中
3.1 分支相关的命令
git branch <branch_name>
: 如果不加上<branch_name>
,查看当前分支情况。如果加上,就是创建一个分支。git checkout <branch_name>
: 切换到<branch_name>
的分支上git checkout -b <branch_name>
: 创建一个分支并切换到这个分支上,效果相当于合并上面 2 个命令。git merge <branch_name>
: 将<branch_name>
分支合并到当前所在的分支上git branch -d <branch_name>
: 将<branch_name>
分支删除git branch -D <branch_name>
: 将<branch_name>
分支强制删除。如果<branch_name>
分支存在未合并的代码时,那么用-d
是删除不了。
3.2 标签相关的命令
git tag
: 查看历史 tag 记录。git tag <tag_name> <commit_id>
: 在指定提交 id 上创建一个 tag。如果不写<commit_id>
,那就在最新的 commit 上创建一个 tag。git checkout <tag_name>
: 切换到<tag_name>
标签git show <tag_name>
: 查看标签信息git tad -d <tag_name>
: 删除标签git push origin <tag_name>
: 将某个标签推送到远程仓库git push origin :refs/tags/<tag_name>
: 可以删除一个远程标签。
3.3 SSH
提前申明, windows 系统并不自带 SSH, 但是安装的 Git 中带有 SSH。所以以下命令请在 Git bash 下执行。
ssh-keygen -t rsa
: 指定 rsa 算法生成密钥。ssh -T git@github.com
: 测试 ssh 是否成功添加到 github 中
3.4 Github 操作
git clone ...
: 将 github 项目复制到本地的当前目录git push origin <本地分支>:<远程分支>
: 把本地分支中本地代码同步到远程分支git pull orgin <branch_name>
: 把远程 <branch_name> 分支的最新的代码同步到本地当前分支中get remote add origin git@github.com:xxx/xxxx.git
: 将当前本地仓库与远程进行联接git remote -v
: 查看我们当前项目有哪些远程仓库
3.5 删除操作
- git add .+git commit -m "del" :在本地库将文件删除后同时删除远程仓库
- git rm -r --cached <file_name>+git commit -m "del" :仅仅在远程仓库删除某个文件
3.6 补充命令
-
alias 别名
git config --global alias.<别名> "<原命令>"
。比如git config --global alias.c "checkout"
,之后git c
==git checkout
-
diff
git diff
: 比较工作区文件和暂存区文件差异。如果加上文件名,就仅比较这个文件在工作区与暂存区的区别git diff <commit_id1> <commit_id2>
: 比较两次提交之间的差异
-
checkout
- 作用 1 :切换分支、标签以及 commit。本质是「用某个 HEAD 中的最新内容替换掉你的工作区中的文件」。切换时,暂存区的内容不受影响但相当于在切换前执行了
git stash
- 作用 2 :撤销还没进入暂存区的修改的作用。举个例子,假设我们在一个分支开发一个小功能,刚写完一半,这时候需求变了,而且是大变化,之前写的代码完全用不了了,好在你刚写,甚至都没有 git add 进暂存区,这个时候很简单的一个操作就直接把原文件还原:
git checkout a.md
,本质上是将 HEAD 内容覆盖掉工作区的内容。注意,checkout 命令只能撤销还没有 add 进暂存区的文件。
- 作用 1 :切换分支、标签以及 commit。本质是「用某个 HEAD 中的最新内容替换掉你的工作区中的文件」。切换时,暂存区的内容不受影响但相当于在切换前执行了
-
stash
- 作用:把当前分支中的工作区的所有修改先暂存到栈上。
- 运用场景:假设我们正在一个新的分支做新的功能,这个时候突然有一个紧急的bug需要修复,而且修复完之后需要立即发布。当然你说我先把刚写的一点代码进行提交不就行了么?这样理论上当然是ok的,但是这会产品垃圾commit,原则上我们每次的commit都要有实际的意义,你的代码只是刚写了一半,还没有什么实际的意义是不建议就这样commit的,那么就用
git stash
保留。 git stash
: 把当前分支所有没有 commit 的代码先暂存起来git stash list
: 查看所有 stash 记录git stash apply
: 将暂存的代码还原git stash drop
: 把最近一条 stash 记录删除。注意:每次还原代码后,最好删除这条 stash 记录git stash pop
==git stash apply
+git stash drop
- 注意:执行了
git add
的数据在切换分支时,会自动暂存一起。本质上是因为切换分支不影响暂存区的数据。但需要手动恢复。