平時在android studio開發android專案,習慣了點選右鍵或圖示直接拉新fetch,pull,commit和push。但是必要的時候還得在終端輸入命令列。比如正在開發新版本v3.0,老闆說上個版本的某個地方操作容易誤導客戶,需要及時改回來發版。這時就需要建立新的分支2.1,回退到上個穩定版本2.0穩定版本tag進行修改,同時正在開發的版本也需要修改,那麼可以通過git cherry -pick 來進行同步修改。
好了,悠哉夠了,就認真記git版本控制的原理和常用指令說明。下次懷疑人生的時候就不要再請教度娘了,自己動手,豐衣足食。
1.git版本控制優勢介紹
git是採用分布式架構。每乙個開發人員的電腦上都有乙個local repository,所以即使沒有網路也一樣可以commit,檢視歷史版本記錄,建立項 目分支等操作,等網路再次連線上push到server端。svn有乙個**伺服器,屬於集中式。
git把內容按元資料方式儲存,而svn是按檔案:因為.git目錄是處於你的機器上的乙個轉殖版的版本庫,它擁有中心版本庫上所有的東西,例如標籤,分支,版本記錄等。.git目錄的體積大小跟.svn比較,你會發現它們差距很大。
版本庫(repository):svn只能有乙個指定**版本庫。當這個**版本庫有問題時,所有工作成員都一起癱瘓直到版本庫維修完畢或者新的版本庫設立完成。而 git可以有無限個版本庫。或者,更正確的說法,每乙個git都是乙個版本庫,區別是它們是否擁有活躍目錄(git working tree)。
回退版本方便。
2.git常用操作指令說明
git常用操作指令說明
指令名稱
指令說明
git init
初始化建立本地倉庫
git add filename
新增某個檔案
git add .
新增所有修改的檔案
git commit -m 「提交說明」
提交當前暫存區的檔案
git merge dev
合併分支
git checkout -b dev
新建乙個dev分支
git branch -d dev
刪除dev分支
git branch
檢視本地分支
git branch -r
檢視遠端分支
git fetch origin 遠端分支x:本地分支x
拉取遠端分支,需要chenkout進行切換
git push origin --delete dev
刪除遠端分支
git status
檢視當前修改狀態
git stash
分支切換前不想帶到別的分支,又不想提交髒資料的時候使用
(親測,親測偶爾不靈,丟失了好幾次tat,建議最好還是提交了再切換分支)
git tag -a v1.0 -m 「version 1.0」
建立了本地乙個版本 v1.0 ,並且新增了附註資訊 'version 1.0'
git tag
檢視標籤
git show v1.0
檢視某個版本的附註
git push origin --tags
tag遠端推送
git tag -d v1.0
刪除本地標籤
git push origin:refs/tags/v1.0
推送的空的同名版本到線上,達到刪除線上版本的目標
git cherry-pick
可以選擇某乙個分支中的乙個或幾個commit(s)來進行操作
git stash
暫存應用還原暫存區,最後一次stash的資料
git stash list
檢視stash的記錄:
stash@
stash@
stash@
git stash clear
清除暫存區記錄
git pull --rebase
= git fetch + git rebase
減少提交記錄中多了merge無用提交記錄
git rebase - i head~2
合併本地最近幾次提交記錄,如果中間出現問題,可以退出或者強制退出,git rebase --abort結束上一次的rebase操作
git branch --set-upstream-to=origin/remote-branch your_local_branch
關聯本地分支和遠端分支
git checkout -b "new_branch" origin/"remote_branch"
新建乙個分支和遠端分支關聯
git log --oneline
檢視提交記錄,一行顯示基本資訊
補充說明:git cherry-pick
解決衝突後:git cherry-pick --continue
取消cherry-pick:git cherry-pick --abort
git cherry-pick可以選擇某乙個分支中的乙個或幾個commit(s)來進行操作。例如,假設我們有個穩定版本的分支,叫
v2.0
,另外還有個開發版本的分支
v3.0
,我們不能直接把兩個分支合併,這樣會導致穩定版本混亂,但是又想增加乙個
v3.0
中的功能到
v2.0
中,這裡就可以使用
cherry-pick
了。回滾到穩定版本tag:
git tag
git show v2.0
git reset --hard tagid
最近注意github的綠格仔,提交了沒有顯示綠色,原因是設定本地git的uer.name 和user.email可能和github上設定的不一樣,改成一樣的就可以了。
git config --global user.name yourname
git config --global user.email youremail
tips: 關聯遠端倉庫的步驟,注意設定user.name 和 user.email和遠端倉庫中設定的一樣,使用ssh秘鑰配置關聯方式:
git config --global user.name yourname
git config --global user.email youreamil
git config user.name 檢視你本地git倉庫全域性設定的名稱
git config user.email 檢視你本地git倉庫全域性設定的郵箱
生成秘鑰:複製公鑰ssh-key公布出去:
ssh-keygen -t rsa -c "youremail"
Git版本控制的原理
工作目錄 working directory 暫存區 stage index 資源庫 repository或git directory 遠端的git倉庫 remote directory workspace 工作區,就是你平時存放專案 的地方 index stage 暫存區,用於臨時存放你的改動,事...
git 版本常用控制命令
1.git checkout b iss53 等價與兩條命令 git branch iss53 先建立分支 git checkout iss53 2.git commit a m 修改的說明 等價於兩條命令 git add git commit m 修改的說明 3.git branch 顯示有哪些分...
版本控制 Git和SVN
一 git和svn的區別 git不僅僅是個版本控制系統,它也是個內容管理系統 cms 工作管理系統等。如果你是乙個具有使用svn背景的人,你需要做一定的思想轉換,來適應git提供的一些概念和特徵。所以,這篇文章的主要目的就是通過介紹git能做什麼 它和 svn在深層次上究竟有什麼不同來幫助你認識它。...