【git入门教程】[小明的git学习之路】

引言

 git是一个优秀的版本控制系统。如果没有实际的应用场景,初学者只是学习git的相关命令可能会感觉到很吃力。因此整理一篇指导教程,介绍不同场景下,git的基本使用流程。

一: 可以在本地做熟练的管理代码。

  小明是个程序猿,很喜欢参加各种编程比赛。在参加比赛的过程中, 小明写了大量的代码,都保存在集成开发环境中。 随着比赛的进行,小明遇到了几个头疼的问题:

  • 问题一:为了提高比赛的排名,小明尝试了三种不同的算法,每次只需要调用一个算法,通过不同的函数调用来执行相应的算法,随着代码量越来越多,代码也越来越臃肿,想把这三种方案独立放在三个项目中,可是这样又太麻烦了。。
  • 问题二: 小明发现这几天的代码得到的分数,还没有一周前提交的代码效果好,可是代码已经改动了这么多了,如何才能回到一周之前的代码呢?
  • 问题三: 小明每天都在辛辛苦苦的写代码,却没有地方记录每天代码的改进,这样下来,忙了好几天,都不好总结反思了。。。

小明在百度搜了一圈, 终于发现了一个强大的工具 – Git; 从此,小明便开始了探索Git的奇妙之旅。

Git简介:
Git 是一个开源的分布式版本控制系统,可是小明不懂这些,只要这个工具能管理好自己的代码就行了。

通过在网上查资料,小明终于安装上了git工具。

小明开始初始化了自己的第一个git仓库, 创建了一个文件夹,并执行

git init

小明往git 仓库里面放了两个代码文件,a.c, b.c;
虽然文件是放到git 目录下面了,可是还没有纳入git的版本控制, 执行

git add a.c
git add b.c

git commit -m "This is xiaoming's frist git !!!"

  • 场景:小明苦思冥想,在比赛中又想出了一套新的方案, 想要从头开始搭建代码,这种情况下, 需要重建个工程项目吗?不需要,因为小明使用了git。
    于是小明创建了一个新的分支
git checkout -b testing
# 等同于下面
git branch testing
git checkout testing
# 如果想删除分支
git branch –d 分支名

  • 场景:小明提交了几次commit, 后悔了,想回退自己的提交记录:
git log         命令,查看分支提交历史,确认需要回退的版本
git reset --hard commit_id    命令,进行版本回退
git push origin    命令,推送至远程分支

如果想直接回退到上个版本,可以使用快捷命令
git reset --hard HEAD^

小明还搜到了, 回退代码有两种方式: resetrevert,在这里整理了一下区别:
其实要回退代码,这两个都可以使用,可以根据需求选取不同的命令。

  1. 如果想把代码回滚到某个时间点的commit, 其实reset 和revert都可以, 只不过reset方便一些

  2. 如果想只回滚中间某一个commit,这时需要是使用revert, d

git log 查看历史提交的记录
git revert -n 97ea0f9
git commit -m "恢复第三次修改"

  • 场景: 小明想在所有的分支里,都加一个日志 log_info "XiaoMing is very clever!"
    这种情况下,小明应该可以切换到每一个分支,然后手工的加日志,不过,因为小明使用了git,所有使用了其强大的cherry pick的功能 。
# 先切到要修改的分支
git log 查询历史提交记录
git cherry-pick <HashA> <HashB>

  • 场景: 小明在分支提交了大量的不错的commit,觉得这些代码可以合入到master分支了。这时可以使用merge的方式(这个是不是和cherry-pick有点像?)
git checkout dev
git pull
git checkout master
git merge dev
git push -u origin master

二: 开始有一个远程的仓库

 小明使用git已经可以熟练的管理自己的代码了,不过用着用着,小明就在想,我的代码现在也只是保存在本地,要是可以把自己写的代码提交到网上保存,就不怕电脑挂掉导致自己的代码丢失了, 于是小明开始行动了。

首先需要配置一下git 全局用户名和用户邮箱(其实小明也不知为啥要配置这个)

git config --global user.name "your username"

git config --global user.email "your Email"

推送仓库之前,还需要添加SSH秘钥

ssh-keygen -t rsa -C "您的email"

cat ~/.ssh/id_rsa.pub

然后把这个秘钥复制到远程的SSH秘钥中即可。

添加远程的仓库:

git remote add origin ${小明的远程仓库}

小明把代码推送到远端

git push -u origin master

# 上面的命令, 加了-u 参数,会做一个关联, 后续push或pull会方便许多。

删除分支的命令总结
随着分支的不断增加,小明发现有的分支不需要了, 想清理一下,就进行了如下的操作:

# 看一下一共有哪些分支的
git branch -a


# 删除远程仓库的分支,则执行如下所示的命令:
git push origin -- delete 分支名

# 删除本地的分支
git branch –d 分支名

# 举个例子:
git branch -d 1.5.3-issue-exporter

git push  origin --delete 1.5.3-issue-exporter

git push  origin --delete 1.5.3-issue-wsr

三:使用git 协同开发代码

小明在比赛的过程中,小张也加入了进来, 于是两个人一起写代码,分工合作。 可是两个人写的代码如何才能合并到一起呢?手工把函数一个一个的复制吗?其实不需要,因为他们使用了git。

小张把小明的代码pull下来了:

git clone 小明的git地址

然后小张commit了好几次代码

小张把clone的代码上传到自己的远程库

git push -u origin master

场景:小张把自己的代码merge到小明的代码库
  这一步的操作,好像不能通过git的命令解决, 需要先登录到小张的远程操作中,在前台页面点击合并请求的按钮,选择源分支目标分支,确定后即可建立合并请求。

场景: 小张把小明的最新提交,下载到本地来

# 将远程主机 origin 的 master 分支拉取过来,与本地的 brantest 分支合并。
git pull origin master:brantest
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值