Git 使用教程

教程参考地址:廖雪峰的 Git 教程

一、安装 Git

1、Linux(Ubantu) 安装 Git

2、Window 安装 Git

Git 官网下载安装程序。

安装完成之后在开始菜单选择 Git - Git Bash,说明安装成功。

安装完成需要最后一步设置,命令行运行:

二、创建版本库

选择合适的路径作为版本库地址,注意尽量不要使用中文路径地址。

在版本库路径下运行

即可将这个路径变为 Git 可管理的版本库。

三、把文件添加到版本库

1. 使用命令 git add 告诉 Git 把文件添加到仓库。

2. 使用命令 git commit 告诉 Git 把文件提交到仓库。

-m 后面是本次提交的说明。

当文件修改之后,提交修改的方法和添加文件的方法相同,首先 add 然后 commit。

四、版本回退

在 Git 中,HEAD 表示当前版本,HEAD^ 表示上一个版本,HEAD^^ 表示上两个版本,HEAD~n 表示上 n 个版本。回退命令:

HEAD 是一个指针,也可以替换成版本号。

五、工作区和暂存区

创建版本库的文件夹是你的工作区 (Working Directory)。

工作区中生成的隐藏文件夹 .git 是版本库 (Repository)。

版本库中最重要的有暂存区 (Stage / Index)、Git 自动为我们生成的第一个分支 master、指向 master 的指针 HEAD。

命令 git add 就是把文件添加到暂存区。

命令 git commit 就是把暂存区中所有的文件提交到当前分支。

六、撤销修改

丢弃工作区的修改:

可以让这个文件回到最后一次 git add 或者 git commit 后的状态。

撤销暂存区的修改:

可以让暂存区内的文件回到工作区。

七、删除文件

当工作区文件被删除后,git status 会提示发生变动。从版本库中删除该文件:

然后使用 git commit。

如果是误删,可以使用:

恢复工作区中的文件。

git checkout 命令其实是使用版本库中的文件替换工作区中的文件。

八、远程仓库

可以使用多台电脑/服务器作为远程仓库。后面讲如何使用 GitHub。

首先注册 GitHub 账号。本地 Git 仓库与 GitHub 之间通过 SSH 加密,所以需要一些设置。

1、创建 SSH Key

首先查看用户主目录下有没有 .ssh 文件夹,如果有的话,文件夹中有没有 id_rsa 和 id_rsa.pub 两个文件。如果已经有了,可以直接跳过;如果没有,打开 shell (Windows 下打开 Git Bash) 创建 SSH Key:

引号内使用自己的邮箱地址,然后一路回车使用默认值。可以不用设置密码。如果一切顺利,将会在用户主目录中找到上述的文件夹和两个文件。这两个文件是 SSH 的密钥对,其中 id_rsa 是你的私钥,不可泄露;id_rsa.pub 是公钥,可以告诉别人。

2、在 GitHub 设置 SSH

登陆 GitHub,在账户设定中 SSH keys 页面,选择 New SSH key,填上任意的 Title,将 id_rsa.pub 中的内容复制到 Key 文本框中。点击 Add SSH key 即可。如果需要在多台电脑上提交,在 GitHub 上添加每一台电脑的 SSH Key 即可。

九、添加远程仓库

我们在本地有一个 Git 仓库,现在我们在 GitHub 上也建立一个仓库,让两个仓库远程同步,既可以作为备份,也可以与他人通过该仓库来合作。

登陆 GitHub,在右上角找到 New repository 并点击,输入仓库的名字,点击 Create repository 即可。

根据 GitHub 的提示,在本地仓库使用命令关联远程仓库:

或者

其中 ManiaJack 是我的用户名,要替换成自己的用户名,否则关联的是我的仓库。第一个连接地址使用的是 SSH 协议,添加 SSH key 后可以推送/拉取;第二个连接地址使用的是 https 协议,每次推送/拉去需要输入账号密码。

添加后,远程库的名字就叫做 origin,这是 Git 的默认名字,一看就是远程仓库,当然也可以改成别的。

下一步,把本地库的所有内容推送到远程仓库。使用命令:

第一次推送时需要使用 -u 参数,之后的推送就只需要

即可。

十、从远程库克隆

当你从零开发的时候,可以先在 GitHub 上建立一个远程仓库,然后克隆到本地。使用命令:

即可。多人开发的时候,每人克隆一份就可以。

十一、分支管理

之前的工作中,我们一直使用的是主分支 master。多人合作中,为了不影响他人工作的提交,又不影响你自己进行到一半的工作的提交,我们需要创建分支。master 是指向最新提交的指针,HEAD 是指向当前版本的指针。当我们创建并切换到一个 dev 分支时,master 依旧指向原来版本,而 HEAD 指向 dev 指针。当你提交工作时是提交到 dev 分支,并不影响 master 分支。当你的工作完成后,需要合并 master 分支和 dev 分支时,只需要将 master 指针指向当前 dev 的位置即可,之后可以删掉 dev 分支。

使用 -b 参数创建并切换分支:

合并分支需要首先切换到主分支,然后:

十二、分支冲突

当前分支和主分支都有提交时,可能引起冲突。使用 git status 可以看到冲突的文件,打开冲突文件可以看到不同分支的内容,手动合并修改后再次提交即可。

十三、分支策略

首先,master 分支应该是很稳定的版本,仅用来发布新版本,平时不在上面干活。

干活都在 dev 分支上,是一个开发版本。当有新的版本要发布了,再合并 dev 和 master。

每一个人都在 dev 分支下创建自己的分支进行工作。

当开发一个新的功能时,最好新建一个 Feature 分支,开发完成后再合并到 dev 分支。如果需要删除一个没有被合并的分支,使用命令:

十四、Bug 分支

当你手头工作进行到一半,却要临时修复 Bug,可以先把工作“暂存”起来,使用命令:

此时工作区就被暂存,是干净的。可以在需要的分支上创建分支进行工作。当完成工作后,使用命令:

/

恢复工作区。其中第一个命令不会删除 stash,需要使用来删除;第二个命令会直接删除 stash。

十五、多人协作

当别人克隆远程仓库时,只能克隆到 master 分支,而不能克隆到 dev 分支,如果需要在 dev 上进行开发,需要先创建本地 dev 分支:

然后就可以在 dev 分支上开发并推送到远程。

当发生冲突时,需要先用 git pull 把 origin/dev 分支抓下来,合并之后再提交。

如果没有设置本地分支与远程分支的连接,可以使用:

在本地解决冲突后再提交即可。

十六、标签管理

创建标签

在要打标签的分支上使用

即可。tag 与 commit 相挂钩,默认为最新的提交。也可以在 name 后面增加 commit id 来给某个 commit 打标签。

操作标签

删除标签:

推送标签到远程:

/

前者推送一个标签到远程,后者推送所有未推送的标签到远程。

删除远程标签,首先删除本地标签,然后:

N、常用命令

写在最后

一段时间没用 Git,都忘了怎么用了,干脆重新整理一遍,也方便自己以后来查询

语句。第一次用 MarkDown,略显生疏。有道云的 MarkDown 不能直接复制到公众号,代码块缩进不太对,所以用了第三方的编辑器:Md2All

最近要找工作了,有点慌,希望一切顺利。之后可能会放一些 Codewars 的题上来。

欢迎大家的意见和建议(虽然没什么关注量哈哈哈)。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180813G15YI200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券