从本身的CSDN转载个到这里来,(CSDN的土豆服务器实在用得很不爽)html
我是经过这个来学习的。我的愚笨,琢磨了半天,终于搞通了,醉了醉了,之前一直使用svn,用git确实有点水土不服。本文以如何使用git为主来展开,不涉及太多理论。android
git是分布式的版本管理。什么叫分布式呢,这个得和SVN集中式对比一下。git
SVN就是把全部的版本信息都管理在一个服务器上,其余端都是客户端,checkout是获取某个版本的代码(一般是最新版本啦,也就是HEAD),update就是把本地的代码更新一下,和服务器保持同步,commit就是把本地代码提交给服务器。这些操做就如同访问一个论坛,看帖,留言同样。github
而GIT是每个机器上都有一个服务端,或许说服务端不太准确,应该说每个机器上都是一个版本库,SVN除了服务器以外,其余的机器上都只是一份代码而已,并无版本信息,也就是说:若是你使用SVN,有一天服务器被人偷走了,你的机器上,只保留着昨天晚上update的最新代码,你基本上没法看到以往版本的信息了,你新买个服务器,建个SVN服务器,版本号又得从1开始。而GIT不同,即便有一天github.com这个网站倒闭了,也没有关系,你昨晚拉取(pull)到本地的数据是完整的一个版本库,你在本机就能够查看到全部的版本信息,咱有空再建一个github2.com就是了。
以上是GIT与SVN一个比较大的区别。windows
明白了这一点就好办了,接下来说如何使用git。bash
我喜欢使用命令行来操做。服务器
在Windows下,打开连接:http://msysgit.github.io/inde...下载客户端,安装后有一个git bash的客户端,双击打开以下图所示:网络
在Mac下,在此下载客户端http://git-scm.com/download/mac,安装后直接使用自带的终端便可操做。eclipse
接下来要进行一个简单的初始化配置,在终端中输入分布式
git config --global user.email [your_email_address] git config --global user.name [your_name]
这两行的做用是对当前你使用的机器作一个标记,由于你的项目会被多个机器操做,而这有多是你在使用,也有多是别人在使用,那么是谁提交的代码,就须要有一个标记,好比,我有一个版本库,使用了我本身的三台电脑进行过提交,我使用git log命令来查看日志记录,会显示哪一个用户作了什么操做。
作好以上的配置,就能够继续了。若是上面的配置不作,当你提交代码的时候应该会提示你。
git是一个系统,github是一个使用git来管理版本库的网站,这二者仍是有区别的。
若是你要单机使用的话,也就是你把本身的电脑当作版本库,那么你须要使用git init命令。该命令会把当前目录变成一个版本库,并在里面生成一个.git文件夹。以下图所示:
若是你要联网使用,也就是说github.com上已经有一个版本库了,咱们把它克隆(clone)到本地,你能够理解为checkout。这时,你须要使用git clone [url]
命令。该命令执行后,会在当前目录建立一个以版本库名命名的文件夹,这个文件夹里面有.git文件夹和项目相关的文件。
(1)先在github.com上建立一个新(空)的版本库。
(2)建立完成后,会给出一个版本库的地址
(3)在命令行中进入你想要把项目放置的位置,好比你想要把项目放置到/my_projects/目录中,你只须要到这个目录便可,不须要新建test_git目录。而后在命令行中输入:
git clone https://github.com/KrossFord/test_git.git
(4)而后你就能够在你的目录中看到test_git目录。
(5)该目录中能够看到一个.git文件夹。
这样,你就把其余机器(github.com)服务器上的版本库给clone到本地了。
新建的版本库空空如也什么都没有,咱们以一个已经存在的Android项目为例,想其中添加代码。
(1)新建一个Android项目(你本身的其余什么项目均可以啦),把代码所有复制到test_git目录中。以下图所示:
(2)这个时候咱们可使用命令git status来查看版本库的状态,这里注意一点!git status命令查看的当前版本库的状态,何为当前呢?就是说,终端也就是命令行进入到一个有.git文件夹的文件夹里,那么git status命令就能够检查这个目录(项目)的状态,若是你在一个没有.git文件夹的文件夹中git status是没有用的,由于那个文件夹并非一个版本库。
因而你能够看到以下内容:
一下文件是未被添加到版本库中,咱们须要使用git add命令来添加。
(3)忽略,对于一些项目有一些文件是不想被添加到版本库上传到服务器的,好比bin文件夹,这种状况咱们能够创建一个.gitignore文件来处理,这里windows有点坑,它不能建立一个没有文件名只有扩展名的文件。
不要紧,咱们随便创建一个文件,而后用命令行来改,使用
mv [原文件名] .gitignore
就好了。
在.gitignore文件中输入如下内容便可:
#忽略bin文件夹自己 /bin #忽略bin文件夹内部的内容 /bin/
关于忽略规则,请参考这里。
这个时候再次输入git status
来看看版本库的状态。
这个时候就没有bin文件夹了。
(4)添加文件,并提交文件。
直接使用git add .
来进行添加,再次用git status
查看状态。
而后使用git commit -m "message"
来提交,填写提交信息是必须的。
这个时候,提交工做已经完成了,也就是说,版本库中已经有了新加入的文件,可是若是此时你去刷新github.com的页面,你会发现你的项目并无变化,依然是空的。这是由于git是分布式的,你本机的版本库是版本库A,github.com上的版本库是版本库B,它们是不会自动关联同步的。
因而你须要最后一步操做。
(5)将数据推送到远程版本库,你须要使用git push origin master
命令。
origin是远程版本库的名字,master是你当前分支的名字,具体详情请参考这里。
对了,这个命令后,你须要输入github帐号与密码。
提交完后,你刷新github.com的页面,就能够看到你的项目文件了。
和svn同样,若是远程的版本库先被修改了,那么我本地的版本库想要保持最新,就须要对本地版本库进行更新,这有点像svn中的update,但区别是svn中update只获取最新的代码,或者某一个特定版本的代码,而git中的update是把整个版本库与服务器端的同步。
具体操做,请执行git pull
以上,就是git的常规使用。
若是已经把一些文件提交到了版本库,而且push到远端,那么就可使用git rm --cache file_or_dir_name来移除。
好比我将.idea文件夹提交上去了,可是我如今想移除它。
git rm -r --cache .idea/
而后我在.ignore文件中添加 .idea 这样一项。
而后正常commit便可
若是你使用公司的网络来访问github的话,每每会收到一些限制,给git设置代理的方法:
git config --global http.proxy [host:port]
git init
将当前目录建立为版本库,实际上就是在当前目录里面建立了一个.git文件夹。git clone [url]
将服务器端的版本库clone一个到本地来,会在当前文件夹下建立一个项目文件夹,项目文件夹中有.git文件夹。
git config --global user.email xxx git config --global user.name xxx
以上两个命令用来设置当前机器使用git的用户信息。git log
能够查看当前版本库的日志信息,在没有.git文件夹的文件夹中无效。
使用.gitignore来忽略一些不想提交的文件。
使用git add [file]
来把文件归入版本库中,此时文件尚未提交到版本库。git commit -m "this is a message"
来进行提交,git的提交是本地操做的,能够说全部的操做都是本地的git status
来查看版本库的状态,随时均可以使用,在没有.git文件夹的文件夹中无效。git push origin master
将本地版本库的信息推送到服务器端。git pull
将服务器端的版本库信息同步到本地。
以上操做,基本能够知足我的需求了。
更新2014-11-4 19:11:37
git commit -a命令,-a 的做用是将被修改的,或者被删除的文件加入到待提交列表,commit的时候会被commit。可是新增的文件不会,也就是说,新增的文件仍是要用git add命令来操做。
git add . 能够一次性add全部的新文件。
更新2015-3-20 11:50:43
git bash进入后目录老是是不在我自定义的目录上,更改git bash的初始目录(起始目录,开始目录)的办法是:
windows下右键git bash的图标,在“快捷方式”选项卡中,有“起始位置”一栏,更改便可。
更新2015-3-23 15:07:20
本地建立的仓库推送到github上的使用办法。
要作毕业设计,所以个人项目都放在www目录下,之前个人android项目都是放在我本身管理的一个mygit目录下的,eclipse直接引用就好了,但网站不行(其实也能够,服务器配置改下就好了),因此个人项目目录就存放在www目录下,我首先进入个人项目目录www/flower(一个鲜花网站……),而后在git bash中输入git init命令,便可将当前目录变成一个仓库,能够看到该目录中自动生成了一个隐藏文件夹.git。
接下来咱们就要推送到github上,在github上创建一个仓库,而后会给你一个地址。
这个时候须要用git bash工具,给当前的仓库加一个远端地址。命令以下:
git remote add remote_name https://github.com/xxxxxx/xxx...remote_name能够本身随便起后面跟着的地址,就是github给你的仓库地址。添加完毕以后,输入git remote -v能够查看到remote是否添加上了。接下来就是关键性的一步git push remote_name master这样就能够将本地的代码推送到github了。直到学习了这一步,我才知道git push remote_name local_nameremote_name是github上的名字,local_name是本地的名字。以前的用法都是git push origin master,也就意味着,origin是github上的,master是本地的,这个参数的顺序还真是符合英语的语法顺序呢……