git使用和常見命令
1、剛下載安裝完git後,初次配置:
// 先設定郵箱和使用者名稱,用於提交的時候驗證的
git config --global user.name "xxx"
git config --global user.email "xxx"
2、準備一個要clone的專案(碼雲、github、gitlab都可以),比如連結地址為: https://gitee.com/ xxxxxx.git (這個只是示範,不是真實有效的地址)
3、找一個空目錄,用於存放程式碼檔案的,在目錄中右鍵,選擇git bash
。調出命令面板。執行以下語句:
git init // 初始化一個空倉庫 git remote add origin https://gitee.com/ xxxxxx.git // 關聯到遠端倉庫(這裡需要換成自己的專案地址) git pull origin master // 獲取遠端倉庫內容 pull就是獲取的命令 或 --------------------------------------------------------------------- git clone https://gitee.com/ xxxxxx.git // 如果不用上面的語句,也可以直接執行clone命令。效果和上面的命令一樣。
如果是clone私有的專案,可能需要你輸入帳號密碼,輸入後會自動把專案下載下來。
4、通常養成一個好的習慣,在下載程式碼後,新建一個自己的分支,再去修改檔案的內容,通常不要直接在master(預設分支)
上直接開發。(至於為什麼要建立那麼多分支進行開發,也不是一兩句說的清楚的)
執行以下語句,建立並切換到dev_test分支(注意圖中紅色圈住的區別,意思就是你當前在哪個分支下)
git checkout -b dev_test
我們也可以試下,建立一個已存在的分支
// 分支相關命令: git branch // 檢視分支 git branch dev_test // 建立一個名為dev_test的分支 git checkout dev_test // 切換到名為dev_test的分支 git checkout -b dev_test // 建立並切換到dev_test的分支(常用) git merge dev_test // 把dev_test的分支合併到當前分支 git branch -d dev_test 刪除名為dev_test的分支 git branch -D dev_test //強行刪除一個名為dev_test的分支
5、在分支上(或者在master上)修改好了檔案的內容,準備提交到遠端倉庫。可以通過命令檢視修改的內容和狀態
git status // 檢視檔案狀態 //(看到紅色的就是已經修改過的檔案,而且沒新增到倉庫中) // (綠色的代表修改過的檔案,已經新增到本地倉庫,還沒提交到遠端倉庫) git add . // 把所有修改過的檔案,把需要提交的檔案打包起來 或者執行 git add -A // 和git add .效果一樣 // 這時候在執行git status就會看到檔案都變綠色了 git commit -m '本次提交的備註' // 剛才的add .只是把所有檔案打包起來,git commit 才是提交到本地倉庫,-m 後面是本次提交檔案的備註 git push origin dev_test // push 把本地倉庫的內容推送到遠端倉庫 // origin 這個是預設的 // dev_test 代表dev_test分支,剛才我們是建立了dev_test分支,如果想推送到其他分支,就改成其他分支名稱即可
如果不出意外,會成功提交,可以到自己專案那裡,找到對應的分支檢視是否已經推送上去。
當然意外還是會有的,比如和你一起開發的人,比你早推送了一個版本到遠端倉庫中,那麼你在推送的時候,會報一個錯誤,提示需要先合併程式碼(注意只是合併程式碼,不是合併分支)如:
如果線上的程式碼,沒有衝突,那麼pull下來後,你就可以重新執行git push origin master
命令,把程式碼提交上去了(通常git會幫我們合併一些程式碼,並不會造成衝突)。當然還會有衝突的情況(比如2個人同時修改了同一個檔案的同一個地方),那麼使用pull命令就會變成這樣:
這時候就可以全域性搜尋一下>>>>>
這個代表衝突開始的地方
解決衝突也很簡單,只要保留其中一個地方就可以了。把<<<<開頭到 >>>>結尾的地方,改成正確的程式碼,然後重新執行 git add .
, git commit -m '備註'
, git push roigin master
。 重新推送上去就可以了
6、假設我們開發的dev_test分支測試通過了,需要合併到master分支
那麼就執行切換分支的命令,
1)切換到master分支
2)在master分支下 使用 git pull
確保master分支的程式碼是最新的
3)使用合併分支的命令 git merge dev_test
4)然後在使用git push origin master
推送到遠端倉庫的master分支上
7、關於git的一些拓展
1)假設修改的檔案修改錯了。這次並不想提交這個檔案
- 解決方法1:刪除該檔案,在使用
git add .
- 解決方法2:先使用
git add .
然後執行 git resert head 需要撤回的檔名git reset head 需要撤回的檔名
2)關於一些一直都不想提交的檔案(比如使用vscode的時候,會有一個
.vscode的資料夾,和程式碼無關,不想提交到遠端倉庫,可是又不希望每次都剔除)
- 可以使用預設的一個檔案,新增要排除的東西
.gitignore
檔案。可能在window下不能直接建立,那就在git bash 中,使用touch .gitignore
。就會發現多了這麼一個類似txt檔案。然後在裡面新增需要剔除的內容,一行一個 - 比如:這樣就可以一勞永逸,不用每次都擔心把額外的檔案提交上去了(碼雲或者其他平臺已經有很多gitignore檔案模版,在建立專案的時候可以留意下)
3)關於git的其他一些命令
- 檢視檔案修改的內容:
.git diff 檔名
- 有時候自己改了很多地方,可是並不像儲存,想重新下載一份線上的程式碼:
git fetch --all
git reset --hard origin/master
git pull
- 臨時儲存工作區(用的相對較少)
git stash //把當前的工作臨時儲存起來,然後自己切換分支做其他的事情
git stash list //檢視儲存的工作區列表
git stash pop //恢復最近的一次工作,並且刪除記錄(常用)
git stash apply [email protected]{id} //恢復指定id的工作,不過不會刪除記錄
git stash drop //刪除
- 標籤
git tag <name> 為當前分支打一個 name 的標籤
git tag <name> 1586156 為歷史提交打標籤 1586156為歷史提交的一個id號
git tag 檢視標籤
git push origin <tagname>可以推送一個本地標籤;
git push origin --tags可以推送全部未推送過的本地標籤;
git tag -d <tagname>可以刪除一個本地標籤;
git push origin :refs/tags/<tagname>可以刪除一個遠端標籤。
git show <name> 檢視這個tag對應的id的資訊
- 版本控制(重點)
git log // 檢視最近提交的版本號
git reset --hard HEAD^ (回退上一個版本,^^回退2個版本)
git reset --hard 315615 // 315615是在git log 中可以看到的
// 回退指定的版本號id(這裡的id在git log中可以看到,版本id只需要取前幾位數git就能識別出來了)
git reflog // 記錄每一次的命令
- 記住密碼(如果你用的不是ssh的話,每次提交 / clone 程式碼都要輸入帳號密碼)
在C盤中的使用者對應使用者的資料夾下找到
.gitconfig
追加:
[credential]
helper=store
或者終端執行
git config --global credential.helper store
這樣就會使用記住密碼