git基礎命令
阿新 • • 發佈:2021-01-12
git全流程
伺服器:Ubuntu
使用git前準備工作:
下載git之前先更新: apt-get update
安裝git: apt-get install git
建立本地倉庫: mkdir test
git初始化: cd test git init
生成公鑰和私鑰: ssh-keyge
將公鑰新增到github裡。
git的使用
分支操作:
克隆倉庫:git clone
建立本地分支:git branch 分支名
建立本地分支並切換到分支:git checkout - b 分支名
根據遠端倉庫建立本地分支:git branch 分支名 origin/遠端分支名
切換分支:git checkout 分支名
檢視所有分支:git branch
刪除分支:git branch -D 分支名
拉取遠端分支程式碼:git pull
在當前分支合併XX分支:git merge 分支名
將本地分支推送到遠端:git push origin 遠端分支名
版本管理:
檢視狀態:git status
新增到暫存區:git add 檔案/資料夾
放棄修改操作:git checkout - -檔名
新增到本地分支:git commit "備註資訊"
檢視歷史版本:git log (想看簡潔版的帶上引數,--pretty=online)
回退歷史版本:git reset 版本號
檢視歷史操作:git reflog
檢視檔案的修改:git diff 檔名
刪除檔案:git rm 檔名
git運用場景
場景一:
當你正在寫程式碼的時候突然線上伺服器出現了個bug,這時候你不得不趕快處理線上的bug。一般我們會將正在寫的程式碼,git add, git commit 一下,再切換到bug分支解決bug。解決完成以後git commit bug分支的程式碼。在切換回來。除了這樣的操作,我們還有一種可選方案:
1 .正在寫東西,突然有bug需要解決。
git stash #將當前的程式碼放在一個新的臨時區/暫存區。以免帶入其他分支。
git checkout bug #切換到bug分支
vim views.py #修改程式碼,解決bug
git add views.py #新增修改內容到暫存區
git commit "change_bug" #提交程式碼到本地倉庫
git checkout master #切換都master分支
git merge bug #將bug分支的修改後的程式碼合併到master上
git push origin master #將本地master分支的程式碼推到遠端
git checkout dev #切換到修改程式碼前的分支(原來的程式碼在dev分支上寫的)
git status #檢視dev分支的狀態,發現原來對程式碼的修改沒有了(寫了半天,沒有儲存,心裡很慌有沒有啊。。。)
more readme #檢視更久遠的操作,發現依然沒有。(這是真的有點慌,甚至有點小絕望啊)
git stash list #檢視臨時儲存的檔案列表(我擦,找到了,過山車般的體驗)
git stash apply #恢復到上次儲存的位置(終於找到你,還好我沒放棄)
git status #檢視狀態,發現一切和好如初(這個世界完美了。可以繼續愉快的寫程式碼了)
git stash的一些其他操作:
git stash drop #刪除最久的那個使用了git stash 儲存的臨時狀態
git stash apply [email protected]{0} #恢復到指定的那個臨時狀態
git stash pop #恢復並刪除上一個臨時狀態
(ps: 1.git stash apply 恢復後,stash內容並不會刪除,需要使用git stash drop 來刪除
2.另一種方式是使用git stash pop, 刪除的同時把stash的內容也刪除了)
場景二:
多人合作開發,最後把所有人的程式碼合併到一起,然後測試並推到master中:
git add * git commit "success" #將完成的程式碼新增到本地倉庫,等待合併
checkout maste #切換到本地master分支
git pull #將遠端master分支的程式碼下載到本地
git merge dev #將本地dev中開發的程式碼合併到master中(這時候發現有衝突。自己的程式碼和master裡最新的程式碼有不一致的地方,不要慌,我和別人同時修改了原文程式碼導致的這種問題。下面需要進行手動合併。)
git status #檢視檔案狀態,看都有哪些檔案有衝突
git diff views.py #檢視檔案衝突的具體情況
vim views.py #手動修改檔案
git add views.py git commit "change_merge" #新增到本地倉庫
git push origin master #推送到遠端master分支