史上最淺顯易懂的Git教程1

2022-01-20 02:21:03 字數 3183 閱讀 5441

最先進的分布式版本控制系統(沒有之一)。

cvs和svn,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用

集中式版本控制系統,版本庫是集中存放在**伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從**伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給**伺服器。

分布式版本控制系統根本沒有「**伺服器」,每個人的電腦上都是乙個完整的版本庫,這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上。

那多個人如何協作呢?比方說你在自己電腦上改了檔案a,你的同事也在他的電腦上改了檔案a,這時,你們倆之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。

commit要頻繁,不然無法記錄你的改動

如果你一天commit一次,中間的修改你找不回來

git安裝完成後,還需要最後一步設定,在命令列輸入:

$ git config --global user.name "your name"
$ git config --global user.email "[email protected]"
注意git config命令的--global引數,用了這個引數,表示你這台機器上所有的git倉庫

都會使用這個配置

1.建立版本庫進入目錄

$ git init
第1步:

git add readme.txt

第2步:把檔案提交到倉庫:git 

commit

-m "wrote a readme file"

我們繼續修改readme.txt檔案

執行git status可以讓我們時刻掌握倉庫當前的狀態,可以看到哪些檔案修改過。

看看具體修改了什麼內容,

需要用git diff這個命令看看

提交修改和提交新檔案是一樣的兩步

,第一步是git add

回退:歷史記錄,用git log命令檢視,如果嫌輸出資訊太多,

git log --pretty=oneline
git的commit id不是1,2,3……遞增的數字,而是乙個sha1計算出來的乙個非常大的數字,用十六進製制表示,如果大家都用1,2,3……作為版本號,那肯定就衝突了。

首先,git必須知道當前版本是哪個版本,

在git中,

head表示當前版本

,上乙個版本就是head^,上上乙個版本就是head^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成head~100

現在,我們要把當前版本回退到上乙個版本可以使用git reset命令:

$ git reset --hard head^

git的版本回退速度非常快,因為git在內部有個指向當前版本的head指標

要恢復上面的操作,回到未來:命令git reflog記錄了你的每一次命令:找到之前的commit id,如

3628164

然後

$ git reset --hard 3628164

工作區(working directory)就是你在電腦裡能看到的目錄,

工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。

git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有git

為我們自動建立的第乙個分支master,以及指向master的乙個指標叫head

撤銷修改:

git checkout -- file可以丟棄工作區的修改

命令git checkout -- readme.txt意思就是,把readme.txt檔案在工作區的修改全部撤銷,這裡有

兩種情況

:一種是readme.txt自修改後還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態;

一種是readme.txt已經新增到暫存區後,又作了修改,現在,撤銷修改就回到新增到暫存區後的狀態。

命令中的--很重要,沒有--,就變成了「切換到另乙個分支」的命令

如果修改只是新增到了暫存區,還沒有提交,怎麼撤銷:

命令git reset head file可以把暫存區的修改撤銷掉(unstage),重新放回工作區:

git reset命令既可以回退版本,也可以把暫存區的修改回退到工作區。當我們用head時,表示最新的版本。

場景1:當你改亂了工作區某個檔案的內容,想直接丟棄工作區的修改時,用命令git checkout -- file

場景2:當你不但改亂了工作區某個檔案的內容,還新增到了暫存區時,想丟棄修改,分兩步,第一步用命令git reset head file,就回到了場景1,第二步按場景1操作。

場景3:已經提交了不合適的修改到版本庫時,想要撤銷本次提交,參考版本回退一節,不過前提是沒有推送到遠端庫。

刪除檔案

git rm test.txt
然後git  commit -m

另一種情況是刪錯了,因為版本庫里還有呢,所以可以很輕鬆地把誤刪的檔案恢復到最新版本:

$ git checkout -- test.txt
git checkout其實是用版本庫里的版本替換工作區的版本,無論工作區是修改還是刪除,都可以「一鍵還原」。

史上最淺顯易懂的Git教程1

最先進的分布式版本控制系統 沒有之一 cvs和svn,這些集中式的版本控制系統不但速度慢,而且必須聯網才能使用 集中式版本控制系統,版本庫是集中存放在 伺服器的,而幹活的時候,用的都是自己的電腦,所以要先從 伺服器取得最新的版本,然後開始幹活,幹完活了,再把自己的活推送給 伺服器。分布式版本控制系統...

史上最淺顯易懂的Git教程2 github

git是分布式版本控制系統,同乙個git倉庫,可以分布到不同的機器上。怎麼分布呢?最早,肯定只有一台機器有乙個原始版本庫,此後,別的機器可以 轉殖 這個原始版本庫,而且每台機器的版本庫其實都是一樣的,並沒有主次之分。實際情況往往是這樣,找一台電腦充當伺服器的角色,每天24小時開機,其他每個人都從這個...

最淺顯易懂的Django系列教程(1) 虛擬環境

到目前位置,我們所有的第三方包安裝都是直接通過pip install xx的方式進行安裝的,這樣安裝會將那個包安裝到你的系統級的python環境中。但是這樣有乙個問題,就是如果你現在用django 1.10.x寫了個 然後你的領導跟你說,之前有乙個舊專案是用django 0.9開發的,讓你來維護,但...