原创 by zoe.zhang
GitHub中采用的比较多得是markdown的语法,博客园里对markdown的支持感觉不是特别友好,但是为了应景,还是用了markdown来写这一篇文章。另外,题外话,后面有时间有精力希望学习去搭建一个个人的博客网站,漂亮,干净又有个性,感觉特别帅气。恩,跑题了,回来。
1.Git 和 GitHub的联系与区别
- git是一款免费的开源的分布式版本控制软件,是由Linux的开发者开发的,git的官网是 git 下载;
- github是一个网络开源代码分享社区,人们可以互相分享和讨论彼此的开源项目,在github上是基于git进行软件版本托管的。
- 在软件开发中,我们总是会不断改进或者修改代码,因此会衍生中各种不同的版本的代码,如果版本数量多,而管理不当,很容易造成管理的混乱。所以我们需要git来进行版本控制与管理。然后git主要可以对本地的项目进行管理,而在实际开发中,我们常常倾向于在本地和远程服务器各存放一份代码,同时需要一套机制使得本地和远程同步,此时我们就有了github,通过将本地git仓库和远程仓库进行关联,实现本地和远程的代码版本控制。当然github的功能不仅仅止于此,github上最重要的一个精神就是开源、分享和共同进步,github作为远程仓库只是它的一部分功能,更重要的是可以接触和学习到很多厉害人的源码。
2.GitHub的使用
- github的网址: github 官网
- 使用github的第一步当然是注册了,这一步很简单,如果不会,网上有很多教程,注册好了之后就可以开始你的github之旅了。一开始有一个hello world 教程,写得很好,只要花十分钟就可以弄明白github的基本用法,非常建议阅读。
总结下来使用github的基本步骤可以概括为:- 创建仓库:仓库中包含 anything your project needs,一般情况下建议包含一个README.md, 实际上也是一种使用规范,创建仓库后可以通过upload上传自己的文件,也可以通过自己的本地git上传工程文件。
- 创建分支:分支即分支版本,在做项目修改或者bug修正时,我们通常会创建一个与master主支一模一样的branch分支, 我们可以在分支中修改代码而不会影响到源码。
- 做出修改并提交修改:commit changes = save changes,每一次提交修改的时候建议添加上commit message,以帮助后续查看修改历史。
- Pull request:pull request一般是做出修改后,向原项目提出融合的申请。在自己的项目中,可以理解为在保证了修改的正确性后,对源项目做更新的操作。在别人的项目中,一般是fork了别人的项目后,发现了bug或者功能上的改善等,向原作者原项目提出pull request,由原作者或者其他感兴趣的人讨论并决定是否merge 进自己的项目中。 pull request 会显示两个分支的不同所在,用于比较和方便查阅。Create pull request 时也需要添加request 说明。
- Merge pull request:确认修改 并confirm merge,如果多余的branch不需要了,可以删除多余的branch。
- github的功能不仅仅止于此,这里还有一些小tips:
- Repository:一个Repository就是一个代码仓库,里面通常放了一个项目。对于我等目前默默无闻的小菜鸟,可以将github作为一个易管理的代码仓储,日后浏览或者取用都很方便。
- Star: 给别人的项目点赞加星,实际上可以看成是一种收藏方式。
- fork: fork别人的开源项目,相当于将别人的项目源码copy到你的github仓库,创建了一个你可以在此基础上改进或者应用的分支。
- watch: 关注,watch了这个项目,表示你非常关注这个开源项目的更新动态,项目的讨论和更新都会第一时间通知到你。
- explore:explorer非常好用,你可以搜索相关的开源项目,也可以看showcase中很多大公司和典型的开源项目,还有trending中最近很热门的项目,帮助你了解技术前沿的动态。
- Gist: 分享代码判断类似于论坛性质的地方,国内好像有时候被墙了。
3. Git 的使用
在进行git操作之前,需要切换到Git仓库目录,也就是切换到项目的文件夹目录下。存在一个本地仓库的文件夹目录下会有一个 .git 的文件夹,里面记录了相关信息。
Git 常用的命令可分为几类:(git 命令都需要以git为开头)
- start working area: 建立本地仓库的工作去,如: clone init
- work on current change: 最常用的 add 和 reset 还有 rm
- examine the history and state: 常用的 log 和 status
- grow,Mark and tweak common history: 常用的branch、checkout ,commit、diff、merge
- collaboration: fetch、pull、push
git init: 进入一个从未创建仓库的工程文件夹,初始化并创建仓库,生成.git 隐藏文件夹,用于记录本地的所有git操作。
git status: 查看 仓库状态,untracked files 是指文件尚未被跟踪,尚未提交到git仓库中,这个时候可以使用git add 添加要提交到仓库的文件。
git add : 提交单个文件 git add xxx.file ; 提交目录下全部文件 git add -A;(注意大写) 此时提示Index列表中有两个待提交的new file
git commit -m 'first commit' : 提交文件,一定要通过-m参数添加提交的描述信息,没有描述的提交是不合法的。
git branch: 查看仓库中的分支情况与当前所在分支; git branch newbranch :创建新的分支;
git checkout newbranch :切换到新分支; git checkout -b new:创建一个新分支并切换到新分支上
git branch -d new:删除分支,注意不能删除当前所在的分支git merge newbranch: 融合或者说更新分支到主干上
注意:Git Windows 安装后会有三个程序:git bash ,git cmd,和git gui,建议使用git bash,基于MINGW64,添加了几个实用的Linux命令,以及git自己的命令。建议一开始就使用命令行来操作。
4.Git与GitHub的联系:上传本地文件到GitHub
本地仓库与远程仓库联系起来,本地可以向github提交代码,一般来说github上都是基于SSH授权的。SSH是什么就不多说了,建议自己去百度了解一下。
- SSH与SSHkey
- 第一次生成SSHkey: 在git bash中输入: ssh-keygen -t rsa 或者 ssh-keygen –t rsa –C “xxxxxj@gmail.com”
- 已有SSHkey,查看SSHkey:
Linux用户:执行 cd ~/.ssh cat id_rsa.pub;
windows 用户:C:\Users\Administrator.ssh 找到id_rsa.pub文件,用Notepad或者Editpuls打开复制即可。
Github SSH授权
在github中添加SSH key,在 New SSH key 中 将id_rsa.pub公钥中的内容复制粘贴进去就好。
在gitbash中输入 ssh -T git@github.com,显示如图所示则链接成功。- 远程提交代码
第一次连接远程仓库的时候,需要语句 git remote add orgin 远程仓库SSH地址,不然没办法push和pull,这里我们将远程仓库命名为orgin,我们通常都命名为orgin,如果存在多个仓库,也可起别的名字。
pull 和push:在push之前最好pull 一下,否则容易导致警告或者失败。
5. 附1:知乎:git怎么在仓库里面上传一个文件夹到github
- git 基本命令
- cd: 进入目录
- git init:当前目录初始化为git可以管理的仓库
- git add readme.md: 添加单个文件; git add -A: 添加全部文件
- git commit -m "commit 备注":提交修改
- git status: 查看git 管理状态与提交情况(最常用的命令)
- git log: 查看最近日志
- git reset -hard HEAD^ : 版本回退一个; git reset -hard HEAD^^:版本回退两个;git reset -hard HEAD~100:回退多个;
- git 连接github
- 第一次远程仓库与本地仓库的连接和提交: git remote add origin git地址
- 仓库关联和默认提交: git push -u origin master
- 第二次远程仓库的提交:git push
- 远程提交的一些使用小技巧
- git clone 远程仓库地址: 该命令将项目文件从远程仓库获取到本地,并自动创建了git本地仓库,而且已经关联好了远程仓库,可以直接使用 git push orgin master(想要提交的分支)
- git push -u orgin master:设置push 的default操作,后面可以直接使用 git push,不用显式指定推送的分支名。
- git fetch orgin: 本地已经存在项目,获取远程的更新; git merge orgin/master:将更新融合到本地分支master。
来源:https://www.cnblogs.com/zoe-mine/p/7045544.html