教程参考地址:廖雪峰的 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 的题上来。
欢迎大家的意见和建议(虽然没什么关注量哈哈哈)。
领取专属 10元无门槛券
私享最新 技术干货