https://git-scm.com
http://www.runoob.com/manual/git-guide/
Git分布式版本控制系统。
SVN集中式和Git分布式版本控制系统有什么区别呢?
集中式:
1、必须联网,且带宽够大,速度够快;
2、依赖控制系统的中央服务器,如果中央服务器出了问题,则没法干活;
分布式:
1、没有中央服务器的概念,每台电脑都是一个完整的版本库,互相不依赖;
2、提交时才需要联网处理修改的文件;
Git工作原理
Git管理的是修改(如新增文件、新增字符、删除文件、删除字符、修改字符等),而不是文件。
1、概念
工作区:个人电脑里的文件夹目录。
版本库:工作区的隐藏目录.git。
暂存区:版本库里的stage,或index。
分支:版本库里自动创建的唯一一个master分支。branch。
HEAD:
2、操作命令执行
步骤1 添加文件 git add (git add . 或git add 文件名称),即把工作区的文件添加到版本库中的暂存区;
步骤2 提交文件 git commit (git commit -m "说明"),即把版本库中暂存区的所有内容提交到当前分支;
步骤3 删除文件 git rm (git rm 文件名称),即把版本库当前分支的文件删除;
步骤4 提交到远程仓库 git push(git push origin master)
Git的安装
1、在Linux上安装Git:sudo apt-get install git
2、Mac OS X上安装Git:
方法1
安装homebrew,然后通过homebrew安装Git,具体方法请参考homebrew的文档:http://brew.sh/。
// 安装
brew install git
// 检测git是否安装成功:
git --version
// 显示当前git的路径
which git
方法2
安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了。
Git的配置
1、指定用户名:git config --global user.name "Your Name"。如:
git config --global user.name "devZhang"
2、指定邮件地址:git config --global user.email "email@example.com"。如:
git config --global user.email "xxxx@163.com"
如何取消设置?
Git的使用仓库,也叫版本库repository,即文件管理(修改、删除)的目录1、创建目录步骤1、创建存放文件的目录:mkdir 目录名。
mkdir learnGit
步骤2、进入目录:cd 目录名。如:
cd learnGit
步骤3、查看目录路径:pwd。如:
pwd
2、将目录变成git可以管理的仓库
步骤1、git init。如:
git init
创建成功后,目录下会多一个Git用来跟踪管理版本库的 .git 的目录。注意:空目录,或已经有资料的目录都可以创建Git仓库。
3、把文件添加到版本库
注意:Git版本库只能管理以纯文本(txt文件、网页、程序代码等)编写的文件,而图片文件,或音视频文件则只知道如从100KB变成120KB的改变,而不像知道文本文件第几行新增,或修改,或删除了某个单词这么详细。
步骤1、把文件添加到仓库:git add 文件名。如:
git add learnGit.txt
// .表示所有修改,或添加的文件
git add .
步骤2、把文件提交到仓库:git commit -m 备注。如:
git commit -m “添加文件learnGit.txt”
步骤3、把文件提交到服务器:git push。如:
git push origin master
4、查看仓库状态
步骤1、仓库当前的状态:git status步骤2、仓库文件修改内容:git diff,或git diff 文件名。如:
git diff
// 或
git diff learnGit.txt
5、查看仓库记录
显示从最近到最远的提交日志。
步骤1、历史记录:git log。如:
git log
或单行历史记录:git log --pretty=oneline。
git log --pretty=oneline
6、查看命令历史
显示每一次命令的记录。
步骤1、命令历史:git reflog。如:
git reflog
7、版本回退
版本回退,上个版本head,上上个版本head^,……,100个版本head~100。
步骤1 回退版本:git reset —-hard HEAD版本,或git reset —-hard 版本号。如:
// 上个版本
git reset —-hard HEAD^
// 上上个版本
git reset —-hard HEAD^^
// 或指定版本号
git reset —-hard 655645645。
8、修改撤销
情况1、文件修改后但没有add到暂存区时,即在工作区中修改的可以撤销;
情况2、文件add到暂存区后做了修改时,即在暂存区中修改的可以撤销;
步骤1、撤销修改内容:git checkout —- 文件名称。如:
git checkout —- learnGit.txt
9、暂存区的修改回退到工作区
步骤1、git reset HEAD 文件名称。如:
git reset HEAD learnGit.txt
10、删除文件
先将文件从目录文件夹中删除,再从版本库中删除
步骤1、删除文件:git rm 文件名称。如:
git rm test.txt
步骤2、提交删除文件:git commit -m 备注。如:
git commit -m “remove file:test.txt”
11、设置版本号
(1)添加本地版本号
git tag x.x.x -m "版本号说明"
或添加标签(记录某人某时打的标签)
git tag -a vx.x.x -m "版本号说明"
(2)提交到远程仓库:
git push origin master --tags
(3)查看所有版本号:
git tag
(4)删除本地版本号
// 格式:git tag -d x.x.x,示例
git tag -d 1.0.2
// 提交到远程仓库,即把与之对应的远程仓库的版本号也删除
// 格式(注意冒号前有个空格):git push origin :x.x.x,示例:
git push origin :1.0.2
12、其他
(1)查看修改详情
git show
// 或
git log -p
(2)查看某个文件的包含提交人员,日期、版本号等记录信息,不包括修改详情
git whatchanged
13、git分支
(1)查看分支信息
// 本地分支
git branch
// 远程分支
git branch -a
(2)创建分支
git branch branchName
// 示例
git branch IMTeam
(3)切换分支
git checkout branchName
// 示例
git checkout IMTeam
(4)合并分支:git merge 合并时,先切换回主干
// 切换回主分支
git checkout master
// 合并分支到主干
git merge IMTeam
(5)创建并切换分支
git checkout -b branchName
// 示例
git checkout -b IMTeam
(6)删除本地分支
git branch -d branchName
// 示例
git branch -d IMTeam
(7)删除远程分支
git branch -r -d origin/分支名称
git push origin :分支名称
(8)本地工作区的分支提交到远程仓库
git push origin 分支名称
注意:
(1)通常远程仓库分支不会一起下载下来,如果要进行分支开发,可以这样设置 git checkout -b 分支名 origin/分支名。另外再次说明,分支可以是本地分支,也可以是远程仓库分支,本地分支要提交到远程仓库时,可以使用语句 git push origin 分支名称。
(2)使用地址下载源码后,进行切换分支则当前操作的源码只会对分支源码有影响,即下载的源码目录也会跟着分支改变。合并分支时,先将分支的修改提交到缓存区(git add . ; git commit -m “xxx”),然后切换回主干(git checkout master),接着进行合并(git merge IMTeam),最后再次将主干的修改进行提交(git add . ; git commit -m “xxx”)。
具体步骤如下:
a)查看分支:git branch
b)查看状态:git status
c)提交:git add . ; git commit -m “说明”
d)先切换回主分支:git checkout master
e)查看状态:git status——无变化
f)合并分支:git merge IMTeam
g)查看状态:git status——有变化
h)提交:git add . ; git commit -m “说明”
i)提交:git push
14、查看远程仓库信息
git remote
显示更详细的远程仓库信息
git remote -v
15、本地仓库与远程仓库的关联
- 存在远程仓库DemoTest,但没有在终端通过命令 git clone 远程仓库地址"克隆到本地
- 在本地创建与远程仓库同名称的目录DemoTest
- 通过终端命令 cd .... 进入本地目录路径DemoTest
- 通过终端命令 git init 将本地目录DemoTest初始化成一个代码仓库
- 本地代码仓库关联远程仓库,在终端使用命令 git remote add 远程仓库地址"
- 查看 git remote
- 将远程仓库代码克隆到本地代码仓库 git pull origin master
注意事项:
1、远程仓库源码下载到电脑A,电脑B;
2、电脑A中进行修改,但没有提交到远程仓库;
3、电脑B中进行修改,且提交到了远程仓库;
4、再次对电脑A进行操作时,需要将远程仓库中的最新源码下载到电脑A中;
5、查看电脑A中是否有变更操作(git status),有变更时,需要把在工作区中的变更提交到缓存区(git add . git commit -m "说明");
6、提交到缓冲区后,再将远程仓库的最新源码下载到本地缓冲区(git pull);
7、查看源码是否存在冲突,有冲突时解决冲突,并重新提交到缓存区(git add . git commit -m "说明");
8、解决冲突后,或没有冲突时,再将电脑A中的源码提交到远程仓库(git push origin master);