首先進入乙個目錄之後,使用這個命令是先初始化乙個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本身攜帶了這麼多資訊,我們該如何挖掘呢...