git使用入门
来源:互联网 发布:足疗店软件 编辑:程序博客网 时间:2024/06/06 04:25
Git使用说明
Git简介
Git是分布式版本控制系统,首先,分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。实际开发中,分布式版本控制系统通常也有一台充当“中央服务器”的电脑,但这个服务器的作用仅仅是用来方便“交换”大家的修改,没有它大家也一样干活,只是交换修改不方便而已。
Git安装
1.去官网下载最新的下载包,安装完成后,开始菜单里找到“Git”->“Git Bash”(或者右键git bash here),
2.在命令行中输入:
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
目的主要是记录你的机器的姓名、邮箱,方便大家了解是谁。
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
git版本库
一.创建版本库:
首先在选定某个盘符(上图:F),创建一个空目录,右键git bash here,输入下列命令:
$ mkdir repository
$ cd repository
$ pwd
/f/repository/repository
Pwd命令的作用是显示当前目录的路径,windows系统下,目录不要用中文。
其次输入命令:
$ git init
Git就把仓库建好了,而且告诉你是一个空的仓库,这个仓库中会有个.git目录,这样目录是git跟踪管理版本库的,所以不要随意动。
Git并没有严格的权限管理控制,svn则有严格的权限管理,可以按组、按个人进行针对某个子目录的权限控制
二.添加文件到版本库:
在空的版本库下创建一个txt文件(不要用记事本,统一编码),添加两行文字,并保存:
第一步,用命令gitadd告诉Git,把文件添加到仓库:
$ git add readme.txt
第二步,用命令gitcommit告诉Git,把文件提交到仓库:
$ git commit -m "wrote a readme file"
三.修改文件并提交到版本库
修改readme.txt文件,保存前运行git status命令(获取当前文件的状态):
修改后保存,运行命令gitdiff,可以查看具体修改的内容:
使用add,commit命令添加提交修改后的文件到仓库:
四.文件版本的退回
命令git log(git log –pretty=oneline),可以查看当下文件提交的各个版本信息:(注:此命令只能看到当前状态及之前的版本号)
Git使用128位ID作为版本号,而svn使用一个递增的序列号作为全局唯一的版本号。
命令:git reset --hard7009(版本号的前若干位),
git reset –hard HEAD(HEAD^/HEAD^^/HEAD~100),这个命令的作用是将当前的文件的版本退回到某个版本状态下。HEAD代表当前版本,^代表前一个版本,~100代表前一百个版本。
命令git reflog可以查看版本回退操作历史,版本信息:
五.工作区&暂存区
工作区就是在电脑里能看到的目录(隐藏的目录不是),例:我们刚开始创建的repository。
创建版本库后,git的版本库中会有一个暂存区stage,和一个版本指针HEAD,一个版本库自动创建的分支master。其中指针指向分支master。
Svn中没有暂存区,提交代码直接提交到分支上,即版本库中的另外的一个目录。
第一步是用git add把文件添加进去,实际上就是把文件(新增/修改)添加到暂存区;
第二步是用gitcommit提交更改,实际上就是把暂存区的所有内容提交到当前分支。
说明:无论对工作区的文件内容进行了多少次修改,如果没有add到暂存区,那么commit的时候是不会把工作区修改的内容提交到分支上的。
命令:catreadme.txt作用是查看工作区中readme.txt文件的内容。
命令:git diffHEAD -- readme.txt的作用是查看工作区和版本库里面最新版本的区别。
六.撤销修改:
场景1:丢弃工作区的修改时,用命令git checkout -- file
场景2:丢弃暂存区的修改时,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交修改到版本库时,想要撤销本次提交,可以进行版本的回退,不过前提是没有推送到远程库。
Svn的撤销修改比较简单,直接同步资源库即可。
七.删除文件
通过命令: git rm删除,git commit更改。可以把版本库中的文件删除。
如果只是误删工作区的内容,则可以使用git
checkout命令获取最新的版本库内容。
远程仓库
关联远程仓库:$ gitremote add
本地库的内容推送到远程库:$git push 远程库名分支名(首次$ git push-u origin master)
克隆远程仓库:$ git clone
要克隆一个仓库,首先必须知道仓库的地址,然后使用git clone命令克隆
GIT跟SVN一样有自己的集中式版本库或服务器。但,GIT更倾向于被使用于分布式模式,也就是每个开发人员从中心版本库/服务器上chect out代码后会在自己的机器上克隆一个自己的版本库,.git目录是处于机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签,分支,版本记录等。
分支合并
与svn的分支不同,git的分支是在同一目录下可以建立多个分支,不同分支之间可以进行互相合并,这样的好处就不容易有遗漏的未合并的分支。Svn的分支是单独存在一个目录下面的,这样不仅合并缓慢,而且容易出现遗漏。因为svn合并的时候想通过不同目录文件的对比,而git是通过HEAD指向不同的分支,以指向的分支为基础来进行合并,无主次之分。
Git的提交是以时间为基准串联成一条线的。可以在此线上建立多条分支。Master分支为默认主分支。当前的HEAD通过指向不同的分支使工作区提交到建立分支进行开发,代码开发提交后,合并到主分支上,之后删除分支。如图:
冲突解决
当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。
分支管理策略
使用fast forward模式合并分支的时候会删除分支的信息,为了避免这种情况,强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。Svn进行合并的时候,会详细记录合并的历史信息。从这个方面来看svn要比git更简单明了,容易追溯历史修改版本。
BUG处理
Svn中处理bug直接在目录文件中修改,然后提交到分支中,不会影响现有功能的开发。git中处理bug的方式不一样,如果当前正在开发,那么在此分支上修改bug 会影响现有功能的开发,合并的时候会把现有的分支上的代码一起合并。所以需要通过stash功能把现有的分支隐藏起来,然后新建分支修改bug,修改完成后再切换到开发分支进行开发。
多人协作
首先,可以试图用gitpush origin branch-name推送自己的修改;
如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
如果合并有冲突,则解决冲突,并在本地提交;
没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“notracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令git branch --set-upstream branch-name origin/branch-name。
Git标签
Svn的版本标签是任何对应时间的源码的快照,Svn可以有全局的版本号。
Git的标签虽然是版本库的快照,但其实它就是指向某个commit的指针,是对某个分支的状态打的标签。
应用案例
一.搭建服务器
将下载的Linux版本的git上传到服务器,安装命令:
CentOS:yum install git
Ubuntu: sudo apt-get install git
安装后创建新的用户,并且切换到当前用户,命令:
sudo adduser fcxgit
su fcxgit
然后创建秘钥:
命令:ssh-keygen–t rsa –P ‘’
将秘钥添加到authorized_keys中:
命令:catid_rsa.pub>>authorized_keys
~/.ssh/authorized_keys设置权限600:
命令:chmod 600authorized_keys
~/.ssh 设置权限 700:
命令: chmod 600authorized_keys
至此服务器搭建完成。
创建仓库,远程链接,克隆仓库
命令:mkdir github
cd github
mkdir learngit
cd learngit
git --bare init
至此仓库建好了,远程链接为:
ssh://fgit@218.244.131.231:18016/home/fgit/github/learngit
用户无密码ssh访问仓库的话,需要将公钥添加到authorized_keys
用户获取公钥:
Git命令:ssh-keygen-t rsa -C “用户邮箱”
按3个回车,密码为空。
然后将公钥(id_rsa.pub中的内容)复制到服务器的thorized_keys
命令:vi thorized_keys
}
i
粘贴
Esc
:wq
保存完成后,与服务器进行通信的时候就不会有密码限制了。
克隆服务器仓库:
git clone ssh://fgit@218.244.131.231:18016/home/fgit/github/learngit
连接远程仓库:
git remote add origin ssh://fgit@218.244.131.231:18016/home/fgit/github/learngit
git基本使用:
创建文档,编辑提交,到远程服务器:
命令:
cd learngit
git add demo1.txt
git commit –m “add demo1.txt”
git fetch origin master:tmp
git diff tmp
git merge tmp
git push origin master
分支和文件的添加一样,分支的删除命令:
git push origin :dev
更新代码到本地:
首先将本地修改的所有代码都提交到本地的对应分支上,然后更新远程仓库的代码,二者合并,解决冲突。
命令:
git add demo1.txt
git commit –m “dd”
git fetch origin master:tmp
git diff tmp
git merge tmp
git add demo1.txt
git commit –m “解决冲突”
git branch –d tmp
本地修改代码后,提交到远程仓库:
命令:
git add demo1.txt
git commit –m “g demo1.txt”
git fetch origin master:tmp
git diff tmp
git merge tmp
git push origin master
git branch –d tmp
bug处理:
目前正在开发的分支中有添加到暂存区的文件,但是没有提交到分支上:
命令:
git stash:隐藏分支
git checkout master:切换需要修改bug的分支
git checkout –b bug_01:创建bug分支
git add demo1.txt:修改完成后天bug到暂存区
git commit –m “bug demo1.txt”:提交bug到bug_01分支
git checkout master:切换到存在bug的分支
git merge –no-ff –m “g bug demo1.txt” bug_o1:合并bug分支
git branch –d bug_o1:删除bug分支
git fetch origin master:tmp:更新远程代码到本地
git diff tmp:对比本地代码和远程代码的区别
git merge tmp:合并远程代码到本地代码
git push origin master:提交本地代码
git branch –d tmp:删除tmp分支
git checkout dev:bug修改完毕,返回到正在开发的分支dev
线上版本回退:
git reset –hard 版本号
重启服务
线上分支添加,删除
- git 入门使用
- Git使用入门
- git@oschina使用入门
- Git 简单入门使用
- Git使用入门
- git使用入门
- git使用入门
- git使用入门
- GIT使用入门
- git的使用入门
- Git使用入门之一
- git使用_入门
- git使用入门
- Git入门---一般使用
- Git使用入门
- git使用入门篇
- git使用入门
- git使用入门
- FrameLayout和布局优化
- JMeter中对于Json数据的处理方法
- JDBC连接MySQL数据库
- 抽象类和接口
- 第4章 人脉沟通,赢得贵人的支持
- git使用入门
- Tomcat servlet.xml配置问建详解
- 项目开发中值得推荐的C/C++框架和库总结
- elasticserch ik配置
- LA 3644(p191)----X-Plosives
- linux下后台执行程序命令nohub
- 【高性能】Matlab的并行计算之spmd
- Android中SharedPreferences的使用
- 解决SharePoint 的Excel文件, 使用本地打开Excel 2013“无法访问文件。请尝试下列方法之一”