對git的簡單使用 頂 原

本文永久跟新地址:https://my.oschina.net/bysu/blog/1918635

【若要到岸,請搖船:開源中國 不最醉不龜歸】

之前對git愛答不理,最近需要用到,真的有點高攀不起感覺...好了,閒話少說,言歸正傳。

最近摸索着用,整理了一下,有些地方理解不對,還請指正,但請勿拍磚。

有必要的說明就,如下:

1.項目公共倉庫(下稱:遠程倉庫);

2.把項目從公共倉庫中fork到自己的倉庫(下稱:個人倉庫);

3.從公共倉庫把項目clone到本地,並通過git init設置本地git版本管理庫(下稱:本地版本庫)。

以下爲本人使用流程。

1.本人從公共倉庫把項目fork到個人倉庫,然後再通過個人倉庫clone到本地,並通過git init設置該目錄,進行git版本管理,如下圖:

2.一般工作的話,都是從主分支中新建一個分支,在新的分支中工作,譬如創建一個新的分支dev。如下圖:

a.在完成1,2步驟之後,這時(步驟3)有其他人對遠程倉庫中的文件A1進行了更改,遠程倉庫中的A1文件(A1-1,圖中標錯了,標成文件1-1了)此時裏面的內容跟本地倉庫中的A1不一樣了,此時本地的文件A1還是跟之前的一樣,未改變。

b.在本地倉庫發生了這些變化,(步驟4)創建了一個dev分支,並在該分支上對本地倉庫中的A1進行編輯(A1-2).

3.經過以上步驟,這時如果需要把本地經過編輯的內容(A1-2)同步到遠程倉庫,應該怎麼做比較好呢?

a.進行下面之前先要進行本地倉庫跟遠程倉庫進行關聯,本地倉庫跟個人倉庫進行關聯,完成這兩步之後,先在本地master分支把遠程倉庫中的內容pull下來(步驟5),保證其他人最新的修改,你這邊都拿到(爲的就是怕到時候你把你的內容push到遠倉時,把其他人你上次到這次之間提交的內容覆蓋掉),此時本地master和遠倉中A1文件,其都爲A1-1。

b.把本地倉庫dev分支合入本地master分支中(步驟6)。因爲此刻本地倉庫的dev分支中A1文件爲A1-2,這時需要解決A1-1和A1-2之間的衝突,才能把dev分支合入master分支中。此時,本地倉庫中的A1文件爲A1-3.

c.把本地倉中的內容push到個人倉庫中(步驟7),此時個人倉庫中的A1文件狀態爲A1-3.

d.最後把個人倉庫中的代碼合入遠程公共倉庫,此時遠程公共倉庫中文件A1狀態爲A1-3.

整個過程就是這樣子,只要所有人都按照這個流程,都可以保證最終的內容都互相同步。不知不覺又快0點30分了(更新時間:2018年8月3日 00:23:49)。洗洗睡了。

下面附上git對比工具的設置與使用

windows下設置 beyond compare 4 爲 git  的對比工具。

首先需要先安裝 beyond compare 4 工具,切記需要安裝安裝版的,不要搞綠色版的。下面BCompare.exe爲你自己的實際安裝路徑。

#difftool 配置
git config --global diff.tool bc4
git config --global difftool.prompt false
git config --global difftool.bc4.cmd '"D:\Application\BeyondCompare 4\BCompare.exe" "$LOCAL" "$REMOTE"'

#mergeftool 配置
git config --global merge.tool bc4
git config --global mergetool.prompt false
git config --global mergetool.bc4.cmd '"D:\Application\BeyondCompare 4\BCompare.exe" "$LOCAL" "$REMOTE" "$BASE" "$MERGED"'
git config --global mergetool.bc4.trustexitcode true

#讓git mergetool不再生成備份文件(*.orig)
git config --global mergetool.keepBackup false

--------------------------------------------------------------------------------------------------------------------

安裝git客戶端後,還需要最後一步設置,在命令行輸入:

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

因爲Git是分佈式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。你也許會擔心,如果有人故意冒充別人怎麼辦?這個不必擔心,首先我們相信大家都是善良無知的羣衆,其次,真的有冒充的也是有辦法可查的。

注意git config命令的--global參數,用了這個參數,表示你這臺機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的用戶名和Email地址。

正真使用之前,可以自己搭建一個git服務器,如果只是學習git,沒必要這麼麻煩。到https://github.com/註冊一個自己的賬號即可,即可免費獲得Git遠程倉庫。

如果需要從遠程庫clone東西下來,

由於本地Git倉庫和GitHub倉庫之間的傳輸是通過SSH加密的,所以,需要一點設置:

第1步:創建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsaid_rsa.pub這兩個文件,如果已經有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),創建SSH Key:

$ ssh-keygen -t rsa -C "[email protected]"

你需要把郵件地址換成你自己的郵件地址,然後一路回車,使用默認值即可。

如果一切順利的話,可以在用戶主目錄裏找到.ssh目錄,裏面有id_rsaid_rsa.pub兩個文件,這兩個就是SSH Key的祕鑰對,id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。

第2步:打開https://github.com/settings/keys,點“Add SSH Key”,填上任意Title,在Key文本框裏粘貼id_rsa.pub文件的內容。保存後,就可以clone東西到你的本地了。

----------------------------------------------------------------------------------------------------------------------------------

下面是用到的一些命令。

1.創建本地空白版本庫mygit

git init

2.往本地倉庫添加文件testFile.txt(該文件需放在上面倉庫所在的目錄)

vi testFile.txt

往裏面隨便增加幾行文字

abcd

ef

ghijk

3.告訴git,你增加了一個文件

git add testFile.txt  #可多次使用,可一次提交多個文件

4.告訴git,你提交了什麼,以便後來者知道情況。

git commit -m "提交內容的說明"

5.修改文件testFile.txt

vi testFile.txt

#把內容改爲,如下:
haha

6.可以通過git status命令查看哪些文件被修改了

git status

7.在git add 文件之前,可以通過git diff命令查看上一次的內容是什麼

git diff testFile.txt

注:如果已經git add文件纔想通過git diff查看上一次的內容是什麼,怎麼辦呢?(據說可以直接通過這個命令git diff --cached)執行以下命令即可

git reset HEAD testFile.txt

8.修改文件的提交跟新增文件的提交一樣。

9.查看目前版本之前的提交歷史記錄

git log  
#或者用下面的命令
git log --pretty=oneline

10.回退歷史版本

git reset --hard HEAD^

Git必須知道當前版本是哪個版本,在Git中,用HEAD表示當前版本,也就是最新的提交xxxx...(注意我的提交ID和你的肯定不一樣),上一個版本就是HEAD^,上上一個版本就是HEAD^^,當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100

11.如果發現回退錯了,想回到最新版本,上面的命令HEAD^修改成最新版本的id即可,可通過以下命令查看歷史id

git reflog

12.撤銷尚未提交到暫存區的修改

git checkout -- fileName

13.撤銷已提交到暫存區(git add)的修改

命令git reset HEAD <file>可以把暫存區的修改撤銷掉(unstage),重新放回工作區,然後重複步驟12即可

14.刪除版本庫裏面的文件

先刪除本地,然後通過git rm刪掉,並且git commit,刪除版本庫。

15.誤刪本地,從版本庫恢復

git checkout -- fileName

16.關聯一個遠程庫,使用命令

git remote add origin git@server-name:path/repo-name.git

關聯後,使用命令git push -u origin master第一次推送master分支的所有內容;

此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改;

17.創建分支

首先,我們創建dev分支,然後切換到dev分支:

$ git checkout -b dev
Switched to a new branch 'dev'

git checkout命令加上-b參數表示創建並切換,相當於以下兩條命令:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

然後,用git branch命令查看當前分支:

$ git branch
* dev
  master

git branch命令會列出所有分支,當前分支前面會標一個*號。

現在,我們把dev分支的工作成果合併到master分支上:

$ git merge dev
Updating d46f35e..b17d20e
Fast-forward
 readme.txt | 1 +
 1 file changed, 1 insertion(+)

git merge命令用於合併指定分支到當前分支。合併後,再查看readme.txt的內容,就可以看到,和dev分支的最新提交是完全一樣的。

注意到上面的Fast-forward信息,Git告訴我們,這次合併是“快進模式”,也就是直接把master指向dev的當前提交,所以合併速度非常快。

當然,也不是每次合併都能Fast-forward,我們後面會講其他方式的合併。

合併完成後,就可以放心地刪除dev分支了:

$ git branch -d dev
Deleted branch dev (was b17d20e).

刪除後,查看branch,就只剩下master分支了:

$ git branch
* master

因爲創建、合併和刪除分支非常快,所以Git鼓勵你使用分支完成某個任務,合併後再刪掉分支,這和直接在master分支上工作效果是一樣的,但過程更安全。

 

 

 

摘自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

 

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