使用git版本控制工具已经有一段时间了,研究生阶段也接触了很多开源的项目,还有幸作为一个开源项目的管理者(https://github.com/HuiLi/Sqlite3.07.14) 。在这个过程中更加的熟悉了git使用。对于码农来说版本控制是不可或缺的,在这之前可能有很多的小伙伴使用的是svn,如果你对git作为版本控制工具没有任何的好感,那请你自动忽略本文。
git版本控制工具是Linux之父Linus Torvalds在2005年写的,只用了两个星期的时间便写成了这个工具,大牛,不得不膜拜。为什么Linus要发明这个玩意,我想大家应该自行去谷歌,因为这毕竟是一篇技术博客,故事就不讲了。下面简单的说一下一个新手上手这个工具必须要掌握的一些命令。
安装任何的软件不得不考虑的一件事情就是我到底要选择什么样的操作系统?常用的系统有Windows、linux(Ubuntu、Centos)、MacOS,这三个系统选择哪一个都可以,但是从后期项目的跟进,应该考虑选择Linux操作系统,毕竟Windows并不适合做软件开发,对此我深有体会,我现在正在做的一个项目,在初期我是Windows的脑残粉,坚持用Windows,所以在早期搭建环境的时候费老鼻子劲了,最后还没弄好,一堆的Bug,最后转到了Linux(Ubuntu、Centos)上,结果没用了几个小时就搞好了。
如果你是一个Windows用户,通过链接 https://git-scm.com/ 下载,现在的最新版本是2.7.1,下载之后安装的过程遵循Windows的惯例:一直选下一步,如果遇见要让你勾选的项目,全部勾选。在linux上安装比在Windows上安装更加简单.
在Ubuntu上安装
sudo apt-get install git
在Centos上安装
sudo yum install git
安装完成之后在控制台输入
git --version
注意:按照上面的方式,对于Windows总是能安装到最新版本的git,但是Linux用户安装到的就不一定是最新版本,如果想要安装最新版本。下面提供从源进行安装的方法。
如果你想从源编译安装git,那么你不得不考虑去初始化安装需要的环境依赖:curl、zlib、openssl、expat、libiconv。
如果你的系统有yum
,那么采用
sudo yum install curl-devel expat-devel gettext-devel openssl-devel perl-devel alib-devel
如果你的系统是apt-get
,那么采用
sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
完成上述步骤之后,下载最新的git安装包,进行编译安装,具体过程请自行谷歌,如果中间遇见任何的问题,也请自行谷歌,小白用户不建议使用编译安装的方式
git config --global user.name "jpzhu"
git config --global user.email "[email protected]"
注意:上述用户名(user.name)和邮件(user.email)需要使用用户自己的。
git config --global credential.helper store
git config --list
ssh-keygen -t rsa -C "[email protected]"
接着一路回车,不要输入任何的密码,因为对于菜鸟来说根本不需要那么高的安全级别。完成之后会在根目录下生成一个id_rsa.pub的文件,这个文件对于我们仓库的交互至关重要,实际上这就是本地仓库的身份证。
注册github:https://github.com/join?source=header-home 。注册bitbucket:https://bitbucket.org/account/signup/ 。github和bitbucket各有千秋,简单的说就是我们会将写的代码推送到这两个远程仓库中,实现代码的托管。注册完成之后请根据github和bitbucket的文档学习基本的使用方法。这里不再赘述。
实际上在使用git版本控制工具的过程中,在本地我们也维护着一个版本库,当我们向远程仓库推送代码的时候,远程仓库怎么才能识别我们呢?就用到了ssh,在根目录下将id_rsa.pub文件夹中的内容copy到github仓库的SSH keys中。具体过程请自行摸索吧,这并不难,你一定能找到在哪里添加。添加完成之后使用下面的命令测试是否可以成功与github交互:
ssh -T git@github.com
如果能够成功的返回你的github用户名,说明你成功了。对于bitbucket采用:
ssh -T git@bitbucket.org
在这个过程中经常有人不能成功,究其原因有二:首先你可能没有成功的将id_rsa.pub文件添加到你的github或者bitbucket仓库的SSH keys中。其次如果你是的错误是:ssh: connect to host github.com port 22: Connection timed out.
此时就需要另外的方法换一个端口,处理办法是:
如果是github,则
在.ssh文件夹中新建config文件
用编辑器打开(Windows用户用notepad++或者editplus打开,linux用户用gedit打开),输入下面的指令
Host github.com
User example@example.com
Hostname ssh.github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
如果是bitbucket,则
在.ssh文件夹中新建config文件,用编辑器打开(Windows用户用notepad++或者editplus打开,linux用户用gedit打开),输入下面的指令
Host bitbucket.org
User example@example.com
Hostname ssh.bitbucket.org
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Port 443
接下来就是版本控制最为核心的工作,代码的修改推送。
mkdir file_name
git init
#include <stdio.h>
int main(void)
{
printf("Hello,C!");
return 0 ;
}
接着执行:
git stage hello.c
或者
git stage -A
说明:可以将增加或者修改的文件一个个写到git stage的后面,但是如果你增加或者修改的文件过多推荐使用-A(–all)参数,会一次将所有发生变化的文件全部增加进来。
接着执行:
git commit -m "modify information"
说明:-m参数之后的部分是指明本次进行了怎么样的修改,实际上这并不是一个好的commit,但是对于初学者而言,最好加上-m参数,之后的博客中我还会详细的说明,说明样的commit才算是比较好的commit信息。
接着执行:
对于github,则
git remote add origin git@github.com:github用户名/上一步创建的仓库名.git
对于bitbucket,则
git remote add origin git@bitbucket.org:bitbucket用户名/上一步创建的仓库名.git
最后执行
git push -u origin master
将所有的修改都推送到远程仓库中。
分支也是很重要的一个技术,在软件开发的过程中,一个团队有不同的人组成,同一个人也可能去开发不同的功能等等的需求,致使分支技术变得尤为重要。
git checkout -b branch_name
接着进行功能或者bug的修补,完成之后执行:
git stage -A
git commit -m "modify information"
git push -u origin branch_name
执行上述代码,成功将分支的代码推送到远程仓库中。
查看当前分支
git branch
切换到主分支
git checkout master
如果刚才的分支开发确实是良性的,也就是实现了功能或者修补了bug,那么将分支合并到主分支上。
git merge branch_name
git文化博大精深,这仅仅是个开头,后面的博文中我会继续总结更加高级的技巧,但是对于一个初学者,上面的这些技巧掌握好就已经跨入了版本控制的大门,需要能对小伙伴们有帮助。
如果大家对我所研究的问题感兴趣,或者需要与我联系,请在下方扫描我的微信二维码添加好友: