git学习总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git学习总结相关的知识,希望对你有一定的参考价值。
很早之前就已经听说github的大名,但未深入的学习使用,最近深入学习了一下git和github,真正了解了git和github为什么产生,以及项目的开发为什么会用到git和github.说了半天的git和github,也许你也有这样的疑问,git和github是什么关系?通俗的说github是git的网上仓库,便于多人合作开发,而git是一个运行于本地的版本控制工具。从这个角度来说你也可以理解git和github产生的原因,当你在公司做开发的时候,工作是在本地进行的,可能需要多次的回退修改,最终修改后提交自己的成果到github,然后同一个开发团队的人可以查看你的修改,下载修改后的项目,然后做进一步的开发,每个人都这样做,这个项目一步一步就完成了,而且每一次谁修改了,如何修改的都记录在案,如果感觉修改的不好就可以回退到上一个版本。这就是git和github产生的原因,想想如果没有git和github,每次修改之前都要备份一份,修改后又复制一份,同一团队的其他人想要看你的修改还要到你电脑上拷,岂不是很麻烦?话说git是开发Linux内核产生的,当初也许他们正是碰到了这个问题才想到开发这个工具的吧。下面是git的一个常用命令流程图,通过这个图,你可以更形象的掌握git的使用流程,其中远程仓库就是常说的github,当然也可以是其他的
一般情况下开发项目或者什么都有一个工作目录,比如我的工作目录是git-demo,当你想要把一个目录变成git目录的时候使用git init命令,他会建立一个.git目录,里边存储了一些版本控制信息。比如你在这个目录中添加了一些文件或者修改了一些文件,可以通过 git add <filename>命令将它存储到暂存区(Stage),如果确认修改好了,就可以通过git commit -m "解释信息"提交到本地仓库(Repository),至此你就完成了本地的提交操作,当然在这个过程中你可以通过git status 查看当前状态,通过git diff 查看修改对比,通过git log查看版本库的状态,通过git --hard commit-id 重置HEAD指针进行版本回退。
本地修改完成后,就可以将其推送到github,在推送之前需要关联对应的github账号,设置ssh密码:
1.在本地git shell中运行$ ssh-keygen -t rsa -C "[email protected]"
2.在用户主目录下(windows如:用户/Adminstrator下).ssh文件夹,在对应账号的github设置下添加ssh密钥,复制key为id_rsa.pub中的内容就可以了
现在我们可以链接到github中一个现有的仓库,使用命令 git remote add origin [email protected]:username/git-demo.git,当然也可以使用HTTPS协议进行传送。
然后可以通过git push -u origin master将master本地仓库推送到远程github中。如果想要重新建立一个新的远程链接,可以先断开当前的链接使用命令git remote rm origin,然后重新链接。现在你就可以将自己的项目推送到远程网上仓库了。
当然,我们可能有时候要从github中拷贝后进行修改,可以使用git clone [email protected]:username/git-demo.git拷贝后进行修改后提交。图示有说明
当然我们的队友可能先于我们提交新的修改,我们要使用git pull进行远程同步后,在新的基础上进行修改。
至此一个完整的git流程就走完了。
当然除此之外还有一些其他概念,比如分支(branch),标签(tag)。master是主干,一般不再这个上修改,分支顾名思义是主干上的小分叉,我可以在分叉上工作完成后合并到master上,这里涉及分支的创建git branch <branchname>,跳转到分支 git checkout <branchname>,当然也可以一步到位git checkout -b <branchname>创建分支并跳转,可以在分支上进行正常的开发,开发完成后切回master(用checkout)合并这个分支的开发成功用git merge <branchname>,分支上的工作完成后可以删除分支使用git branch -d <branchname>,至此branch的一个生命周期就完成了,当然git merge推荐加上--no-ff参数,例如git --no-ff -m "描述" 可以记录每一次的合并。
还有一个命令比较重要是git stash,当你正在一个分支开发未完成时,这时你并不想提交,而突然有任务转向其他分支,你就可以使用 git stash 暂存当前的工作状态(类似存档),当完成突发任务后读档继续进行工作,这是不是太爽了,没错,就是这么爽。你可以使用git stash list查看当前的存档,使用git stash pop将最上面的任务读出继续工作。
标签相当于发布的一个版本,当需要在一个分支上使用git tag <name>创建一个标签,-m可以加上注释,可以使用 git push origin <tagname>推送一个tag到github,使用git tag -d <tagname>删除一个标签。
参考文献:廖雪峰的git教程,git官方教程,git和github的区分
以上是关于git学习总结的主要内容,如果未能解决你的问题,请参考以下文章