git學習
git init 建立版本庫
git add 檔名 將檔案新增到暫存區
git commit -m "備註資訊" 將檔案提交到本地倉庫
git status 用於檢視當前版本庫的狀態。
git log 用於檢視歷史記錄。可以加上--pretty=oneline 減少輸出資訊。只留下最主要的資訊。
git reset --hard head~數字 數字是幾就回退到前幾個版本,也可以將~數字 換為 ^ 有幾個^就代表回退幾個版本 當你想要再返回之前版本時需要使用git reflog 命令檢視對應把版本的commit id 再使用 git reset --hard 提交id 來回覆到之前版本
git diff head -- 檔名 檢視版本衝突
git checkout -- 檔名 可以丟棄整個工作區回到沒有修改之前的狀態,前提是沒有加入到暫存區 用版本庫里的版本替換工作區的版本
git reset head 檔名 回到加入暫存區之前的狀態 再使用git checkout -- 檔名 前提是還沒有提交到版本庫
git reset --hard head~數字 這種方法可以使檔案回到之前的版本 前提是還沒有推送到遠端
git rm 檔名 用來刪除檔案。 並且需要git commit -m " " 否則git不知道你刪除了檔案 但是刪除時需要小心,如果你刪除了這個檔案那麼 你只能恢復到最新版本,你會丟失最近一次提交後你修改的內容。
要關聯乙個遠端庫,使用命令git remote add origin git@server-name:path/repo-name.git;
關聯後,使用命令git push -u origin master第一次推送master分支的所有內容;
此後,每次本地提交後,只要有必要,就可以使用命令git push origin master推送最新修改;
git branch -b dev 建立並切換到dev分支。 相當於 git branch dev 和 git checkout dev 兩個命令,git branch 可以檢視當前分支。
git鼓勵大量使用分支:
檢視分支:git branch
建立分支:git branch
切換分支:git checkout
建立+切換分支:git checkout -b
合併某分支到當前分支:git merge
刪除分支:git branch -d
git log --graph 用來查案git分支圖
合併分支時,加上--no-ff引數就可以用普通模式合併,合併後的歷史有分支,能看出來曾經做過合併,而fast forward合併就看不出來曾經做過合併。 git merge --no-ff -m "merge with no-ff" dev
檢視合併歷史git merge --no-ff -m "merge with no-ff" dev
master 應該是最穩定的版本,也就是只能用來發布新版本,而不能在上面幹活,幹活都在dev分支上,也就是平時開發用的,每個人都可以有自己的分支,然後時不時的往dev上合併就可以了。
bug分支。當需要修復bug的時候先使用git stash儲存現場工作 然後建立bug分支 再講bug分支合併到別的分支上 此時切換回正在開發的自己分支,git stash list 檢視暫存 然後git stash pop 恢復工作現場。
future分支 開發乙個新feature,最好新建乙個分支;
如果要丟棄乙個沒有被合併過的分支,可以通過git branch -d 強行刪除。
git remote 顯示遠端庫資訊 git remote -v 顯示更詳細的遠端庫資訊
git push origin 用於提交本地倉庫到遠端
因此,多人協作的工作模式通常是這樣:
首先,可以試圖用git push origin 推送自己的修改;
如果推送失敗,則因為遠端分支比你的本地更新,需要先用git pull試圖合併;
如果合併有衝突,則解決衝突,並在本地提交;
沒有衝突或者解決掉衝突後,再用git push origin 推送就能成功!
如果git pull提示no tracking information,則說明本地分支和遠端分支的鏈結關係沒有建立,用命令git branch --set-upstream-to origin/。
這就是多人協作的工作模式,一旦熟悉了,就非常簡單。
小結檢視遠端庫資訊,使用git remote -v;
本地新建的分支如果不推送到遠端,對其他人就是不可見的;
從本地推送分支,使用git push origin branch-name,如果推送失敗,先用git pull抓取遠端的新提交;
在本地建立和遠端分支對應的分支,使用git checkout -b branch-name origin/branch-name,本地和遠端分支的名稱最好一致;
建立本地分支和遠端分支的關聯,使用git branch --set-upstream branch-name origin/branch-name;
從遠端抓取分支,使用git pull,如果有衝突,要先處理衝突。
git rebase 可以變基,rebase操作可以把本地未push的分叉提交歷史整理成直線 ,將雜亂的git歷史變成一條直線
命令git tag 用於新建乙個標籤,預設為head,也可以指定乙個commit id;
命令git tag -a -m "blablabla..."可以指定標籤資訊;
命令git tag可以檢視所有標籤。
命令git push origin 可以推送乙個本地標籤;
命令git push origin --tags可以推送全部未推送過的本地標籤;
命令git tag -d 可以刪除乙個本地標籤;
命令git push origin :refs/tags/可以刪除乙個遠端標籤。
點選github上的fork就可以在自己的賬號下轉殖乙個別人的倉庫了,然後再從自己的倉庫中**,這樣才能推送到遠端要不然沒有許可權無法推送
git設定忽略檔案如果是已經設定了忽略檔案的,檔案你想要強制給它新增到git中 你需要使用git add -f 來強制新增
或者你發現,可能是.gitignore寫得有問題,需要找出來到底哪個規則寫錯了,可以用git check-ignore命令檢查: git check-ignore -v
.gitignore 檔案需要放到版本庫中 並且可以對.gitignore檔案進行版本控制
還有設定別名和搭建git倉庫我就不想看了,鏈結上有說,累,而且在實際開發中我都是用idea中的git去日常操作,如果你們要是有什麼理解不清楚的給你們鏈結,有git教程。
GIT基本概念
工作區是個工作目錄,實質上就是我們的在開發過程中對其進行新增 編輯的源 包括標頭檔案 原始檔和配置檔案 在工作區中有乙個隱藏檔案 git 它不屬於工作區,而是git版本庫。該檔案下包括很多其他檔案,其中重要的是暫存區 git index 物件庫 git objects 分支 master分支和其他分...
git 基本概念
理解git首先要對它自己的主要概念理解清楚,這個我看了一邊後又重新梳理了一邊思路,提取了幾個自己很容易誤解和難區分的概念,在這裡詳細介紹下 工作區 就是你在電腦裡能看到的目錄,比如我的learngit資料夾就是乙個工作區。暫存區 工作區有乙個隱藏目錄.git,這個不算工作區,而是git的版本庫。gi...
git基本概念
為了便於管理,git要求每個遠端主機都必須指定乙個主機名。git remote命令就用於管理主機名。不帶選項的時候,git remote命令列出所有遠端主機。一旦遠端主機的版本庫有了更新 git術語叫做commit 需要將這些更新取回本地,這時就要用到git fetch命令。預設情況下,git fe...