git试题

git操作详见:http://www.cnblogs.com/fanlinqiang/p/7741220.html

场景:你是第一天来公司上班的,项目代码托管在 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:暂存区

Workspace:工作区

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

 Remote:远程仓库

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

 git  add (添加当前目录的所有文件到暂存区)

 git  rm –cached [file] (# 停止追踪指定文件,但该文件会保留在工作区)

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

 git   branch  -a (列出所有本地分支和远程分支)

 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

此时如有冲突,需要解决冲突

 

posted @ 2017-12-09 21:46  fanlinqiang  阅读(1331)  评论(0)    收藏  举报