刚开始用git的小白适用,参考链接:http://www.cnblogs.com/qijunjun/p/7137207.html
实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,今天就来总结下Git的相关用法,废话不多说,直接开写。
目的
:通过Git管理GitHub上托管的项目。
一、下载安装Git
在你开始使用 Git 前,需要将它安装在你的计算机上。对应的计算机有 Windows 系统的、Linux 系统的、MacOS 系统的。本博主使用的是 Windows 系统。所以安装 Windows 版本的 Git。
在 Windows 上安装 Git 也有几种安装方法。 方式一:官方版本可以在 Git 官方网站下载。 打开 https://git-scm.com/download/win,下载会自动开始。 要注意这是一个名为 Git for Windows 的项目(也叫做 msysGit),和 Git 是分别独立的项目;更多信息请访问 http://msysgit.github.io/。方式二:另一个简单的方法是安装 GitHub for Windows。 该安装程序包含图形化和命令行版本的 Git。 它也能支持 Powershell,提供了稳定的凭证缓存和健全的 CRLF 设置。可以在 GitHub for Windows 网站下载,网址为 http://windows.github.com。
本博主使用的是方式一:
1、下载Git,官方地址为:https://git-scm.com/download/win

2、下载完之后,双击exe文件安装

3、选择安装目录

4、选择组件

5、开始菜单目录名设置

6、选择git默认使用的编辑器

7、选择使用命令行环境

8、以下四步默认,都是直接点击下一步,最后点击安装

9、安装完成

10、检验是否安装成功
回到电脑桌面,鼠标右击如果看到有两个git单词则安装成功

二、Git的基本工作流程
1、Git工作区域图解

2、向本地仓库中添加文件流程

三、Git的初始化及仓库创建和操作
1、Git安装之后需要进行一些基本信息设置
a、设置用户名:git config --global user.name "在GitHub上注册的用户名";
b、设置用户邮箱:git config --global user.email "在GitHub上注册的邮箱";
注意:该配置会在GitHub主页上显示谁提交了该文件。命令结尾处加不加分号均可。
c、配置ok之后,我们用如下命令来看看是否配置成功:git config --list
注意:git config --global 参数,有了这个参数表示你这台机器上所有的git仓库都会使用这个配置,当然你也可以对某个仓库指定不同的用户名和邮箱。如下:
如何修改git全局初始化的用户名和邮箱?答:使用--replace-all
git config --global --replace-all user.name "在GitHub上注册的用户名";
git config --global --replace-all user.email "在GitHub上注册的邮箱";
然后再查看下:git config --list
补充:说说git bash和git cmd的区别。简单一句话,git cmd是git bash的子集。所以我们直接用git bash就行了,git gui是图形界面。
git
:版本控制工具,支持该工具的网站有Github、BitBucket、Gitorious、国内的OSChina的码云仓库、csdn仓库、Coding等等。shell
:是linux、unix系统的外壳,也可以理解为命令行,就是你输入并执行命令的地方,git通过命令行和图形界面两种方式使用shell。bash
:是shell的一种,最常用的shell之一。git bash
:方便你在windows下使用git命令的模拟终端(windows自带的cmd功能太弱),linux、unix下可以直接使用git。git shell
:它是安装了git的shell,bash是一种shell。
我们使用Git自带的命令行模式git bash来演示(windows自动的cmd也可以哦):

2、初始化一个新的本地git仓库
a、创建文件夹
方法一:在本地计算机可以鼠标右击 --> 点击新建文件夹test01
方法二:使用git新建:mkdir test01

b、在文件内初始化git(创建本地git仓库)
方法一:直接输入
cd test01
,然后输入git init
方法二:点击test01文件下进去之后 --> 鼠标右击选择 Git Bash Here --> 输入
git init

3、向本地仓库中添加文件
方法一:打开编辑器直接新建index.html文件
方法二:使用git命令touch 文件名
,然后把文件通过git add 文件名
添加到暂存区,最后提交操作

将文件从暂缓区提交到本地仓库

4、修改本地仓库文件
方法一:用编辑器打开index.html直接进行修改
方法二:使用git命令vim "文件名"
,然后在中间写内容,保存并退出编辑模式命令:qw
,最后提交操作

5、删除本地仓库文件
方法一:在编辑器中直接把要删除的文件删除掉
方法二:使用git删除git rm 文件名
,然后提交操作

注意:以上演示中的双引号均可以省略。
四、Git管理远程仓库
1、使用远程仓库的目的:备份、实现代码共享、集中化管理代码。
Git远程仓库实际上就是保持在远程服务器上的git仓库文件。
即git仓库文件的位置从本地变为远程服务器了。

将本次仓库提交到远程仓库

五、Git克隆操作
目的:将远程仓库(github上对应的项目)下载(复制)到本地
1、命令:git clone 仓库地址
远程仓库地址的由来如下:

2、克隆项目

3、将本地仓库同步(上传)到git远程仓库中:
git push

注意:将当前文件夹中的所有文件都提交命令:
git add .
出现错误的情况有:
a、如果出现无法同步或没有权限,解决方法如下:
用户名和密码一定要和github上的一致。

六、补充图形化界面的操作演示
6.1、使用Git GUI克隆已存在的远程仓库
1、在本地新建一个文件夹test,选中后点击右键,选择Git GUI Here
,
出现下图,选择第二个,克隆已经存在的仓库。

2、填写Source Location(源地址)和Target Directory(目标目录)。

3、点击上图的Clone后,会提示下输入你github的用户名和密码,出现下面的界面,表示克隆完成。你可以查看本地克隆的文件。

6.2、将本地仓库同步(上传)到git远程仓库中
1、右键选择GIT GUI Here
进如 Git 界面。

2、选择 Edit 选择卡,选择 Options。

3、填写github的用户名和邮箱信息,并修改默认的编码为utf-8。

4、首次使用会在某一步的时候会跳出界面,让你输github的用户名和密码,输完就继续操作。
按步操作如下:

注意:可能会在第5步Push时,需要我们输入远程仓库的地址,输入完成后,点击Push。

上图下面有3个选项,中文意思是:
第一个:立刻获取最新改动(所以如果是本地克隆(下载)远程一个项目,也可以这样操作)。
第二个:本地新建的项目,初始化远程仓库并发布过去。
第三个:什么也不做。
5、等待上传完成。

6、查看远程仓库,就可以看到刚刚提交的内容了。
6.3、解决合并冲突的问题
1、远程仓库重置项目后,把本地文件直接push,会出错,这是由于git本地端文件与远程服务器端文件不一致产生冲突导致的。

2、遇到这种情况需要先从远程仓库拉取(pull)一下文件,解决下合并冲突的问题后再push。

拉取(pull)成功后显示

3、获取完远程服务器代码后,就需要与我们本地的代码合并,保证我们本地的代码此时处于最新状态。
菜单 --> Merge --> Local Merge,在Merge弹窗中选择Merge按钮,成功后会有Success弹窗出现。

出现如图:

选择完后,就会弹出分支选择合并窗口,红色箭头指向的就是我本地需要合并的分支(git是多分支的,注意不要选错)。
点击Merge就完成合并了。
1、注意:不管你本地有没有代码,fetch之后,是都要merge(合并)的,也就是说,fetch下来后,代码还在缓存区里,我们需要把它合并到自己本地项目中(即磁盘上)(这和上传代码时先将代码放到暂存区里道理一样)。
2、当我们本地修改的内容,其他同事也修改了同一内容,并且先于我们自己提交,即说明远程仓库发生改变了,此时如果我们本地push代码就会产生代码冲突,我们本地需要解决冲突(冲突一般都是相同行数修改引起的),此时我们就要看看到底怎么修改冲突才合理(最好和同事商量,看看他修改了哪些内容,目的是啥,避免修改冲突时去掉同事的代码),即如果合并之后检测到文件有冲突,是会提示Command Failed失败的,并且Git Gui是会获取到冲突文件,对于冲突文件的解决,可以右键选择使用远程版本的还是本地版本的,并且本地已经被打开的话,是会提示是否overwritten,按照此方法挨个解决下冲突文件即可。