簡介:本文章注重與實際和理論相結合,簡述git在實際工作的常用操作,以及工作流程。
理解git的結構是本文的重點之一,是作為git操作命令和git工作流的基礎。
如圖所示:本地git分3部分,第一部分工作區(work),也是就我們的本地工作資料夾。第二個就是暫存區(stage/index),第三個就是我們的本地分支。
例如 git add ./ 就是把所有本地工作去的檔案新增到暫存區,而git commit -m 「提交」 這個命令就是把暫存區的檔案全部提交到本地分支,最後git push 就是把本地的分支推送到遠端分支。
下面我們就用sourcetree 形象的表象給大家看
當我們在資料夾中(工作區),新增乙個陸雪琪的txt。那麼sourcetree軟體中的工作副本變化就出現了陸雪琪。
命令檢視 untracked files:就是沒有追蹤的檔案意思,說是沒加入了暫存區。沒版本控制的意思
然後我們執行命令 git add ./ ,就是把工作區的檔案提交到暫存區裡面。如圖所示:陸雪琪就去到了暫存區裡面了(暫存區的變化)
再看看命令 git status:陸雪琪檔案已經變綠了,文字也變成 changes to be committed ,意思就是檔案已經提交到暫存區,但是還沒提交到本地分支
然後我們 在執行命令 git commit -m 「提交」,這個時候就是把暫存區的檔案提交到本地分支。如圖所示:暫存區的陸雪琪不見了,然後提交那裡有乙個1,就是說本地分支有乙個更新還沒提交到遠端倉庫。這個時候,只要我們git push 就可以推送到遠端了。
我分別提交了3次修改如圖所示
然後我利用git reset 回滾到第一次修改,如圖所示:第二,第三次修改都消失了。
git reset –soft (預設值)
–soft 這意味著index(暫存區),working copy(工作區)都不會做任何變化,這是head指向 還原的 commit (id),即係分支還原成 commit (id)的分支。
–hard 工作區,暫存區,和本地分支都還原成 commit (id)那個分支了(head指向 commit (id)那個分支了)
working copy(工作區)不會做任何變化, index(暫存區)還原成commit (id)的內容。這是head指向 還原的 commit (id),即係分支還原成 commit (id)的分支。
這裡補上2張sourcetree命令關係圖
送上一張git命令圖
git理解大致流程
所謂分布式,就是每個開發者的本地客戶端都是乙個完整的倉庫,都能記錄歷史版本資訊,不需要聯網也可以生成版本記錄,也可以快速回退到某個版本。如果只有乙個人開發,可以不把本地歷史版本記錄上傳到 伺服器,但如果多人協同開發則需要。檢視當前修改的檔案處於哪乙個區域 紅色 工作區,綠色 暫存區,看不見 已經提交...
深度理解git版本控制
什麼是git git是乙個c語言編寫分布式版本控制系統。不需要 伺服器,不需要聯網 對應的是 集中式的版本控制系統是需要 伺服器的,版本庫是放在 伺服器的,而分布式的版本控制的優點就是沒有 伺服器,每個電腦都是乙個完整的版本庫。這樣,你工作的時候,就不需要聯網了,因為版本庫就在你自己的電腦上 類似系...
非同步與執行緒深度解析
注 一般人們都把非同步與同步做比較,今天我們把非同步與執行緒做比較。請大家多多指教 批評。最近用c framework 2.0 寫了乙個系統,這個系統用了很多非同步和執行緒。當我用異常或執行緒操作 更新控制項資訊的時候會提示乙個異常資訊 執行緒間操作無效,從不是建立控制項的執行緒訪問控制項 以前用也...