git日常使用總結
阿新 • • 發佈:2019-02-01
首先是介紹git的工作流程:
關於git下載配置ssh這些簡單騷操作就不一一講解了,在這裡我們著重記錄一些最基本和關於的git基本命令,真正高深的操作我後期通過自我學習和實踐會進一步補上,歡迎吐槽!!
git branch –set-upstream-to=origin/1.1.28 遠端倉庫建立連線(後面是本地分支)
git checkout -b 1.0.11 切換到本地分支
git pull 將伺服器程式碼拉到本地
git push origin HEAD:refs/for/master 提交到自己的分支
新建專案下載分支之後操作
git checkout -b 1.0.2 origin/1.0.2 程式碼切到自己分支並且和遠端分支建立聯絡
git add . 提交之前必須操作:
git commit -m ‘sssss’ 進行提交增加介紹
git push origin HEAD:refs/for/1.0.22 提交到自己的分支
git checkout – . 把所有對別人的更改都撤銷還原
之後檢視自己提交程式碼然後進行發連結 +1 之後自己 +2 提交即可完成一次完整的程式碼提交功能
當提前發生衝突時,需要找到衝突的地方判斷那些是需要保留的,哪些不需要可以直接刪除(詢問對方)
一般在提交程式碼的時候一定要留意是否是自己更改的程式碼,一般來說我們不介意擅自修改他人的程式碼,避免因為他人的誤操作造成程式碼問題,還有原生代碼一定要自我測試無問題通過之後方可提交貸遠端,其中主要步驟有:my 》change》點選
通過git命令提交程式碼之後,我們可以在git上面看到自己剛提交的程式碼(一般最直接和靠譜的方式就是根據版本號來區別)
之後需要將 直接記錄點開賦值地址發給組長或者上級進行加一操作,之後自己進行加2
下面主要說一些如何對比自己提交之後和提交之前做過的原生代碼修改和不同
查詢我們程式碼有哪些不同直接使用git diff可以進行檢視對比
可以通過命令history進行查詢自己之前所有的提交命令
可以之間在IEDA中點選圖示 show history進行對比即可
關於git使用建立版本庫:
$ mkdir learngit
$ cd learngit
$ pwd (用來顯示當前目錄)
/User/michael/learngit
在windows下使用一定要保證我們的目錄名(包含父目錄都不能包含中文)
git init 命令可以吧目錄程式設計git可以管理的倉庫
$ git init 可以直接吧倉庫建好 建成一個空的倉庫,同時多了一個.git目錄,但是一般預設是隱藏的。我們不能隨意進行更改,保證git 倉庫不被破壞
使用 ls -ah可以看到隱藏的檔案
使用windows我們必須保證使用notepad++來保證使用utf-8保證字元編碼,記事本傻的會導致編碼問題
初始化一個Git倉庫,使用git init命令。
新增檔案到Git倉庫,分兩步:
第一步,使用命令git add <file>,注意,可反覆多次使用,新增多個檔案;
第二步,使用命令git commit,完成。
git status檢視倉庫當前的狀態
git diff檢視我們修改的地方 (後面加上檔案的名稱就可以進行精確確定)
要隨時掌握工作區的狀態,使用git status命令。
如果git status告訴你有檔案被修改過,用git diff可以檢視修改內容
我們可以使用 git log來檢視我們之前的歷史操作 可以加上--pretty=oneline 可以版本號
返回上一版本 git reset -hard HEAD^
git reset -hard 版本號(可以回到某一個版本號(不一致完全寫全))
在此進行返回回退的程式碼是 git reflog 檢視版本號 可以再次進行回退
HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以檢視提交歷史,以便確定要回退到哪個版本。
要重返未來,用git reflog檢視命令歷史,以便確定要回到未來的哪個版本。
版本庫:工作區有一個隱藏的目錄.git 這是版本庫不屬於工作區
工作區:就是我們一般說的workspace
我們建立git版本庫時,git自動為我們建立了屋內一個master分支,所以,當執行
git commit操作就是網master分支提交更改
git add命令實際上就是把要提交的所有修改放到暫存區(Stage),然後,執行git commit就可以一次性把暫存區的所有修改提交到分支。
git diff HEAD -- readme.txt命令可以檢視工作區和版本庫裡面最新版本的區別:
git的檔案必須新增add到stage暫存區才能被提交到 commit中master
git checkout -- file可以丟棄工作區的修改:後面加上修改的檔名稱
在我們修改了檔案的內容,我們使用 修改之後沒有提交到暫存區,我們直接進行撤銷卡就可以恢復貸以前的版本
在我們進行修改並且提交到暫存區,又做了修改,現在撤銷之後回到新增到暫存區之後的狀態
撤銷命令 git checkout --檔名 就是撤銷到git commit git add 時的狀態
git如何撤銷新增的檔案
git add test.txt
git commit -m "add test.txt"
當我們不小心吧檔案刪除 rm test.txt
這時候有兩種操作直接進行刪除該檔案 直接執行github commit操作即可
可以使用撤銷 git checkout -- test.txt 恢復之前刪除的版本號
git checkout其實是用版本庫裡的版本替換工作區的版本,無論工作區是修改還是刪除,都可以“一鍵還原”。
建立dev分支,然後切換到dev分支
git checkout -b dev 相當於兩條命令
git branch dev
git checkout dev
git branch 檢視當前分支
git checkout master 可以直接切回master分支
git merge dev 吧dev分支的工作成果合併到master分支上
合併完成以後我們可以吧dev分支進行刪除 git branch -d dev
git branch 檢視剩餘分支,只剩下master分支
建立與合併分支
閱讀: 999264
在版本回退裡,你已經知道,每次提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git裡,這個分支叫主分支,即master分支。HEAD嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支。
一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點:
git-br-initial
每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長:
當我們建立新的分支,例如dev時,Git新建了一個指標叫dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支在dev上:
git-br-create
你看,Git建立一個分支很快,因為除了增加一個dev指標,改改HEAD的指向,工作區的檔案都沒有任何變化!
不過,從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次後,dev指標往前移動一步,而master指標不變:
git-br-dev-fd
假如我們在dev上的工作完成了,就可以把dev合併到master上。Git怎麼合併呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合併:
git-br-ff-merge
所以Git合併分支也很快!就改改指標,工作區內容也不變!
合併完分支後,甚至可以刪除dev分支。刪除dev分支就是把dev指標給刪掉,刪掉後,我們就剩下了一條master分支:
git-br-rm
真是太神奇了,你看得出來有些提交是通過分支完成的嗎?
下面開始實戰。
首先,我們建立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分支上正常提交,比如對readme.txt做個修改,加上一行:
Creating a new branch is quick.
然後提交:
$ git add readme.txt
$ git commit -m "branch test"
[dev fec145a] branch test
1 file changed, 1 insertion(+)
現在,dev分支的工作完成,我們就可以切換回master分支:
$ git checkout master
Switched to branch 'master'
切換回master分支後,再檢視一個readme.txt檔案,剛才新增的內容不見了!因為那個提交是在dev分支上,而master分支此刻的提交點並沒有變:
git-br-on-master
現在,我們把dev分支的工作成果合併到master分支上:
$ git merge dev
Updating d17efd8..fec145a
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 fec145a).
刪除後,檢視branch,就只剩下master分支了:
$ git branch
* master
因為建立、合併和刪除分支非常快,所以Git鼓勵你使用分支完成某個任務,合併後再刪掉分支,這和直接在master分支上工作效果是一樣的,但過程更安全。
Git鼓勵大量使用分支:
檢視分支:git branch
建立分支:git branch <name>
切換分支:git checkout <name>
建立+切換分支:git checkout -b <name>
合併某分支到當前分支:git merge <name>
刪除分支:git branch -d <name>
合併分支衝突:用git log --graph命令可以看到分支合併圖。
謝謝大家一起共勉,願每個人的努力都能有所回報!2018/2/23/ 19:51