git

 

----------------------------------------------安装git不简述了,直接yum -y install git

 教程:http://www.runoob.com/git/git-branch.html

Git可以直接部署在一台服务器上,可以先创建一个git仓库,然后创建项目git,若是在公司使用git版本库,可使用gitlab,gitlab可以提供web的管理界面。

1.    初始化Git仓库:git init --bare aa.git

2.    将一个文件添加到git仓库:(两步)

第一步:git add file1 file2   可反复多次使用,添加多个文件;(添加文件时需在git目录下)

第二步:git commit  (可以添加参数-m,后面输入的是本次提交的说明)

如:git commit -m "write a new file"

3.    配置自己的用户信息

gitconfig --global user.name "runoob"

git config --global user.email test@runoob.com

设定文本编辑器

git config –global core.editor emacs (git默认一般是vi 或者vim,这里是设置为emacs)

4.    git版本修改的历史记录:git log

会显示由最近到最远的提交日志,如果嫌输出信息太多,可加上git log--pretty=oneline参数。

如:[root@bogon banbenku]# gitlog --pretty=oneline

0b30e57430973c37a16dab4d79449916c341353bxiugaihou

7d51d87cf8cec6334bc4068fd6d5e281c6fcc656write a readme file

提示:你看到的一大串类似0b30e574....7d51d87c....的是commit id(版本号),和SVN不一样,Git的commit id不是1,2,3……递增的数字,而是一个SHA1计算出来的一个非常大的数字,用十六进制表示.

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交0b30e574....7d51d87c(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

5.    回退上一个版本:git reset --hard HEAD^

6.    在把新版本回退到旧版本的之后,若想再次到新版本方法,只要上面shell的命令行窗口没关掉,就可以往上翻,找个新版本的那个版本名或者commit id,

执行:git reset --hardcommit id

若机器已经关机重启之后,可执行gitreflog查看git以前执行的记录,

然后在git reset --hard commit id回到想要的版本。

若用代码库中的文件完全覆盖本地工作版本:gitreset --hard   git pull 

二、git的工作区与暂存区概念

工作区有一个隐藏目录.git。这个不算是工作区,还是git的版本库。

Git版本库里面存了很多东西,最重要的就是称为stage的暂存区,还有Git为我们创建的第一个分支master,以及指向master的一个指针叫HEAD。

(上图的注释:在工作区编写一个文件,通过git add filename之后即把所修改的文件暂放在stage区,再通过git commit 就可以一次性把暂存区所以修改提交到分区。)

7.    git status -s 查看版本库当前状态。

8.     git diff HEAD -- filename   可查看工作区和版本库里面最新版本的区别。

9.     git checkout -- filename   如果在文件在修改了内容而没有提交到暂存区时,可以使git撤销掉在工作区所修改的内容。

10.  如果在文件中添加了新的内容,已经使用git add filename从工作区提交到暂存区,可以使用git reset HEAD filename进行撤销暂存区的修改,重新返回工作区。

11.  对于已提交版本库(git commit)文件的删除,若确实需要从版本库删除该文件,则gitrm filename,然后git commit进行提交。若删错误了文件,但是版本库里面还有,则使用git checkout -- filename 把误删文件恢复到最新版本。

三、远程仓库

添加远程库

要关联一个远程库,令git remote add origin git@server-name:path/repo-name.git

关联后,使用命令git push –u origin master

12.  从远程库克隆:git clone git@github.com:michaelliao/gitskills.git

四、分支的管理

13.  创建和合并分支在版本回退里面知道每次提交,git都把他们串成一条时间线,这条时间线就是一个分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交,所以HEAD指向的就是当前分支

14.  当我们创建新的分支,例如dev时,git就新建了一个指针叫dev,指向master相同的提交,再把HEAD指向dev,就表示当前在dev分支上

15.  git checkout –b dev(分区名字)    创建分支dev   (-b参数表示创建并切换)

此命令等于git branch dev(创建) git checkout dev (切换)

16.  git branch     列出当前所有分支,分支前面加*的代表当前分支。

17.  git merge dev   合并dev分支到当前分支

18.  git branch –d dev   删除分支

注释:在git里面可以创建多个分支,然后同时对应一个项目的多个人员,分别提交在在自己的分支里面,然后等全部提交完毕之后,在合并到master上。

19.  再通过更新版本的时候,git pull的时候,报错说文件冲突,还有一种解决办法,就是用代码库中的文件完全覆盖线上的文件

git reset –hard

git pull

2) 当都往远程的一个分支上推送东西时,会发生冲突,一种办法:git pull把最新的提交从origin/dev抓下来,在本地合并解决冲突在推送;

第二种办法:git pull 也失败的时候,提示:”no tracking information”原因是没有指定本地dev与远程origin/dev分支的链接,设置本地dev与远程origin/dev的链接:

git branch –set-upstream devorigin/dev  然后在git pull

20.  分支管理策略通常在进行分支合并时,git会用fast forward模式,但是在这种模式下,删除分支后就会丢到分支上的信息。

如果强制禁用fast forward模式,git就会在merge时生成一个commit,从历史上就可以看出分支信息。

21.  强制禁用fast foreard模式参数:--no-ff

git merge –no-ff –m “create commit”分支名

22.  分支策略:在实际的开发中,一般按照以下几个原则:

1)  master分支是非常稳定的,也就仅用来发布新版本,平时不在上面干活;

2)  一般干活都在dev的其他分支上,也就是说,dev分支不稳定,到要发布现版本的时候,就把dev分支合并到master上,在master上进行发布

3)  所以团队人员都在dev分支上干活,每个人都有自己的分支,时不时往dev分支上合并就可以了。

23.   Bug分支:当接到要修复一个bug101时,很自然想创建一个bu101分支来修复他,但是当前正在dev分支上的工作还没有提交,这个时候可以使用stash功能,把当dev前分支隐藏。

1)  首先确定在哪个分支(master)上修复bug,然后切换到那个分支(master),在创建切换到新的分支(bu101),然后进行修改,然后提交到分区(bu101),在切换分区(master),然后再合并分区(bu101),删除bu101分区。

24.  可使用git stashlist查看stash缓存区隐藏内容

25.   当使用stash把当前分区隐藏后可使用git stashapply恢复,但是恢复后,stash内容不会删除,需要gitstash drop删除。

还有种方法是使用git stashpop,恢复的同时把stash内容也删了

26.  在开发新功能时新建一个分支(new),在还没有合并时,要删除新建的分区,可使用强行删除:

git branch –D new

27.  多人协作:当你从远程仓库克隆时,实际上git自动把本地的master分支和远程的master分区对应起来了,并且远程仓库默认名为origin

28.   查看远程仓库信息:git remote,详细信息:git remote -v

29.  推送分支项目就是把该分支的所有本地推送给远程库。推送时要指定本地库。

git push origin master(本地的分支)

在进行远程推送的时候要先设置全局用户:

git config --global user.name "name"

git config --global user.email “test@jvtd.cn” (若不设置全局用户取消global即可)

 30.  抓送分支就是从远端克隆到本地。从远程克隆时,默认只能看到本地的master分支,若要在其他分支开发(dev),就需要创建远程origin的dev分支到本地,以下命令创建:

git checkout –b dev origin/dev

现在就可以在dev上进行修改,然后把dev分支push到远程。

31.  如果想要创建自己的git库,可以在www.github.com上进行注册。

32.  当执行过git add之后,用git status -s 查看时,文件的状态会变成这样

    A cc/qq.txt

对一个文件执行git commit之后但是还没有进行git push时,然后在文件里面添加有新的内容,执行git status -s 查看时,文件的状态会变成这样

    M qq.txt

 

 

 

-------------------------------------------------------------------------------

 

1.     用git拉取远端代码:git clone 地址

2.     用git进行提交文件到服务器:git add filename ; git commit–m “说明”

3.     用git把文件推送到远端服务器上:git push

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值