在使用Git之前,有必要了解一下Git的几个重要概念:Git工作区、暂存区和版本库。
■工作区(Working directory):简单地说是在计算机里能看到的目录。
■暂存区(stage):用来暂时存放工作区中修改的内容。
■版本库(Repository):工作区里有一个名为.git的隐藏目录,这个目录不算工作区,而是Git的版本库。
Git基础环境准备妥当后,需要先从远程仓库克隆项目文件。准备好远程仓库,例如git@gitee.com:hwhe/JavaDeveloperMap.git[33],这里打开“Git Bash Here”命令行,用命令git clone克隆一个本地库。
$git clone git@gitee.com:hwhe/JavaDeveloperMap.git
本节使用的远程仓库是通过Oschina创建的,Oschina给出的地址不止一个,还可以用https://gitee.com/hwhe/JavaDeveloperMap.git这样的地址。实际上,Git支持多种协议,默认使用ssh,但也可以使用https等其他协议。区别为https方式每次push都必须输入口令。
Git常用命令如下:
■git clone复制一个仓库到本地
用git clone复制一个Git仓库到本地,能够查看该项目,或者进行修改。
$git clone[url]
■git add添加文件到缓存
$git add test.java
■git status查看当前Git状态,来确定当前是否有修改
$git status
■git commit保存到本地仓库中
git commit是将修改推送到本地仓库中。使用-m选项可以设置提交注释。执行此命令之前,需要先执行git add将修改放入暂存区中。
$git commit-m '本地提交的备注'
■git push推送到远程仓库
git push命令用于将本地分支的更新,推送到远程主机。它的格式与git pull命令相仿。
$git push<远程主机名><本地分支名>:<远程分支名>
注意,分支推送顺序的写法是<来源地>:<目的地>,所以git pull后面跟<远程分支>:<本地分支>,而git push后面跟<本地分支>:<远程分支>。
如果省略远程分支名,则表示将本地分支推送到与之存在“追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被创建。
$git push origin master(www.xing528.com)
上面命令表示,将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被创建。
■git pull同步远程分支到本地
$git pull
如果本地没有配置SSH公钥,则需要根据提示输入用户名和密码才能更新。配置SSH公钥,可以免去输入用户名和密码,具体配置方法在3.2.5节会有详细介绍。
■git reset和revert代码回滚
第一种情况,还没有push,只是在本地commit。
1)找到之前提交的git commit的id信息 $git log
2)找到想要撤销的id,执行git reset命令,完成撤销,同时将代码恢复到commit_id对应的版本。注意:hard参数的作用是使修改的代码也回滚到commit_id的版本。
$git reset--hard<commit_id>
或者
$git reset<commit_id>
不带参数hard,则仅完成commit命令的撤销,不对代码修改进行撤销,可以直接通过git commit重新提交本地修改的代码。git reset常用参数见表3-3。
表3-3 git reset常用参数
第二种情况,commit push代码已经更新到远程仓库。
对于已经把代码push到线上仓库,如果回退本地代码也想同时回退线上代码,使线上、线下代码保持一致,需要用到下面的命令:
$git revert<commit_id>
revert之后本地代码会回滚到指定的历史版本,这时再git push即可把线上的代码更新。
git reset是回退到某次提交,提交及之前的commit都会被保留,但是此次之后的修改都会被退回到暂存区;git revert是生成一个新的提交来撤销某次提交,此次提交之前的commit都会被保留。
当前使用的开发工具Eclipse默认带有Git插件,操作更加便利。例如导入项目,执行“file->import->Git”,根据提示输入对应Git信息,即可完成Git项目导入。
当要提交代码、更新项目时,只需在项目上执行“鼠标右键单击-> Team”操作对应的菜单即可,如图3-9所示。
图3-9 Eclipse中的Git菜单
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。