git试题

git操做详见:http://www.cnblogs.com/fanlinqiang/p/7741220.htmlhtml

场景:你是第一天来公司上班的,项目代码托管在 GitLab,项目地址:git@lab.com:org/project.git,如今有一处代码须要你修改。请完成此项任务中,与 git/gitlab相关的操做步骤。

第一步:$> ssh一keygen 一t rss 一C zhangsan@abc.com

第二步:拷贝公钥到gitlab

第三步:

$> git config —global user.name zhangsan

$> git config —global user.email zhangsan@abc.com

第四步:$> git clone git@lab.com:org/project.git

第五步:$> git checkout 一b project一20170227一zhangsan一bugfix

第六步:修改代码

第七步:git status

第八步:git add .

第九步:git commit 一am ‘bugfix’

第十步:git push 一一set一upstream origin project一20170227一zhangsan一bugfix

git经常使用命令

 Index/Stage:暂存区java

Workspace:工做区git

Repository:仓库区(或本地仓库)算法

 Remote:远程仓库服务器

 git  init; (# 在当前目录新建一个Git代码库)网络

 git  add (添加当前目录的全部文件到暂存区)ssh

 git  rm –cached [file] (# 中止追踪指定文件,但该文件会保留在工做区)分布式

 git  commit  [file1] [file2]  -m  [message] (# 提交暂存区的指定文件到仓库区 )svn

 git   branch  -a (列出全部本地分支和远程分支)gitlab

 git  checkout  [branch-name] (# 切换到指定分支,并更新工做区)

git  status( # 显示有变动的文件)

git  push  [remote] -tags (# 提交全部tag)

详细参见:http://www.cnblogs.com/fanlinqiang/p/7741220.html

git与svn的区别

git是分布式的,svn不是。

git跟svn同样有本身的集中式版本库或服务器。但git更倾向于被使用于分布式模式,克隆版本库后即便没有网络也可以commit文件,查看历史版本记录,建立项目分支等,等网络再次链接上Push到服务器端。

git把内容按元数据方式存储,而svn是按文件。

全部的资源控制系统都是把文件的元信息隐藏在一个相似.svn,.cvs等的文件夹里。

git目录是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上全部的东西,例如标签,分支,版本记录等。

git没有一个全局的版本号,svn有。

git的内容完整性优于svn。由于git的内容存储使用的是SHA-1哈希算法。

git能够有无限个版本库,svn只能有一个指定中央版本库。

当svn中央版本库有问题时,全部工做成员都一块儿瘫痪直到版本库维修完毕或者新的版本库设立完成。

每个git都是一个版本库,区别是它们是否拥有活跃目录(Git Working Tree)。若是主要版本库(例如:置於GitHub的版本库)有问题,工做成员仍然能够在本身的本地版本库(local repository)提交,等待主要版本库恢复便可。工做成员也能够提交到其余的版本库!

若是线上出现bug git怎么操做?

方法1:在当前主分支修改bug,暂存当前的改动的代码,目的是让工做空间和远程代码一致:

Git stash

修改完bug后提交修改:

git add .

git commit 一m "fix bug 1"

git push

从暂存区把以前的修改恢复,这样就和以前改动同样了

git stash pop

这时可能会出现冲突,由于你以前修改的文件,可能和bug是同一个文件,若是有冲突会提示:

Auto一merging xxx.Java

CONFLICT (content): Merge conflict in xxx.java

前往xxx.java解决冲突

注意stash pop意思是从暂存区恢复到工做空间,同时删除此条暂存记录。

 

 方式2:拉一个新分支,老司机都推荐这样作,充分利用了git特性,先暂存一下工做空间改动:

git stash

新建一个分支,而且换到这个新分支

git branch fix_bug //新建分支

git checkout fix_bug //切换分支

这时候就能够安心的在这个fix_bug分支改bug了,改完以后:

git add .

git commit 一m "fix a bug"

切换到master主分支

git checkout master

从fix_bug合并到master分支

git merge fix_bug

提交代码

git push

而后从暂存区恢复代码

git stash pop

此时若有冲突,须要解决冲突
相关文章
相关标签/搜索