您的位置:首页 > 其它

Git的使用和相关配置

2015-09-23 13:32 176 查看
公司项目之前一直都是svn管理代码,用着也很不错。前几天总监说我们安卓风凉话,所以我们就想着切到Git管理了,带着装逼能飞的心理,让我们上路吧。我之前是用过git命令的,但是只会使用简单的git命令,对于如何从零开始搭建一个远端仓库,本地仓库与远端配置,关联等这些前期的配置和搭建过程,我是不知道的。所以,凑着这个机会,自己也重新学习一把。
最有效的学习方式就是模仿。让我们从模仿做起。
git是管理工具,所以按照svn的管理逻辑,一定是服务器有仓库,本地有客户端可以拉取代码,从本地工作开发,然后推送到远端进行同步,以此循环类推,达到多人协同开发的高效便捷。
1、首先要有个远端的仓库。前期做实验没用自己的服务器,就从github上创建一个空的仓库就可以了。特别注意的是,在创建的时候,选择创建README.txt 和.gitignore文件,就会默认生成这两个文件,自动生成了这两个文件,后面我们在忽略代码进行忽略代码管理的时候就方便了一步。
2、在本地创建个空的仓库并进行初始化。至于为什么要在本地创建新的仓库并初始化,这就要回去看看svn和git的区别以及git的工作原理图了。
废话少说,放码过来:mkdir gitdemo 该命令负责在当前工作目录下创建一个gitdemo的目录(文件夹),接着 cd gitdemo 进入到gitdemo,然后执行:git init 会看到在命令行提示已经初始化了一个空仓库。至此,创建空仓库完毕。
3、使本地库和远端库进行关联: git remote add origin http://hostname
该命令就是为本地仓库添加一个远程主机,并将该主机起名为origin
可能其他教材中又说需要进行ssh相关配置的,其实不配置也是可以的。配置ssh是为了提高速度,提高安全性验证而加的。不加也是可以用的。
4、本地和远端已经进行了关联,现在可以将远端的内容拉取到本地了:git pull origin master 该命令就是从远端主机中拉取代码到本地仓库,然后进行合并更新。在实际的开发过程中或者其他人其实更推荐该步骤改为git fetch 和git merge 两步进行。里面的区别现在我也不太懂。回头弄懂了做个说明和解释。
5、拉取到本地后,剩下的就是在本地开发的事情了。在git使用中,区别于svn,我们的新的添加的工作都尽量从分支上完成,然后开发完成后将分支合并到主分支,然后提交。现在我们要开发新的功能了,所以,依照规则,我们先创建一个分支:git branch newbranch 创建了一个分支名为newbranch的分支。上述命令我们只是创建了分支,但是我们的工作分支还在原来的主分支(忘了介绍,git默认的分支叫主分支,master),所以我们开发前要工作分支切换一下,git
checkout newbranch 从原来的工作分支切换到名字为newbranch的分支。万事大吉,可以开工了。上面两个创建和切换的命令可以合并成一条语句 : git checkout -b newbranch
6、一天的开发工作完成,下班时需要将代码提交到本地仓库一下,以便保存。git add . 该命令用于将工作空间内所有的修改全部add到暂存区,此时还没有,还需要git commit -m "此次提交的注释" 命令才能将代码的修改commit到本地的仓库以便保存。至此,已经提交到本地仓库。
说明:git add . 是偷懒的做法,将所有修改全部添加提交。如果仅仅是想添加提交某个文件,可以git add fileName;
另一种情况 如果 git add . 添加了一百个文件 ,但是有两个不想添加提交,可以先git add . 先全部添加,然后: git checkout -- fileName;这样就可以把不想要提交的文件重新捡出暂存区。
7、刚刚的项目是从newbranch分支上进行的,我们的master还是原来的呢,所以我们需要切换回去合并一下,git checkout master 切换到主分支,git merge newbranch ;将newbranch分支的内容和master主分支进行合并。git branch -d newbranch; 工作完成,将新建的分支删除。
8、项目需要打个测试包,所以要吧本地仓库的东西提交到远程主机: git push origin master ;将代码推送至远端;良好的习惯是:先拉再推,这样更安全保险一些,我们推荐使用先拉后推的方式。首次推送时可以采用:git push -u origin master 这样就默认绑定,以后直接git push origin就好了
10、一些其他的常用命令:
pwd 列出当前的工作目录
ls 查看当前目录下的文件 ls -al 查看当前目录下的所有文件,包含隐藏文件
git status 查看git 目前的状态 经常用到该命令进行查看 ,可以实时使用
git rm fileName 删除某个文件
git rm directory -r -f 删除某个目录(文件夹)
git clone hostAddress 从远端主机克隆项目到本地
git tag 打标签(目前还未使用到)
git reflog 查看提交的日志记录,也经常使用,在版本回退是查看commit id
git reset --hard commitId 版本回退 回退到指定id 的版本 。。。注意:一定是没有push之前,push之后远端已经存在,就比较麻烦了。
当然,这只是一些常见的我所熟知的git命令,至于其他的,以后慢慢学,慢慢积累吧。接下来介绍下ssh相关配置和关于忽略文件的部分。
关于ssh配置只是知道原理,目前如何具体操作还没有弄明白,稍后更新。先继续往下看吧。
下面来写关于Git在进行项目管理时,一些编译文件等一些需要忽略的文件的管理.需要进行忽略的无非就是两种:一种是某个文件或者某一类文件;另一类就是某个目录中的全部文件或者某个目录下的某类文件;其实归根结底其实还是文件的忽略,只是多了一个路径而已.

Git中,用于忽略文件的是一个".gitignore"文件,我们所要做的其实就是将我们要忽略的文件按照一定的文件格式写入该文件即可,这样再推至远端的时候,git就会自动将文件中配置的东西进行忽略,不会推至远端主机.

语法很简单,对应各种项目,github上也有相应的开源项目供大家参考,组合一下就可以了,非常简单。这里先强调一下其他的注意事项.
1、.gitignore是我们用来忽略项目中的某些需要忽略的文件的,所以,在我们进行多人协同开发时,最好在搭环境的时候就把该文件创建好并配置好该文件,放在本地创库根目录下面。特别注意:有的开发者是将初始项目创建好之后先把所有commit的东西推至远端,然后才想起来需要忽略,回头再来创建.gitignore文件进行上传。特别强调,这个顺序是错误的,原因就是需要忽略的文件已然推至到了远端。所以再怎么忽略远端也还是会存在第一次已经上传的文件。
2.关于gitignore的相关语法和格式问题.首先语法格式及其简单,以行为单位 ,将要忽略的文件或者目录直接写在文本文件中即可.另外,在github上创建仓库或者AndroidStudio创建android项目时,可以选择创建gitignore文件或者会自动创建gitignore文件,所以我们就没必要多费太多心思,只需要知道如何进行设置,如何进行添加特殊的想要忽略的文件就好了。
具体的限制和说明如下:

1)、配置语法:

  以斜杠“/”开头表示目录;

  以星号“*”通配多个字符;

  以问号“?”通配单个字符

  以方括号“[]”包含单个字符的匹配列表;

  以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;

2)示例:

  (1)规则:fd1/*

     说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;

  (2)规则:/fd1/*

     说明:忽略根目录下的 /fd1/ 目录的全部内容;

  (3)规则:

/*

!.gitignore

!/fw/bin/

!/fw/sf/

说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: