设为首页 收藏本站
查看: 1163|回复: 0

[经验分享] 10分钟学会Linux系统下Git的本地使用

[复制链接]

尚未签到

发表于 2018-1-15 21:58:36 | 显示全部楼层 |阅读模式
  身边的技术大牛一直都建议我使用git进行代码管理,而我每次都把这件事情忘之脑后。最近,好像感觉到了git的重要性。下面是最简单的使用git的入门方法,仅适用于像熊二飞月这样的菜鸟级git选手。
  Git是一个分布式版本控制软件,原是Linux内核开发者Linus Torvalds为更好地管理Linux内核开发而设计的。
  主要功能
  Git是用于Linux内核开发的版本控制工具。与CVS、Subversion一类的集中式版本控制工具不同,它采用了分布式版本库的方法,不需要服务器端软件,就可以运作版本控制,使得源代码的发布和交流及其方便。Git的速度很快,这对于诸如Linux内核这样的大项目来说自然很重要。Git最为出色的是它的合并追踪(merge tracing)能力。
  实际上内核开发团队决定开始开发和使用Git来作为内核开发的版本控制系统的时候,世界上开源社区的反对声音不少,最大的理由是Git太艰涩难懂,从Git的内部工作机制来说,的确是这样。但是随着开发的深入,Git的正常使用都由一些友善的命令稿来执行,使Git变得非常好用。
  工作步骤
  1. 安装git
  熊二飞月使用的是ubuntu系统,使用apt-get install git即可安装。
  2. 设置Git
  在能够使用Git进行工作之前,我们需要进行一次性的配置。为了能让Git能够跟踪谁做了修改,我们需要设置你的用户名。
  git config --global user.name "bear2flymoon"
  git config --global user.email bear2flymoon@gmail.com
  这里我的用户名就设置为:bear2flymoon
  邮箱为:bear2flymoon@gmail.com(谷歌被墙,无法登陆)
  3. 创建一个本地代码库
  假设我们的代码写在机器的/home/bear2flymoon文件夹下的’test'文件夹内。在命令行输入下列命令:
  cd /home/bear2flymoon/test/
  下面,我们需要告诉Git这个文件夹是我们需要跟踪的项目。所以我们在该目录下输入以下命令来初始化一个新的本地Git代码库
  git init
  Git会在test文件夹下创建一个名为.git的隐藏文件夹,这就是你的本地代码库。
  4. 暂存(stage)文件
  我们需要暂存(stage)test文件夹下所有项目文件,输入以下命令:
  git add .
  最后的“.”符号的意思是“所有文件、文件夹和子文件夹”。假如我们只需要把特定文件添加到源代码控制中去,我们可以指定它们:
  git add my_file,my_other_file
  5. 提交文件
  现在,我们想要提交已经暂存(staged)的文件。我们提交我们的文件时,总是附带着有意义的注释,描述它们现在的状态。我一直用“initial commit"来描述我的第一个提交的注释。
  git commit -m "initial commit"
  同样,你随时可以回滚到这个提交状态。如果你需要检查现在已暂存和未暂存文件的状态、提交等,你可以输入以下命令询问git的状态:
  git status
  6. 创建分支
  创建分支是你创建代码独立版本的动作,这个新分支独立于你的主干。默认的,每次你提交到Git的代码都会被存储到”master(主干)”分支。
  现在,比如我们想向项目中添加一个功能,但我们又想要能够回滚到现在的版本,为了防止出现差错,或者我们会最终放弃这个功能。这时候,我们就可以创建分支并切换到新建的分支,发送命令:
  git checkout -b new_feature
  或者先创建一个分支,然后切换
  git branch new_feature
  git checkout new_feature
  要看项目下所有的分支,发送命令:
  git branch
  现在你可以在你的项目上无所顾忌地做任何你想做的:任何时候,你都可以回到你创建分支前的状态。注意,你同时可以有多个分支,甚至可以从一个分支上再创建一个分支。
  7. 合并分支
  当我们对新功能满意的时候,我们想要把它加到主干分支上。当我们在的新功能分支上时,我们首先需要加载并且提交文件:
  git add .
  git commit -m "adds my new feature"
  然后移到主干分支:
  git checkout master
  像这样合并:
  git merge new_feature
  此时,我们的主干分支和新功能分支会变成一样。
  8. 丢弃并删除分支
  当我们想要丢弃并删除一个分支时,首先加载我们的文件并且在分支里提交:
  git add .
  git commit -m "feature to be discarded"
  然后,移到主干分支
  git checkout master
  然后发送删除命令
  git branch -d new_featrue
  假如修改已经合并了,它只会删除分支。假如分支没有合并,我们会得到一个错误信息。删除一个未合并的分支(通常我们不想保留的修改),我们需要发送一样的命令附带一个大写D。意思是“强制删除分支,无论如何我不想要它了。”:
  git branch -D new_feature
  9. 回滚到之前提交的状态
  在某些情况下,我们可能想要回到之前的代码版本。首先,我们需要找到想回到到哪个版本。需要查看所有完成的提交,发送命令:
  git log
  输出提交的历史记录
  

commit ca82a6dff817ec66f44342007202690a93763949Author: your_username your_email@domain.comDate:   Mon Nov 4 12:52:11 2013 -0700    changes the frontpage layout  
commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7Author: your_username your_email@domain.comDate:   Mon Nov
4 11:40:33 2013 -0700    adds my new feature  
commit a11bef06a3f659402fe7563abf99ad00de2209e6Author: your_username your_email@domain.comDate:   Mon Nov
4 10:37:28 2013 -0700    initial commit  

  如果我们想回到“adds my new feature"这个提交,简单的使用提交的ID做签出(checkout)(通常只用ID的开头9个字母)
  git checkout 085bb3bcb
  我们也可以签出一个新的分支
  git checkout -b my_previous_version 085bb3bcb
  只是别太疯狂了!分支越复杂,我们就越难确定我们在做什么。
  10. 别名
  Git允许我们为常用的命令创建快捷方式(别名)。例如,如果我们不想每次都输入git commit -m “some comment”,而是输入git c “some comment”,我们可以向git全局配置里添加一个别名来实现,像这样:
  git config --global alias.c 'commit -m'
  这是我使用的别名列表:
  git config --global alias.c 'commit -m'
  git config --global alias.co 'checkout'
  git config --global alias.cob 'checkout -b'
  git config --global alias.br 'branch'
  git config --global alias.m 'merge'
  git config --global alias.a 'add .'
  git config --global alias.s 'status'
  git config --global alias.dbr 'branch -d'
  这下就可以使用Git进行最基本的程序版本管理啦!
  学习资料:
  Pro Git http://iissnan.com/progit/
  本文参考整理自以下资料:
  维基百科 http://zh.wikipedia.org/zh-cn/Git
  伯乐在线 http://blog.jobbole.com/53573/
  特别感谢
  推荐下面这个教程:Git教程-廖雪峰
  2015-03-14  熊二飞月

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-435496-1-1.html 上篇帖子: XCode与Git的完美融合,不再依赖其它Git客户端 下篇帖子: 【Git】代码托管
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表