git搭建筆記

配置:
git config --global user.name "duangongzi"
git config --global user.email "[email protected]"
因爲Git是分佈式版本控制系統,所以需要填寫用戶名和郵箱作爲一個標識。
創建版本庫:
版本庫又名倉庫,英文名repository,簡單的理解爲一個目錄,這個目錄裏面的所有文件都可以被Git管理起來,每個文件的修改,刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻還可以將文件”還原”。
1.linux命令相同,cd 至相應目錄下,
2.通過命令 git init 把這個目錄變成git可以管理的倉庫,當前目錄下會多出.git目錄,這個目錄是Git來跟蹤管理版本的
把文件添加到版本庫中。
所有版本控制系統,只能跟蹤文本文件的改動,比如txt文件,網頁,所有程序的代碼等,版本控制系統可以告訴你每次的改動,但是圖片,視頻這些二進制文件,沒幫發跟蹤文件的變化,只能把二進制文件每次的改動穿起來,也就是知道文件從1kb變成了2kb,但是具體修改的內容,版本控制也不知道
1.git add readme.txt //,將文件添加至暫存區,先在gitrepository目錄下創建文件readme.txt 執行命令: 
2.git commit -m "提交" //將文件提交至倉庫: 
3.git status //查看是否還有文件未提交
4.git diff readme.txt //已被修改的文件,
5.提交修改內容:即便文件已經存在了,修改後也要先add 在commit
git add readme.txt
git commit "提交"
遠程拉代碼:
1.git remote add origin 遠程倉庫地址  :本地倉庫和遠程建立映射關係
2.git clone 遠程代碼地址
版本回退:
1.查看日誌:git log 
git log --pretty=oneline  每條日誌只顯示一行
2.回退:(往上一級,上上一級回退)
git reset --hard HEAD^^^ 
git reset  --hard HEAD~1
3.回退:(按照版本號進行回退)
1.查版本號:git reflog
2.回退:git reset --hard 版本號
撤銷修改和刪除文件
1.在本地文件中對文件進行了修改,然後發現修改有誤,想撤銷
1、知道刪除的內容,修改後add到暫存區,commit
2、按照之前的方法,直接恢復到上一個版本
3、撤銷命令:
1)git checkout  --  readme.txt  可撤銷工作區的修改
該命令的意思是可將工作區的操作全部撤銷
兩種情況:
1.readme.txt自動修改後,還沒有放到暫存區,使用 撤銷修改就回到和版本庫一模一樣的狀態。
2.另外一種是readme.txt已經放入暫存區了,接着又作了修改,撤銷修改就回到添加暫存區後的狀態。(直接使用命令,將未加入緩存區的內容去掉)
2.刪除文件
1.直接rm readme.txt  將本地工作區中文件刪除,在add --commit 提交至版本庫
五:遠程倉庫。
》》》》》》》》》》》》》》》》》》
先有本地庫,再和遠程庫關聯
本地Git倉庫和github倉庫之間的傳輸是通過SSH加密的,所以需要一點設置:
第一步:創建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果有的話,直接跳過此如下命令,如果沒有的話,打開命令行,輸入如下命令:
ssh-keygen  -t rsa –C “[email protected]” //生成公鑰和私鑰的命令
id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
目前,在GitHub上的這個testgit倉庫還是空的,GitHub告訴我們,可以從這個倉庫克隆出新的倉庫,也可以把一個已有的本地倉庫與之關聯,然後,把本地倉庫的內容推送到GitHub倉庫。
1.git init
2.git remote add origin https://github.com/duanjunwei12/teatgit.git //本地與遠程的映射
3.git push -u  origin master  //將本地master分支推送至遠程倉庫
由於遠程庫是空的,我們第一次推送master分支時,加上了 –u參數,Git不但會把本地的master分支內容推送的遠程新的master分支,還會把本地的master分支和遠程的master分支關聯起來,在以後的推送或者拉取時就可以簡化命令。推送成功後,可以立刻在github頁面中看到遠程庫的內容已經和本地一模一樣了,
4.目前只要本地修改就可提交:git push origin master
》》》》》》》》》》》》》》》》》》
先有遠程庫,克隆至本地
1.現在guthub創建git倉庫
2.git clone https://github.com/duanjunwei12/testgit_2.git 
》》》》》》》》》》》》》》》》》》
創建分支
在版本回退中,每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。開始的時候(未創建任何分支)只有一條時間線,在Git裏,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master纔是指向提交的,所以,HEAD指向的就是當前分支。
1.git checkout -b dev //創建dev分支
2.git branch //查看當前所有的分支,當前分支前會加上* 號
git checkout 命令加上 –b參數表示創建並切換,相當於如下2條命令
git branch dev
git checkout dev
3.在dev分支中創建新的文件和master可以部分相同
》》》》》》》》》》》》》》》》》》
將分支的內容合併到主幹
1.切換至主幹,git merge dev
2.合併完成後刪除分支:git branch -d dev
》》》》》》》》》》》》》》》》》》
如何解決衝突?
Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,其中<<<HEAD是指主分支修改的內容,>>>>>fenzhi1 是指fenzhi1上修改的內容,我們可以修改下保存:
3.分支管理策略。
通常合併分支時,git一般使用”Fast forward”模式,在這種模式下,刪除分支後,會丟掉分支信息,我們使用帶參數 –no-ff來禁用”Fast forward”模式。
七:bug分支
在開發中,會經常碰到bug問題,那麼有了bug就需要修復,在Git中,分支是很強大的,每個bug都可以通過一個臨時分支來修復,修復完成後,合併分支,然後將臨時的分支刪除掉。
比如在開發中接到一個404 bug時候,我們可以創建一個404分支來修復它,但是,當前的dev分支上的工作還沒有提交。。
並不是我不想提交,而是工作進行到一半時候,我們還無法提交,比如我這個分支bug要2天完成,但是我issue-404 bug需要5個小時內完成。怎麼辦呢?還好,Git還提供了一個stash功能,可以把當前工作現場 ”隱藏起來”,等以後恢復現場後繼續工作。
1.git stash  、、將當前的工作現場隱藏起來
所以現在可以通過創建issue-404分支來修復bug了。
首先我們要確定在那個分支上修復bug,比如我現在是在主分支master上來修復的,現在我要在master分支上創建一個臨時分支,
在臨時分支上吧代碼提交後切換至master分支上將代碼合併
切換回dev分支,將之前隱藏的工作現場顯示出來(git stash list //查看工作現場)
恢復工作現場:1.git stash apply恢復,恢復後,stash內容並不刪除,你需要使用命令git stash drop來刪除。
2.另一種方式是使用git stash pop,恢復的同時把stash內容也刪除了。
》》》》》》》》》》》》》》》》》
多人協作:
當你從遠程庫克隆時候,實際上Git自動把本地的master分支和遠程的master分支對應起來了,並且遠程庫的默認名稱是origin。
要查看遠程庫的信息 使用 git remote
要查看遠程庫的詳細信息 使用 git remote –v
fetch:抓取
push:推送
git push origin master
我們現在要推送到其他分支,比如dev分支上,我們還是那個命令 git push origin dev
一般情況下,那些分支要推送呢?
master分支是主分支,因此要時刻與遠程同步。
一些修復bug分支不需要推送到遠程去,可以先合併到主分支上,然後把主分支master推送到遠程去。
抓取分支:
-------------
權限控制
因爲我們爲了項目的安全考慮,需要對一部分人開放只讀權限(只能 read、clone) ; 或者對一部分人開放寫權限(只能 read、clone、push) ; 或者對一部分人開放管理者權限(只能 read、clone、push、給倉庫添加成員 )。事實上github對權限的管理只有4種,前三種權限分別是 Admin(管理者)、Write(只寫) 、Read(只讀) 。最後一種權限比較特殊,它是該組織的創建者,擁有至高無上的的權利。
幾個概念:organization(組織) 、repository(倉庫)、Team(團隊)。
倉庫對team的權限控制有三種
Admin 管理者權限(只能 read、clone、push、給倉庫添加成員 )
Write 寫權限(只能 read、clone、push)
Read 讀權限(只能 read、clone) 
github不能免費的創建私有倉庫,這是一個很嚴重的問題。如果是開源項目,用github完全沒有問題。如果是私有項目,可以有以下幾個途徑達到要求:
1、在github花錢購買私有倉庫。
2、使用國內比較出名的開源中國git託管服務:https://git.oschina.net/   
3、使用GitLab,這需要在自己的服務器上部署。傳送門:https://about.gitlab.com/gitlab-com/
===========================================










































































































理解工作區與暫存區的區別?
1.工作區:就是你在電腦上看到的目錄,比如目錄下testgit裏的文件(.git隱藏目錄版本庫除外)。或者以後需要再新建的目錄文件等等都屬於工作區範疇。
2.版本庫(Repository):工作區有一個隱藏目錄.git,這個不屬於工作區,這是版本庫。其中版本庫裏面存了很多東西,其中最重要的就是stage(暫存區),還有Git爲我們自動創建了第一個分支master,以及指向master的一個指針HEAD
Git提交文件到版本庫有兩步:
1.是使用 git add 把文件添加進去,實際上就是把文件添加到暫存區。
2.使用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支上。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章