一文教你玩轉git

2021-08-15 19:26:35 字數 4315 閱讀 2231

首先進入乙個目錄之後,使用這個命令是先初始化乙個git倉庫

git init 它會預設建立乙個名為master的分支

下面這個用於檢視是否有修改的檔案,如果有就會報紅

git status

下面這個用於檢視檔案修改的細節

git diff test.txt

下面這個是提交到暫存區

git add test.txt

下面這個是提交修改,記住每操作一次都要進行add 和commit

git commit -m "提交資訊"

以列表的形式展示所有分支

git branch -a

切換分支

git checkout branchname 分支名稱,用於切換分支 發現每次切換分支,內部的倉庫內容會隨之發生改變

建立新的分之

git checkout -b new-dev

用來檢視歷史提交,可以根據commit_id來回退到歷史提交

git log

強制回退指定版本,回退後 一旦提交 不可逆

git reset --harh commit_id

已經修改檔案之後,但是還沒有add提交,可以通過下面命令回退 撤銷修改

git checkout -- test.txt

若干修改檔案之後,已經 add 了,但是還沒有commit,那麼可以先取消暫存 然後回退

git reset head test.txt

git checkout -- test.txt

如果需要刪除git庫中的檔案

git rm test.txt 表示刪除庫中檔案,需要commit完成命令

負責直接回退到歷史最近版本

記住 git status 是用來檢視暫存區的命令

用它可以檢視所有被修改的檔案狀態,如果為綠色則可以提交,紅色需要先 add 再提交

github遠端倉庫使用

如何鏈結遠端倉庫,並將自己的本地倉庫上傳到遠端倉庫管理

首先將本機的sshkey新增到github賬號

ssh-keygen -t rsa -c "[email protected]"

將生成的.ssh裡面的id_rsa.pub裡面的內容複製到sshkey的值裡面 只是使用ssh上傳倉庫的必備條件

然後新建乙個github倉庫,然後使用ssh的方式將本地倉庫push到遠端倉庫

git remote add origin [email protected]:aeasringnar/newfile.git

注意如果這裡初夏錯誤那麼就git remote rm origin後重新上傳

最後git push -u origin master 將本地倉庫直接push到遠端倉庫(這裡是將master分支上傳)

先建立遠端倉庫然後轉殖到本地進行協作開發。

git clone [email protected]:aeasringnar/gitskills.git

轉殖到本地

然後修改裡面檔案之後,可以

git add filename

git commit -m "描述"

git push -u origin master 推送修改到遠端倉庫

分支的合併,有一種情況會發生衝突,當每個分支都有自己的提交的時候就會產生衝突,需要手動修改這些衝突之後再次提交即可,

注意:不產生衝突的合併,不需要提交,直接刪除無用分支即可

回到主分支後的,合併命令

git merge (branchname)

如果有衝突,手動將衝突的地方修改之後再次提交,

git add test.txt

git commit -m "conflict fixed"

git log --graph --pretty=oneline --abbrev-commit這個可以檢視分支的合併情況

git log --graph 檢視分支合併圖

最後,刪除無用的分支

git branch -d newtest

git merge --no-ff -m "merge with no-ff" branchname 實際開發中的合併

在實際開發中,我們應該按照幾個基本原則進行分支管理:

首先,master分支應該是非常穩定的,也就是僅用來發布新版本,平時不能在上面幹活;

那在哪幹活呢?幹活都在dev分支上,也就是說,dev分支是不穩定的,到某個時候,比如1.0版本發布時,再把dev分支合併到master上,在master分支發布1.0版本;

你和你的小夥伴們每個人都在dev分支上幹活,每個人都有自己的分支,時不時地往dev分支上合併就可以了。

合併分支時,加上–no-ff引數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward合併就看不出來曾經做過合併。

多人協作

工作中,首先建立乙個空的遠端倉庫,然後將本地的倉庫全部上傳到遠端倉庫,注意將主要分支和開發分支全部上傳。

當你從遠端倉庫轉殖時,實際上git自動把本地的master分支和遠端的master分支對應起來了,並且,遠端倉庫的預設名稱是origin。

要檢視遠端庫的資訊,用git remote:

$ git remote

origin

或者,用git remote -v顯示更詳細的資訊:

$ git remote -v

origin [email protected]:michaelliao/learngit.git (fetch)

origin [email protected]:michaelliao/learngit.git (push)

上面顯示了可以抓取和推送的origin的位址。如果沒有推送許可權,就看不到push的位址。

推送分支

推送分支,就是把該分支上的所有本地提交推送到遠端庫。推送時,要指定本地分支,這樣,git就會把該分支推送到遠端庫對應的遠端分支上:

$ git push origin master
抓取分支

多人協作時,大家都會往master和dev分支上推送各自的修改。

現在,模擬乙個你的小夥伴,可以在另一台電腦(注意要把ssh key新增到github)或者同一臺電腦的另乙個目錄下轉殖:

$ git clone [email protected]:michaelliao/learngit.git

cloning into 'learngit'...

remote: counting objects: 46, done.

remote: compressing objects: 100% (26/26), done.

remote: total 46 (delta 16), reused 45 (delta 15)

receiving objects: 100% (46/46), 15.69 kib | 6 kib/s, done.

resolving deltas: 100% (16/16), done.

當你的小夥伴從遠端庫clone時,預設情況下,你的小夥伴只能看到本地的master分支。不信可以用git branch命令看看:

$ git branch

* master

現在,你的小夥伴要在dev分支上開發,就必須建立遠端origin的dev分支到本地,於是他用這個命令建立本地dev分支:

$ git checkout -b dev origin/dev
現在,他就可以在dev上繼續修改,然後,時不時地把dev分支push到遠端:

$ git commit -m "add /usr/bin/env"

[dev 291bea8] add /usr/bin/env

1 file changed, 1 insertion(+)

$ git push origin dev

counting objects: 5, done.

delta compression using up to 4 threads.

compressing objects: 100% (2/2), done.

writing objects: 100% (3/3), 349 bytes, done.

total 3 (delta 0), reused 0 (delta 0)

to [email protected]:michaelliao/learngit.git

fc38031..291bea8 dev -> dev

一文教你看懂原型!!!

談到原型,我們都知道最重要的兩個屬性就是 proto 和prototype,那麼他們到底有什麼關係又到底是什麼呢,這一篇看完相信你就會有一些理解了。js中萬物皆物件,每個資料都會有乙個 proto 的屬性,這個屬性叫隱式原型。乙個物件 obj 的 隱式原型 proto 指向構造該物件 obj 的 建...

一文教你 Mysql資料備份

按照備份時對資料庫的影響範圍分為 cold backup 冷備 指在資料庫停止的情況下進行備份 offlinebackup 官方手冊稱為離線備份 warm backup 溫備 備份同樣在資料庫執行時進行,但是會對當前資料庫的操作有所影響,例如 加乙個全域性讀鎖以保證備份資料的一致性。按照備份後的檔案...

一文教你如何解讀Vintage

當我們在觀測資產最終損失和不同資產的風險差異時,經常會用到乙個指標,那就是vintage。這個指標的計算和展示與大多數指標有所不同,因為所需要的資料資訊並不單 於某乙個固定時間的切片資料,而是 於歷史多個時間節點的切片資料,所以它也攜帶了歷史資訊。vintage本身攜帶了這麼多資訊,我們該如何挖掘呢...