Git圖文教程及詳解

最近一直在用Git,發(fā)現(xiàn)自己有幾(hen)個(duo)不會用的命令了琼讽,這可不行啊,本著
這里寫圖片描述

精益求精的原則洪唐,想寫一篇關于Git的博客钻蹬,但發(fā)現(xiàn)了一片很不錯的文章就引用了,寫得很不錯凭需,和大家一起分享问欠!

首先作為一個正直
這里寫圖片描述

的程序員我會注明出處的:
這里寫圖片描述
像我這樣的一定會早日變大佬!

小司機我花了好長時間重新上傳圖片與排版粒蜈!

進入正文

寫著寫著發(fā)現(xiàn)發(fā)現(xiàn)CSDN有限制顺献,居然有字數(shù)限制,無語

下面給出精編版的Markdown枯怖,Word注整,Pdf格式下載鏈接:

百度云http://pan.baidu.com/s/1hrLbr04
CSDN下載http://download.csdn.net/detail/zhcswlp0625/9736167

一:Git是什么?

Git是目前世界上最先進的分布式版本控制系統(tǒng)度硝。

二:SVN與Git的最主要的區(qū)別肿轨?

SVN是集中式版本控制系統(tǒng),版本庫是集中放在中央服務器的塘淑,而干活的時候萝招,用的都是自己的電腦,所以首先要從中央服務器哪里得到最新的版本存捺,然后干活,干完后曙蒸,需要把自己做完的活推送到中央服務器捌治。集中式版本控制系統(tǒng)是必須聯(lián)網才能工作,如果在局域網還可以纽窟,帶寬夠大肖油,速度夠快,如果在互聯(lián)網下臂港,如果網速慢的話森枪,就納悶了。

Git是分布式版本控制系統(tǒng)审孽,那么它就沒有中央服務器的县袱,每個人的電腦就是一個完整的版本庫,這樣佑力,工作的時候就不需要聯(lián)網了式散,因為版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫打颤,那多個人如何協(xié)作呢暴拄?比如說自己在電腦上改了文件A漓滔,其他人也在電腦上改了文件A,這時乖篷,你們兩之間只需把各自的修改推送給對方响驴,就可以互相看到對方的修改了。

三:在windows上如何安裝Git撕蔼?

  msysgit是 windows版的Git,如下:

需要從網上下載一個踏施,然后進行默認安裝即可。安裝完成后罕邀,在開始菜單里面找到 “Git
–> Git Bash”,如下:

會彈出一個類似的命令窗口的東西畅形,就說明Git安裝成功。如下:

安裝完成后诉探,還需要最后一步設置日熬,在命令行輸入如下:

因為Git是分布式版本控制系統(tǒng),所以需要填寫用戶名和郵箱作為一個標識肾胯。

** 注意:**git config –global
參數(shù)竖席,有了這個參數(shù),表示你這臺機器上所有的Git倉庫都會使用這個配置敬肚,當然你也可以對某個倉庫指定的不同的用戶名和郵箱毕荐。

四:如何操作?

 一:創(chuàng)建版本庫艳馒。

什么是版本庫憎亚?版本庫又名倉庫,英文名repository,你可以簡單的理解一個目錄弄慰,這個目錄里面的所有文件都可以被Git管理起來第美,每個文件的修改,刪除陆爽,Git都能跟蹤什往,以便任何時刻都可以追蹤歷史,或者在將來某個時刻還可以將文件”還原”慌闭。

所以創(chuàng)建一個版本庫也非常簡單别威,如下我是D盤 –\> www下

目錄下新建一個testgit版本庫。

pwd 命令是用于顯示當前的目錄驴剔。

  1. 通過命令 git init 把這個目錄變成git可以管理的倉庫省古,如下:

這時候你當前testgit目錄下會多了一個.git的目錄,這個目錄是Git來跟蹤管理版本的仔拟,沒事千萬不要手動亂改這個目錄里面的文件衫樊,否則,會把git倉庫給破壞了。如下:

  2. 把文件添加到版本庫中科侈。

首先要明確下载佳,所有的版本控制系統(tǒng),只能跟蹤文本文件的改動臀栈,比如txt文件蔫慧,網頁,所有程序的代碼等权薯,Git也不列外姑躲,版本控制系統(tǒng)可以告訴你每次的改動,但是圖片盟蚣,視頻這些二進制文件黍析,雖能也能由版本控制系統(tǒng)管理,但沒法跟蹤文件的變化屎开,只能把二進制文件每次改動串起來阐枣,也就是知道圖片從1kb變成2kb,但是到底改了啥奄抽,版本控制也不知道蔼两。

** 下面先看下demo如下演示:**

 我在版本庫testgit目錄下新建一個記事本文件 readme.txt 內容如下:11111111

 第一步:使用命令 git add readme.txt添加到暫存區(qū)里面去。如下:

如果和上面一樣逞度,沒有任何提示额划,說明已經添加成功了。

第二步:用命令 git commit告訴Git档泽,把文件提交到倉庫俊戳。

現(xiàn)在我們已經提交了一個readme.txt文件了,我們下面可以通過命令git
status來查看是否還有文件未提交茁瘦,如下:

說明沒有任何文件未提交品抽,但是我現(xiàn)在繼續(xù)來改下readme.txt內容,比如我在下面添加一行2222222222內容甜熔,繼續(xù)使用git
status來查看下結果,如下:

上面的命令告訴我們 readme.txt文件已被修改突倍,但是未被提交的修改腔稀。

接下來我想看下readme.txt文件到底改了什么內容,如何查看呢羽历?可以使用如下命令:

git diff readme.txt 如下:

如上可以看到焊虏,readme.txt文件內容從一行11111111改成 二行 添加了一行22222222內容。

知道了對readme.txt文件做了什么修改后秕磷,我們可以放心的提交到倉庫了诵闭,提交修改和提交文件是一樣的2步(第一步是git
add 第二步是:git commit)。

如下:

二:版本回退:

如上,我們已經學會了修改文件疏尿,現(xiàn)在我繼續(xù)對readme.txt文件進行修改瘟芝,再增加一行

內容為33333333333333.繼續(xù)執(zhí)行命令如下:

現(xiàn)在我已經對readme.txt文件做了三次修改了,那么我現(xiàn)在想查看下歷史記錄褥琐,如何查呢锌俱?我們現(xiàn)在可以使用命令
git log 演示如下所示:

git

log命令顯示從最近到最遠的顯示日志,我們可以看到最近三次提交敌呈,最近的一次是,增加內容為333333.上一次是添加內容222222贸宏,第一次默認是
111111.如果嫌上面顯示的信息太多的話,我們可以使用命令 git log –pretty=oneline
演示如下:

現(xiàn)在我想使用版本回退操作磕洪,我想把當前的版本回退到上一個版本吭练,要使用什么命令呢?可以使用如下2種命令析显,第一種是:git
reset –hard HEAD^ 那么如果要回退到上上個版本只需把HEAD^ 改成 HEAD^^
以此類推鲫咽。那如果要回退到前100個版本的話,使用上面的方法肯定不方便叫榕,我們可以使用下面的簡便命令操作:git
reset –hard HEAD~100 即可浑侥。未回退之前的readme.txt內容如下:

如果想回退到上一個版本的命令如下操作:

再來查看下 readme.txt內容如下:通過命令cat readme.txt查看

可以看到,內容已經回退到上一個版本了晰绎。我們可以繼續(xù)使用git log
來查看下歷史記錄信息寓落,如下:

我們看到 增加333333
內容我們沒有看到了,但是現(xiàn)在我想回退到最新的版本荞下,如:有333333的內容要如何恢復呢伶选?我們可以通過版本號回退,使用命令方法如下:

git reset –hard 版本號
尖昏,但是現(xiàn)在的問題假如我已經關掉過一次命令行或者333內容的版本號我并不知道呢仰税?要如何知道增加3333內容的版本號呢?可以通過如下命令即可獲取到版本號:git
reflog 演示如下:

通過上面的顯示我們可以知道抽诉,增加內容3333的版本號是 6fcfc89.我們現(xiàn)在可以命令

git reset –hard 6fcfc89來恢復了陨簇。演示如下:

可以看到 目前已經是最新的版本了。

三:理解工作區(qū)與暫存區(qū)的區(qū)別迹淌?

工作區(qū):就是你在電腦上看到的目錄河绽,比如目錄下testgit里的文件(.git隱藏目錄版本庫除外)“η裕或者以后需要再新建的目錄文件等等都屬于工作區(qū)范疇耙饰。

**
版本庫(Repository):**工作區(qū)有一個隱藏目錄.git,這個不屬于工作區(qū),這是版本庫纹份。其中版本庫里面存了很多東西苟跪,其中最重要的就是stage(暫存區(qū))廷痘,還有Git為我們自動創(chuàng)建了第一個分支master,以及指向master的一個指針HEAD。

我們前面說過使用Git提交文件到版本庫有兩步:

第一步:是使用 git add 把文件添加進去件已,實際上就是把文件添加到暫存區(qū)笋额。

第二步:使用git commit提交更改,實際上就是把暫存區(qū)的所有內容提交到當前分支上拨齐。

我們繼續(xù)使用demo來演示下:

我們在readme.txt再添加一行內容為4444444鳞陨,接著在目錄下新建一個文件為test.txt
內容為test,我們先用命令 git status來查看下狀態(tài)瞻惋,如下:

現(xiàn)在我們先使用git add 命令把2個文件都添加到暫存區(qū)中厦滤,再使用git
status來查看下狀態(tài),如下:

接著我們可以使用git commit一次性提交到分支上歼狼,如下:

四:Git撤銷修改和刪除文件操作掏导。

一:撤銷修改:

比如我現(xiàn)在在readme.txt文件里面增加一行

內容為555555555555,我們先通過命令查看如下:

在我未提交之前羽峰,我發(fā)現(xiàn)添加5555555555555內容有誤趟咆,所以我得馬上恢復以前的版本,現(xiàn)在我可以有如下幾種方法可以做修改:

第一:如果我知道要刪掉那些內容的話梅屉,直接手動更改去掉那些需要的文件值纱,然后add添加到暫存區(qū),最后commit掉坯汤。

第二:我可以按以前的方法直接恢復到上一個版本虐唠。使用 git reset –hard HEAD^

但是現(xiàn)在我不想使用上面的2種方法,我想直接想使用撤銷命令該如何操作呢惰聂?首先在做撤銷之前疆偿,我們可以先用
git status 查看下當前的狀態(tài)。如下所示:

可以發(fā)現(xiàn)搓幌,Git會告訴你杆故,git checkout — file 可以丟棄工作區(qū)的修改,如下命令:

git checkout — readme.txt,如下所示:

命令 git checkout –readme.txt
意思就是溉愁,把readme.txt文件在工作區(qū)做的修改全部撤銷处铛,這里有2種情況泛领,如下:

  1. readme.txt自動修改后耍群,還沒有放到暫存區(qū),使用
    撤銷修改就回到和版本庫一模一樣的狀態(tài)颊艳。

  2. 另外一種是readme.txt已經放入暫存區(qū)了投队,接著又作了修改,撤銷修改就回到添加暫存區(qū)后的狀態(tài)爵川。

對于第二種情況敷鸦,我想我們繼續(xù)做demo來看下,假如現(xiàn)在我對readme.txt添加一行
內容為6666666666666,我git add
增加到暫存區(qū)后扒披,接著添加內容7777777值依,我想通過撤銷命令讓其回到暫存區(qū)后的狀態(tài)。如下所示:

注意:命令git checkout — readme.txt 中的 — 很重要碟案,如果沒有 —
的話愿险,那么命令變成創(chuàng)建分支了。

二:刪除文件价说。

 假如我現(xiàn)在版本庫testgit目錄添加一個文件b.txt,然后提交辆亏。如下:

如上:一般情況下,可以直接在文件目錄中把文件刪了鳖目,或者使用如上rm命令:rm b.txt
扮叨,如果我想徹底從版本庫中刪掉了此文件的話,可以再執(zhí)行commit命令
提交掉领迈,現(xiàn)在目錄是這樣的彻磁,

只要沒有commit之前,如果我想在版本庫中恢復此文件如何操作呢狸捅?

可以使用如下命令 git checkout — b.txt衷蜓,如下所示:

再來看看我們testgit目錄,添加了3個文件了尘喝。如下所示:

五:遠程倉庫磁浇。

在了解之前,先注冊github賬號瞧省,由于你的本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的扯夭,所以需要一點設置:

 第一步:創(chuàng)建SSH

Key。在用戶主目錄下鞍匾,看看有沒有.ssh目錄交洗,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件橡淑,如果有的話构拳,直接跳過此如下命令,如果沒有的話梁棠,打開命令行置森,輸入如下命令:

ssh-keygen -t rsa –C “youremail@example.com”,
由于我本地此前運行過一次,所以本地有符糊,如下所示:

id_rsa是私鑰凫海,不能泄露出去,id_rsa.pub是公鑰男娄,可以放心地告訴任何人行贪。

第二步:登錄github,打開” settings”中的SSH Keys頁面漾稀,然后點擊“Add SSH
Key”,填上任意title,在Key文本框里黏貼id_rsa.pub文件的內容建瘫。

點擊 Add Key崭捍,你就應該可以看到已經添加的key。

  1. 如何添加遠程庫啰脚?

現(xiàn)在的情景是:我們已經在本地創(chuàng)建了一個Git倉庫后殷蛇,又想在github創(chuàng)建一個Git倉庫,并且希望這兩個倉庫進行遠程同步橄浓,這樣github的倉庫可以作為備份粒梦,又可以其他人通過該倉庫來協(xié)作。

首先贮配,登錄github上谍倦,然后在右上角找到“create a new
repo”創(chuàng)建一個新的倉庫。如下:

在Repository name填入testgit泪勒,其他保持默認設置昼蛀,點擊“Create
repository”按鈕,就成功地創(chuàng)建了一個新的Git倉庫:

目前圆存,在GitHub上的這個testgit倉庫還是空的叼旋,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫沦辙,也可以把一個已有的本地倉庫與之關聯(lián)夫植,然后,把本地倉庫的內容推送到GitHub倉庫油讯。

現(xiàn)在详民,我們根據GitHub的提示,在本地的testgit倉庫下運行命令:

git remote add origin https://github.com/tugenhua0707/testgit.git

所有的如下:

把本地庫的內容推送到遠程陌兑,使用 git
push命令沈跨,實際上是把當前分支master推送到遠程。

由于遠程庫是空的兔综,我們第一次推送master分支時饿凛,加上了
–u參數(shù),Git不但會把本地的master分支內容推送的遠程新的master分支软驰,還會把本地的master分支和遠程的master分支關聯(lián)起來涧窒,在以后的推送或者拉取時就可以簡化命令。推送成功后锭亏,可以立刻在github頁面中看到遠程庫的內容已經和本地一模一樣了纠吴,上面的要輸入github的用戶名和密碼如下所示:

從現(xiàn)在起,只要本地作了提交慧瘤,就可以通過如下命令:

git push origin master

把本地master分支的最新修改推送到github上了呜象,現(xiàn)在你就擁有了真正的分布式版本庫了膳凝。

  1. 如何從遠程庫克隆恭陡?

上面我們了解了先有本地庫,后有遠程庫時候上煤,如何關聯(lián)遠程庫休玩。

現(xiàn)在我們想,假如遠程庫有新的內容了劫狠,我想克隆到本地來 如何克隆呢拴疤?

首先,登錄github独泞,創(chuàng)建一個新的倉庫呐矾,名字叫testgit2.如下:

如下,我們看到:

現(xiàn)在懦砂,遠程庫已經準備好了蜒犯,下一步是使用命令git clone克隆一個本地庫了。如下所示:

接著在我本地目錄下 生成testgit2目錄了荞膘,如下所示:

六:創(chuàng)建與合并分支罚随。


版本回填退里,你已經知道羽资,每次提交淘菩,Git都把它們串成一條時間線,這條時間線就是一個分支屠升。截止到目前潮改,只有一條時間線,在Git里腹暖,這個分支叫主分支汇在,即master分支。HEAD嚴格來說不是指向提交微服,而是指向master趾疚,master才是指向提交的,所以以蕴,HEAD指向的就是當前分支糙麦。

首先,我們來創(chuàng)建dev分支丛肮,然后切換到dev分支上赡磅。如下操作:

git checkout 命令加上 –b參數(shù)表示創(chuàng)建并切換,相當于如下2條命令

git branch dev

git checkout dev

git
branch查看分支宝与,會列出所有的分支焚廊,當前分支前面會添加一個星號冶匹。然后我們在dev分支上繼續(xù)做demo,比如我們現(xiàn)在在readme.txt再增加一行
7777777777777

首先我們先來查看下readme.txt內容咆瘟,接著添加內容77777777嚼隘,如下:

現(xiàn)在dev分支工作已完成,現(xiàn)在我們切換到主分支master上袒餐,繼續(xù)查看readme.txt內容如下:

現(xiàn)在我們可以把dev分支上的內容合并到分支master上了飞蛹,可以在master分支上,使用如下命令
git merge dev 如下所示:

git
merge命令用于合并指定分支到當前分支上灸眼,合并后卧檐,再查看readme.txt內容,可以看到焰宣,和dev分支最新提交的是完全一樣的霉囚。

注意到上面的Fast-forward信息,Git告訴我們匕积,這次合并是“快進模式”盈罐,也就是直接把master指向dev的當前提交,所以合并速度非痴⑻欤快暖呕。

合并完成后,我們可以接著刪除dev分支了苞氮,操作如下:

總結創(chuàng)建與合并分支命令如下:

查看分支:git branch

創(chuàng)建分支:git branch name

切換分支:git checkout name

創(chuàng)建+切換分支:git checkout –b name

合并某分支到當前分支:git merge name

刪除分支:git branch –d name

  1. 如何解決沖突湾揽?

下面我們還是一步一步來,先新建一個新分支笼吟,比如名字叫fenzhi1库物,在readme.txt添加一行內容8888888,然后提交贷帮,如下所示:

同樣戚揭,我們現(xiàn)在切換到master分支上來,也在最后一行添加內容撵枢,內容為99999999民晒,如下所示:

現(xiàn)在我們需要在master分支上來合并fenzhi1,如下操作:

Git用<<<<<<<锄禽,=======潜必,>>>>>>>標記出不同分支的內容,其中<<<HEAD是指主分支修改的內容沃但,>>>>>fenzhi1
是指fenzhi1上修改的內容磁滚,我們可以修改下如下后保存:

如果我想查看分支合并的情況的話,需要使用命令 git log.命令行演示如下:

3.分支管理策略。

  通常合并分支時垂攘,git一般使用”Fast

forward”模式维雇,在這種模式下,刪除分支后晒他,會丟掉分支信息吱型,現(xiàn)在我們來使用帶參數(shù)
–no-ff來禁用”Fast forward”模式。首先我們來做demo演示下:

  1. 創(chuàng)建一個dev分支仪芒。

  2. 修改readme.txt內容唁影。

  3. 添加到暫存區(qū)。

  4. 切換回主分支(master)掂名。

  5. 合并dev分支,使用命令 git merge –no-ff -m “注釋” dev

  6. 查看歷史記錄

截圖如下:

分支策略:首先master主分支應該是非常穩(wěn)定的哟沫,也就是用來發(fā)布新版本饺蔑,一般情況下不允許在上面干活,干活一般情況下在新建的dev分支上干活嗜诀,干完后猾警,比如上要發(fā)布,或者說dev分支代碼穩(wěn)定后可以合并到主分支master上來隆敢。

七:bug分支:

 在開發(fā)中发皿,會經常碰到bug問題,那么有了bug就需要修復拂蝎,在Git中穴墅,分支是很強大的,每個bug都可以通過一個臨時分支來修復温自,修復完成后玄货,合并分支,然后將臨時的分支刪除掉悼泌。

比如我在開發(fā)中接到一個404
bug時候松捉,我們可以創(chuàng)建一個404分支來修復它,但是馆里,當前的dev分支上的工作還沒有提交隘世。比如如下:

并不是我不想提交,而是工作進行到一半時候鸠踪,我們還無法提交丙者,比如我這個分支bug要2天完成,但是我issue-404
bug需要5個小時內完成慢哈。怎么辦呢蔓钟?還好,Git還提供了一個stash功能卵贱,可以把當前工作現(xiàn)場
”隱藏起來”滥沫,等以后恢復現(xiàn)場后繼續(xù)工作侣集。如下:

所以現(xiàn)在我可以通過創(chuàng)建issue-404分支來修復bug了。

首先我們要確定在那個分支上修復bug兰绣,比如我現(xiàn)在是在主分支master上來修復的世分,現(xiàn)在我要在master分支上創(chuàng)建一個臨時分支,演示如下:

修復完成后缀辩,切換到master分支上臭埋,并完成合并,最后刪除issue-404分支臀玄。演示如下:

現(xiàn)在瓢阴,我們回到dev分支上干活了。

工作區(qū)是干凈的健无,那么我們工作現(xiàn)場去哪里呢荣恐?我們可以使用命令 git stash
list來查看下。如下:

工作現(xiàn)場還在累贤,Git把stash內容存在某個地方了叠穆,但是需要恢復一下,可以使用如下2個方法:

  1. git stash apply恢復臼膏,恢復后硼被,stash內容并不刪除,你需要使用命令git stash
    drop來刪除渗磅。

  2. 另一種方式是使用git stash pop,恢復的同時把stash內容也刪除了嚷硫。

     演示如下
    

八:多人協(xié)作。

當你從遠程庫克隆時候夺溢,實際上Git自動把本地的master分支和遠程的master分支對應起來了论巍,并且遠程庫的默認名稱是origin。

  1. 要查看遠程庫的信息 使用 git remote

  2. 要查看遠程庫的詳細信息 使用 git remote –v

如下演示:

一:推送分支:

推送分支就是把該分支上所有本地提交到遠程庫中风响,推送時嘉汰,要指定本地分支,這樣状勤,Git就會把該分支推送到遠程庫對應的遠程分支上:

  使用命令 git push origin master

比如我現(xiàn)在的github上的readme.txt代碼如下:

本地的readme.txt代碼如下:

現(xiàn)在我想把本地更新的readme.txt代碼推送到遠程庫中鞋怀,使用命令如下:

我們可以看到如上,推送成功持搜,我們可以繼續(xù)來截圖github上的readme.txt內容 如下:

可以看到
推送成功了密似,如果我們現(xiàn)在要推送到其他分支,比如dev分支上葫盼,我們還是那個命令 git
push origin dev

那么一般情況下残腌,那些分支要推送呢?

  1. master分支是主分支,因此要時刻與遠程同步抛猫。

  2. 一些修復bug分支不需要推送到遠程去蟆盹,可以先合并到主分支上,然后把主分支master推送到遠程去闺金。

二:抓取分支:

多人協(xié)作時逾滥,大家都會往master分支上推送各自的修改。現(xiàn)在我們可以模擬另外一個同事败匹,可以在另一臺電腦上(注意要把SSH
key添加到github上)或者同一臺電腦上另外一個目錄克隆寨昙,新建一個目錄名字叫testgit2

但是我首先要把dev分支也要推送到遠程去,如下

接著進入testgit2目錄掀亩,進行克隆遠程的庫到本地來舔哪,如下:

現(xiàn)在目錄下生成有如下所示:

現(xiàn)在我們的小伙伴要在dev分支上做開發(fā),就必須把遠程的origin的dev分支到本地來槽棍,于是可以使用命令創(chuàng)建本地dev分支:git
checkout –b dev origin/dev

現(xiàn)在小伙伴們就可以在dev分支上做開發(fā)了尸红,開發(fā)完成后把dev分支推送到遠程庫時。

如下:

小伙伴們已經向origin/dev分支上推送了提交刹泄,而我在我的目錄文件下也對同樣的文件同個地方作了修改,也試圖推送到遠程庫時怎爵,如下:

由上面可知:推送失敗特石,因為我的小伙伴最新提交的和我試圖推送的有沖突,解決的辦法也很簡單鳖链,上面已經提示我們姆蘸,先用git
pull把最新的提交從origin/dev抓下來,然后在本地合并芙委,解決沖突逞敷,再推送。

git
pull
也失敗了灌侣,原因是沒有指定本地dev分支與遠程origin/dev分支的鏈接推捐,根據提示,設置dev和origin/dev的鏈接:如下:

這回git pull成功侧啼,但是合并有沖突牛柒,需要手動解決,解決的方法和分支管理中的
解決沖突完全一樣痊乾。解決后皮壁,提交,再push:

我們可以先來看看readme.txt內容了哪审。

現(xiàn)在手動已經解決完了蛾魄,我接在需要再提交,再push到遠程庫里面去。如下所示:

因此:多人協(xié)作工作模式一般是這樣的:

  1. 首先滴须,可以試圖用git push origin branch-name推送自己的修改.

  2. 如果推送失敗舌狗,則因為遠程分支比你的本地更新早,需要先用git pull試圖合并描馅。

  3. 如果合并有沖突把夸,則需要解決沖突,并在本地提交铭污。再用git push origin
    branch-name推送恋日。

Git基本常用命令如下:

mkdir: XX (創(chuàng)建一個空目錄 XX指目錄名)

pwd: 顯示當前目錄的路徑。

git init 把當前的目錄變成可以管理的git倉庫嘹狞,生成隱藏.git文件岂膳。

git add XX 把xx文件添加到暫存區(qū)去。

git commit –m “XX” 提交文件 –m 后面的是注釋磅网。

git status 查看倉庫狀態(tài)

git diff XX 查看XX文件修改了那些內容

git log 查看歷史記錄

git reset –hard HEAD^ 或者 git reset –hard HEAD~ 回退到上一個版本

                    (如果想回退到100個版本谈截,使用git reset –hard HEAD\~100 )

cat XX 查看XX文件內容

git reflog 查看歷史記錄的版本號id

git checkout — XX 把XX文件在工作區(qū)的修改全部撤銷。

git rm XX 刪除XX文件

git remote add
origin https://github.com/tugenhua0707/testgit 關聯(lián)一個遠程庫

git push –u(第一次要用-u 以后不需要) origin master
把當前master分支推送到遠程庫

git clone https://github.com/tugenhua0707/testgit 從遠程庫中克隆

git checkout –b dev 創(chuàng)建dev分支 并切換到dev分支上

git branch 查看當前所有的分支

git checkout master 切換回master分支

git merge dev 在當前的分支上合并dev分支

git branch –d dev 刪除dev分支

git branch name 創(chuàng)建分支

git stash 把當前的工作隱藏起來 等以后恢復現(xiàn)場后繼續(xù)工作

git stash list 查看所有被隱藏的文件列表

git stash apply 恢復被隱藏的文件涧偷,但是內容不刪除

git stash drop 刪除文件

git stash pop 恢復文件的同時 也刪除文件

git remote 查看遠程庫的信息

git remote –v 查看遠程庫的詳細信息

git push origin master Git會把master分支推送到遠程庫對應的遠程分支上

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末簸喂,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子燎潮,更是在濱河造成了極大的恐慌喻鳄,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件确封,死亡現(xiàn)場離奇詭異除呵,居然都是意外死亡,警方通過查閱死者的電腦和手機爪喘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門颜曾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秉剑,你說我怎么就攤上這事泛豪。” “怎么了秃症?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵候址,是天一觀的道長。 經常有香客問我种柑,道長岗仑,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任聚请,我火速辦了婚禮荠雕,結果婚禮上稳其,老公的妹妹穿的比我還像新娘。我一直安慰自己炸卑,他們只是感情好既鞠,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著盖文,像睡著了一般嘱蛋。 火紅的嫁衣襯著肌膚如雪溪厘。 梳的紋絲不亂的頭發(fā)上祟蚀,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音趴生,去河邊找鬼疙驾。 笑死凶伙,一個胖子當著我的面吹牛,可吹牛的內容都是我干的它碎。 我是一名探鬼主播函荣,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼扳肛!你這毒婦竟也來了傻挂?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤挖息,失蹤者是張志新(化名)和其女友劉穎踊谋,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體旋讹,經...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年轿衔,在試婚紗的時候發(fā)現(xiàn)自己被綠了沉迹。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡害驹,死狀恐怖鞭呕,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情宛官,我是刑警寧澤葫松,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站底洗,受9級特大地震影響腋么,放射性物質發(fā)生泄漏。R本人自食惡果不足惜亥揖,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一珊擂、第九天 我趴在偏房一處隱蔽的房頂上張望圣勒。 院中可真熱鬧,春花似錦摧扇、人聲如沸圣贸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吁峻。三九已至,卻和暖如春在张,著一層夾襖步出監(jiān)牢的瞬間用含,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工瞧掺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留耕餐,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓辟狈,卻偏偏與公主長得像肠缔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子哼转,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容