Git—具体实例讲解Git用法以及提交PR

Git作为目前比较流行的版本控制系统,被各个互联网公司广泛使用着,使用git可以很方便地进行多人协作和版本控制,大多数时候我们也需要把别人的代码进行整合和修改,而不是简单的修改,这时就需要对一个项目进行修改,本文主要通过一个例子讲解下使用git常见命令以及如何提交一个pr。

1.fork一个项目 打开一个项目,点击界面右上角的的“fork”,就会在你自己的项目库里创建一个代码的拷贝, 本例中fork的项目是七牛的JS SDK项目 https://github.com/qiniu/js-sdk

2.fork之后进入自己的主页后看到有了一份项目的拷贝,而且和原来的项目一模一样,注意提交pr是需要将原始项目fork到到自己的git库中修改的,不能直接git clone原始的项目修改提交。

此时可以将这个项目给下载到本地的一个目录下,可以直接下载zip包或者使用git clone命令:

3.在本地clone的目录中进行代码修改,查看文件修改情况的方法非常简单,只需要使用git status 命令就可以了。

另外也可以运行git diff命令这样可以查看到所有文件的更改内容,其中,减号代表删除的部分,加号代表添加的部分。这里修改的是README.md文件,如果只想看这个文件的修改情况,运行git diff /Users/dxy/GitJsSdk/js-sdk/README.md即可。

4.这个时候我们再运行git add .命令即可将所有的修改的文件进行添加。 关于git add命令,可以参考如下: 1) git add .表示所有修改的文件都进行添加,如果只添加某一个文件可以在add后面加上具体的文件名即可,比如本例可以直接使用下面的命令: git add /Users/dxy/GitJsSdk/js-sdk/README.md 2) 有时候我们提交自己建的项目中想忽略某些文件夹可以建一个.gitignore目录,里面指定想要忽略的文件或目录,比如自己eclipse的项目可以设置忽略bin/和gen/目录,这样就表示把 bin 目录和 gen 目录下的所有文件都忽略掉,从而使用得它们不会加入到版本控制当中 3) 有的时候我们代码可能会写得过于草率,以至于原本正常的功能,结果反倒被我们改出 了问题。遇到这种情况时也不用着急,因为只要代码还未提交,所有修改的内容都是可以撤销的。 比如对于上面我们修改的README.md文件我们运行git checkout即可将修改的内容撤销到之前的状态。 git checkout /Users/dxy/GitJsSdk/js-sdk/README.md 4) 上面的方法只适用于那些还没有执行过 add 命令的文件,如果某个文件已经被添 加过了,这种方式就无法撤销其更改的内容。

这种情况需要对已添加的文件先对其取消添加,然后才可以撤回提交,取消添加使用的是 reset 命令,用法如下所示: git reset HEAD /Users/dxy/GitJsSdk/js-sdk/README.md 然后再运行一遍 git status 命令,你就会发现 README.md 这个文件重新变回了未添加状态,此时就可以使用 checkout 命令来将修改的内容进行撤销了。

5.运行 git commit -m "add some common problem"提交我们修改的代码,commit 命令的后面我们一定要通过-m 参数来加上提交的描述信息,没有描述信 息的提交被认为是不合法的。这样所有的代码就已经成功提交了。

6.运行git push命令才能把本地修改的内容同步 到远程版本库上。或者运行git push origin master 其中 origin 部分指定的是远程版本库的 Git 地址,master 部分指定的是同步到哪一个分 支上,上述命令就完成了将本地代码同步到 这个版本库的 master 分支上的功能,git push origin master的意思就是上传本地当前分支代码到master分支。git push是上传本地所有分支代码到远程对应的分支上。

7.此时再去我自己的GitHub代码库里面看就成功修改了,最后我们可以创建一个pr如下:

然后可以等待CI检测通过即可:

出处:http://lib.csdn.net/article/git/10664

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏carven

cors跨域探讨

前端跨域方案很多,jsonp、iframe等等,但是个人觉得,最正宗,最无损的跨域方式还是CORS。 CORS(Cross-origin resource sh...

19100
来自专栏程序小工

【Linux】系统学习Crontab定时任务

crontab 是一个用于设置周期性执行任务的工具。目前服务器端的运行环境大多数为 Linux,在日常的运营和维护中会有很多需要定期执行的操作,其中有些操作是可...

20220
来自专栏前端安全

浅谈Ajax跨域

如果我们前端页面的url和我们要提交的后端url存在跨域问题时,我们该如何解决呢?

3K150
来自专栏nice_每一天

excel导出使用get请求参数过长问题

excel导出功能时,使用的是window.location.href=url也就是get请求。当传入参数过长的时候就报了414,地址过长的错误。

21320
来自专栏散尽浮华

Gitlab上采用rpm方式快速安装的操作记录

之前梳理了一篇Gitlab的安装CI持续集成系统环境---部署Gitlab环境完整记录,但是这是bitnami一键安装的,版本比较老。下面介绍使用rpm包安装G...

26150
来自专栏weixuqin 的专栏

Mac下安装oh-my-zsh

72690
来自专栏Angular&服务

ionic3 在app首页跳转重定向报错

28220
来自专栏KID的专栏

【腾讯云的1001种玩法】Centos系统文件权限的系统阐述与演示

在linux服务器日常管理中,我们会经常管理查看文件或者文件夹的权限内容以保证服务的正常运行。今天就和大家聊聊文件权限的那些事。

48010
来自专栏linux运维学习

linux学习第十四篇:查看磁盘,文件大小命令:df,du;磁盘分区

df命令 df:查看已挂载磁盘的总容量、使用容量、剩余容量等,可以不加任何参数,默认是按k为单位显示的。 ? 带有tmpfs的都是临时的文件系统,所以在对应的挂...

23380
来自专栏程序员同行者

mysql 主从复制

Mysql的复制是一个异步复制的过程,从一个主(master)的复制到另一个备(salve)的。在主备之间实现复制过程主要有三个线程来完成,其中两个线程(sql...

18650

扫码关注云+社区

领取腾讯云代金券