版本控制工具 Git 的安装
下载:https://git-for-windows.github.io/ 或 https://git-scm.com/
除了安装路径,全部按默认即可:
--> 选择安装路径 --> 使用默认的组件 --> 创建开始菜单文件夹 --> 选择使用Git的命令行模式,选择默认Git Bash模式会创建一个快捷命令行:
--> 选择换行格式,默认为第一个跨平台样式:
--> Finish 安装完成,桌面会生成一个快捷图标,安装成功。
在安装Git的过程中一般都会勾选【Git Gui Here、Git Bash Here】选项,如果你以后是使用TortoiseGit,可能并不需要桌面右击中有Git Gui Here、Git Bash Here选项:
Git Gui Here:是否要在这里面使用git shell的图形用户界面操作?
Git Bash Here:是否要在这里面使用git shell的命令行工具操作?
2
2
1
Git Gui Here:是否要在这里面使用git shell的图形用户界面操作?
2
Git Bash Here:是否要在这里面使用git shell的命令行工具操作?
客户端GUI工具 TortoiseGit 的安装
下载:https://tortoisegit.org/download/
TortoiseGit就是大名鼎鼎的小乌龟,一个图形化的Git操作程序。
其实TortoiseGit 只是一个程序壳,其必须依赖Git Core,所以安装TortoiseGit前需要先安装Git。
如果你是一名软件开发人员,那请你一定要用命令行(如使用Git Bash Here),不要用可视化工具,用可视化工具的速度你会难以忍受的。
--> 选择SSH客户端,可以选择 TortoiseGitPlink(位于TortoiseGit安装目录/bin 下),也可以选择 Git 默认的SSH客户端(位于Git安装目录/bin/ssh.exe,如果配置了 Path,那直接是 ssh.exe)。我们使用默认即可:
--> 选择安装路径及组件 --> 点击Install,开始安装 --> Win 7下会弹出一个确认安装的提示框,确认就可以了 --> 安装完成。
确认是否安装成功, 在桌面->点击右键,如下图
和SVN一样,官网有提供汉化包,注意要和TortoiseGit的版本一致才可以。
Eclipse 中 Git 的基本使用
1、配置用户名和邮箱
2、在eclipse中新建或导入一个项目,然后项目上右键 Team > Share Project,选择Git > next,
在弹出窗口中点击右侧的【Create...】或下侧的【Create Repository】,最后 finish,就创建了一个本地仓库。
若项目已经在一个本地项目中,此不会出现【Create...】按钮
3、在github或[email protected]等代码托管网站新建一个 repository 库
- 右键 team > commit,输入注释,然后勾选你需要提交的文件,Commit,提交到本地仓库。
- 右键 team > remote > push,输入github或[email protected]上的Url,填上自己账号密码(非必须),next,在弹出窗口中点击如下小三角,选择 master,然后点击 Add spec,然后点击 finish
若报 non-fast-forward 错误,原因在于:git仓库中已经有一部分代码(初始时一般会有三个文件),所以它不允许你直接把你的代码覆盖上去。简单解决方案就是新建一个不带任何文件的库。
4、完成后,登陆github,就可以看见刚提交上去的项目 了。
在本地创建 Git 仓库
你可以将本地一个目录当做仓库(repository),然后把另一个目录当做工作区。
1、创建repository
进入到你要当仓库的磁盘目录下,点鼠标右键,选择【Git Create repository here】创建仓库。把【Make it Bare】勾上就表示这是一个单纯的仓库(repository),写代码的工作区放在另一个地方。完成后会在目录下面出现很多稀奇古怪的文件和目录,不要在意,那都是git需要的东西。
2、创建工作区
进入到你要做工作区的那个磁盘的目录下,然后右键选择【Git Clone】,【URL】选择上面我们创建的库的目录,【Directory】选择我们的工作区,也就是你要放代码的目录,其他的不用管。成功之后会在此目录下生成一个隐藏的.git目录。
PS:
- 库中所有相关内容都会映射在【.git目录】中,以后不管项目中添加多少个文件夹,整个库只会有这一个管理文件夹,这和SVN 会在每个子目录中都生成一个此类型的目录的方式相完全不同。
- 【Git Clone】会在建立工作区的同时将指定仓库下的所有内容复制一份,而【Git Init Here】命令,或【Git Create repository here】命令但不勾选【Make it Bare】只会建立工作区(只生成.git文件夹)。
3、向工作区中执行add、commit、push操作
add就是把这个文件加入到TortoiseGit的关注列表之中,在目录的空白处点击右键选择TortoiseGit,也可以批量add文件。
add后必须commit才算是提交到了本地git服务器,commit的文件是保存在本地自己单独的工作区目录中的
commit后必须push才算是提交到了远程git服务器(仓库),push的文件是保存在所有用户共享的repository仓库中的
一般情况,repository不可能是本地的某个目录,也很少是用公网的git仓库,而是公司自己的服务器或公司局域网中的某个目录。
在 Github 或 osChina 创建 Git 仓库
基本步骤
- 创建新项目。在这里创建repository和我们右键create repository效果是一样的,只不过之前我们是在本机上创建,而这里是在服务器上而已。
- 在工作区目录上右键 --> git clone,url填写 Github 或 osChina 提供给你的url,这个操作和在本地操作完全一样。完成后,仓库里的所有文件,包括隐藏的.git文件夹都克隆到了本地。
- 在此目录中创建项目,或将本地现有项目整个复制到此目录内,然后Add、Commit、Push。可以直接将根目录Add进去,工具会自动将bin目录、gen目录等不需要的文件忽略。
- Push成功后,去 Github 或 osChina 上查看,你的文件已经在服务器仓库中了,且不包含忽略目录与文件。
Git 的分支管理策略
相比同类软件,Git有很多优点,其中很显著的一点,就是版本的【分支和合并】十分方便。一些传统的版本管理软件,其分支操作实际上是生成一份现有代码的物理拷贝,而Git是只生成一个指向当前版本(又称"快照")的指针,因为少了大量文件的拷贝操作,所以分支合并是速度非常快。但是,这也产生了一定副作用。如果你不加注意,很可能会留下一个枝节蔓生、四处开放的版本库,到处都是分支,完全看不出主干发展的脉络。
按如下分支管理的策略,可以使得版本库的演进保持简洁,主干清晰,各个分支各司其职、井井有条。
一个主分支master
代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。
Git主分支的名字,默认叫做master,它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。
不同的开发分支develop
主分支只用来发布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做develop。这个分支可以用来生成代码的最新隔夜版本(nightly)。
如果想正式对外发布,就在master分支上,对develop分支进行合并。
创建、切换、修改、合并分支
branch [br?nt?] n. 分支; 树枝; 部门,分科; 支流; vi. 分支形成; 分支扩张; [计] 下分支的指令; vt. 使分支; 使分叉;
merge [m?:rd?] vt.融入; (使)混合; 相融; 渐渐消失在某物中;
x
1
branch [br?nt?] n. 分支; 树枝; 部门,分科; 支流; vi. 分支形成; 分支扩张; [计] 下分支的指令; vt. 使分支; 使分叉;
2
merge [m?:rd?] vt.融入; (使)混合; 相融; 渐渐消失在某物中;
git的主体思路就是不断的建立分支,可靠以后再合并到主分支里面,从而使得整个版本不断更新。
当然相关的功能必不可少,比如版本回溯,就是发现当前版本不够好,返回到之前的某个版本重新来过等等,但是只要明白了主线,就可以明白为什么有那些相关功能了。
git本身就是为使用而开发的,所具有的功能都是现实使用中碰到的最常见的问题。如果你在使用过程中,发现一个情况不知道如何处理,你只要想一下这个情况别人是否会遇到,如果是的话,那这个软件应该有相关的功能或者功能组合来帮你处理问题。
1、创建版本分支
在根目录上右键【Create Branch】,在弹出对话框中为此分支版本起名,然后ok即可创建一个分支。
2、切换版本分支
在根目录上右键【Switch/Checkout,切换/检出】,通过【Switch To】下面的选项选择要切换到的分支,然后ok即可。
3、修改版本分支
更改后提交时会发现菜单变了,提交的目的地变成了刚才我们切换到的分支
提交后,右键【Show log】,里面就出现了两条版本路线。push到服务器后,服务器也可以查看分支了。
4、合并版本分支【在A分支合并B分支,可把B分支中更新的内容拉到A分支】
比如,现在想把A分支合并到主版本 master 中,现在就要做如下操作:
- 先切换到主版本分支:右键【Switch/Checkout,切换/检出】,弹出的对话框中选择 master,点击OK
- 再和并A分支:切换后,在结果页中或右键点击【Merge,合并】,在弹出的对话框中【From】里选择A分支,填写日志,点击OK
- 最后 push 到服务器。完成后,A分支中更新的内容就同步到了主版本 master 分支中了。
让 Git 记住设置的用户名和密码
TortoiseGit在提交时总是会提示你输入用户名密码,非常麻烦,解决方案如下:
- Windows中添加一个变量名为【HOME】值为【%USERPROFILE%】的用户变量
- 在开始 --> 运行中打开【%Home%】,新建一个名为【_netrc】的文件
- 用记事本打开此文件,输入Git服务器名、用户名、密码,并保存,格式如下:
#【192.168.20.9】【baiqiantao】【http://192.168.20.9/】
#【git.oschina.net】【baiqiantao】【http://git.oschina.net/baiqiantao】
#【code.csdn.net】【baiqiantao】【https://code.csdn.net/baiqiantao】
#【github.com】【baiqiantao】【https://github.com/baiqiantao】
machine github.com #git服务器名称
login baiqiantao #git帐号
password ******** #git密码
1
#【192.168.20.9】【baiqiantao】【http://192.168.20.9/】
2
#【git.oschina.net】【baiqiantao】【http://git.oschina.net/baiqiantao】
3
#【code.csdn.net】【baiqiantao】【https://code.csdn.net/baiqiantao】
4
#【github.com】【baiqiantao】【https://github.com/baiqiantao】
5
machine github.com #git服务器名称
6
login baiqiantao #git帐号
7
password ******** #git密码
以后在git上提交时就不用输入用户名密码了!
以上是针对全局设置的,针对某个具体项目进行配置的话,还可以按照如下方式。
修改项目根目录下隐藏的【.git】目录下的【config】文件,修改前的部分内容为:
[remote "origin"]
url = https://github.com/baiqiantao/KotlinTest.git
2
1
[remote "origin"]
2
url = https://github.com/baiqiantao/KotlinTest.git
我们将url修改为如下样式:
url = https://用户名:密码@github.com/baiqiantao/KotlinTest.git
1
1
url = https://用户名:密码@github.com/baiqiantao/KotlinTest.git
也即在【https://】之后插入了如下内容:
用户名:密码@
1
1
用户名:密码@
除了url其他完全一样,这样就能针对当前项目记录用户名和密码了。
关于Git三个级别的配置文件
Git有一个工具被称为git config,它允许你获得和设置配置变量,这些变量可以控制Git的外观和操作的各个方面。
这些变量可以被存储在三个不同的位置:
- 1、位于Git安装目录下的【gitconfig】文件,如【C:\Program Files\Git\mingw64\etc\gitconfig】,包含了适用于系统所有用户和所有库的值。如果你传递参数选项【--system】给 git config,它将明确的读和写这个文件。
- 2、位于用户目录下的【.gitconfig】文件 ,如【C:\Users\Administrator\.gitconfig】,包含了具体到某个用户(指的是Windows系统用户)配置的值。如果你传递参数选项【--global】给 git config,它将明确的读和写这个文件。
- 3、位于某个由Git控制的项目下隐藏的【.git】目录下的【config】文件,包含了具体到某个项目的配置。
当键冲突时,下一个级别配置的值会覆盖上一个级别配置的值;如果下一个级别没有为此键配置值,则使用上一个级别配置的值。
1、检查系统配置
git config --list --system
1
1
git config --list --system
2、检查用户配置
3、检查当前库的配置
git config --list
1
1
git config --list
4、检查当前库某个具体键所配置的值
git config user.name
git config user.email
2
1
git config user.name
2
git config user.email
5、在某种级别下为某个具体键配置具体的值
git config --global user.name "baiqiantao"
git config --global user.email [email protected]
2
2
1
git config --global user.name "baiqiantao"
2
git config --global user.email [email protected]
2017-11-6