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

此時若有衝突,須要解決衝突
相關文章
相關標籤/搜索