1、Git与Github入门实践

        Linux 之父 Linus 在 1991 年创建开源的 Linux 操作系统之后,多年来依靠全世界广大热心志愿者的共同建设,经过长足发展,现已成为世界上最大的服务器系统。系统创建之初,代码贡献者将源码文件发送给 Linus,由其手动合并。这种方式维持多年后,代码量已经庞大到人工合并难以为继,于是深恶集中式版本控制系统的 Linus 选择了一个分布式商业版本控制系统 BitKeeper,不过 Linux 社区的建设者们可以免费使用它。BitKeeper 改变了 Linus 对版本控制的认识,同时 Linus 发现 BitKeeper 有一些不足,而且有个关键性的问题使之不能被广泛使用,就是不开源。

        在 2005 年,BitKeeper 所在公司发现 Linux 社区有人企图破解它,BitKeeper 决定收回 Linux 社区的免费使用权。Linus 对此事调解数周无果,找遍了当时已知的各种版本控制系统,没有一个看上眼的,一怒之下决定自己搞一个。Linus 花了十天时间用 C 语言写好了一个开源的版本控制系统,就是著名的 Git。

        2007 年旧金山三个年轻人觉得 Git 是个好东西,就搞了一个公司名字叫 GitHub,第二年上线了使用 Ruby 编写的同名网站 GitHub,这是一个基于 Git 的免费代码托管网站(有付费服务)。十年间,该网站迅速蹿红,击败了实力雄厚的 Google Code,成为全世界最受欢迎的代码托管网站。2018 年 6 月,GitHub 被财大气粗的 Microsoft 收购。2019 年 1 月 GitHub 宣布用户可以免费创建私有仓库。根据 2018 年 10 月的 GitHub 年度报告显示,目前有 3100 万开发者创建了 9600 万个项目仓库,有 210 万企业入驻。
        当我们在 GitHub 上创建一个仓库时,同时生成了仓库的默认主机名 origin,并创建了默认分支 master。GitHub 可以看成是免费的 Git 服务器,在 GitHub 上创建仓库,会自动生成一个仓库地址,主机就是指代这个仓库,主机名就等于这个仓库地址。克隆一个 GitHub 仓库(也叫远程仓库)到本地,本地仓库则会自动关联到这个远程仓库。

命令汇总:

git --version 查看Git版本信息
git clone [仓库地址] 将远程仓库clone到本地
git remote -v 查看本地仓库所关联的远程仓库信息
git init把普通目录变成本地仓库

2、Git基础操作

2.1 Git仓库的三大区域

        Git 本地仓库有三大区域:工作区、暂存区、版本区。这是一个概念,有这个了解即可,随着使用 Git 的时间增多,慢慢就会理解这三个区域的作用以及为何要这么设计,学习阶段只需按照文档逐步操作即可。接下来我们以命令为主线介绍 Git 的操作。

Git仓库的三大区域
注意,所有 Git 命令都以 git 开头。

命令汇总:

git status 查看整个仓库的状态
git add [文件名]跟踪新建文件,即把新文件添加到暂存区
git add .把多个文件全部添加到暂存区
git reset -- [文件名] | git rm --cached [文件名] 撤销对暂存区的修改
git reset --把暂存区的全部修改撤销
git diff --cached它可以用来查看工作区被跟踪的文件的修改详情
git commit把暂存区的修改提交到版本区,生成一个新的版本
git log用来查看版本区的提交历史记录
git log [分支名] 查看某分支的提交历史,不写分支名查看当前所在分支
git log --oneline一行显示提交历史
git log -n 其中 n 是数字,查看最近 n 个提交
git log --author [贡献者名字]查看指定贡献者的提交记录
git log --graph 图示法显示提交历史
git log --reverse查看时间正序排列的信息
git config --global user.email "1599602677@qq.com" 配置邮箱
git config --global user.name "superzhaoyang" 配置用户名,配置完成后系统自动生成Git的配置文件,就是主目录中的隐藏文件.gitconfig
git branch -avv用来查看全部分支信息
git reset --soft HEAD^撤销最近的一次提交,将修改还原到暂存区,--soft表示软退回,对应的还有--hard硬退回,,HEAD^表示撤销一次提交,HEAD^^表示撤销两次提交,撤销n次可以简写为HEAD~n。
git reflog它会记录本地仓库所有分支的每一次版本变化。实际上只要本地仓库不被删除,随你怎么折腾,都能回退到任何地方。reflog 记录只存在于本地仓库中,本地仓库删除后,记录消失
git reset --hard [版本号]在知道版本号的情况下,可以执行此条命令进行回退
git reset --hard HEAD@{2} 这个命令的意思是回到当前分支最近两次提交版本变化前

注意事项:

  • 一次推送中可以包含多个 git commit 操作,也就是多个提交可以一起推送。
  • 本地分支 master 与远程分支 origin/master 的版本号一致,通常看两个版本号是否一致,只需比对前四位

3、分支操作

git fetch刷新保存在本地仓库的远程分支信息
git pull拉取远程分支到本地,需要联网
git rebase origin/master如果执行过git fetch,则可以用此条命令来使本地分支基于远程分支
git branch [分支名]创建本地分支
git checkout [分支名]切换分支
git checkout -b [分支名]创建且切换分支
git push [主机名] [本地分支名]:[远程分支名]即可将本地分支推送到远程仓库的分支中,通常冒号前后的分支名是相同的,如果是相同的,可以省略 :[远程分支名],如果远程分支不存在,会自动创建
例如:git push origin dev1
git branch -u [主机名/远程分支名] [本地分支名]将本地分支与远程分支关联,或者说使本地分支跟踪远程分支。如果是设置当前所在分支跟踪远程分支,最后一个参数本地分支名可以省略不写
git push -u origin master在推送的时候就设置跟踪
git push [主机名] :[远程分支名]如果一次性删除多个,可以这样:git push [主机名] :[远程分支名] :[远程分支名] :[远程分支名] 。此命令的原理是将空分支推送到远程分支。
git push [主机名] --delete [远程分支名]删除远程分支的命令可以在任意本地分支中执行
git branch -D [分支名]删除本地分支,同样地,此命令也可以一次删除多个,将需要删除的分支名罗列在命令后面即可
git branch -m [原分支名] [新分支名]给本地分支改名

4、多人协作

git remote add [主机名] [主仓库的地址]增加关联主机
git pull --rebase up master同步主仓库
git rebase up/master如果执行过git fetch up,则可以执行此条命令,不需要联网。

最后修改:2021 年 09 月 22 日 05 : 22 PM
如果觉得我的文章对你有用,请随意赞赏