git命令理解與使用

DB7B243E-5702-4D8C-8024-46965A1F8C4B.png
本地倉庫 = 工作區 + 版本區
版本區(版本庫)即.git文件,暫存區(stage) + 分支(master) + 指針Head
1.配置信息
`git config --global user.name `"你的名字" 讓你全部的Git倉庫綁定你的名字
`git config --global user.email` "你的郵箱" 讓你全部的Git倉庫綁定你的郵箱
2.正常流程
`git clone + 倉庫地址` 下載克隆文件
`git init ` 原本本地倉庫只包含著工作區,這是最常見的工作狀態。此時,git init一下,表示在本地區域創建了一個.git文件,版本區建立。
`git add .` 表示把工作區的所有文件全部提交到版本區里面的暫存區,當然你也可以通過 git add ./xxx/ 一條一條分批添加到暫存區。
`git commit -m "xxx" `把暫存區的所有文件提交到倉庫區,暫存區空空蕩蕩。
`git remote add origin https://github.com/name/name_cangku.git ` 把本地倉庫與遠程倉庫連接起來。
`git push -u origin master ` 把倉庫區的文件提交到遠程倉庫里。
`git push -u origin <其他分支>`  把其他分支提交到遠程倉庫
`git pull` 把最新的提交從遠程倉庫中抓取下來,在本地合并,和git push相反
3.查看改變和歷史
`git status`查看當前倉庫的狀態
`git diff `查看文件修改的具體內容
`git diff HEAD -- readme.txt` 命令可以查看工作區和版本庫里面最新版本的區別:
`git log` 顯示從最近到最遠的提交歷史
`git reflog` 顯示命令歷史
`git log --graph` 查看分支合并圖
`git remote` 查看遠程庫的信息,會顯示origin,遠程倉庫默認名稱為origin
`git remote -v` 顯示更詳細的信息
3.回退修改版本操作

Git必須知道當前版本是哪個版本,在Git中,用HEAD表示當前版本,,
上一個版本就是HEAD^,上上一個版本就是HEAD^^
當然往上100個版本寫100個^比較容易數不過來,所以寫成HEAD~100

`git reset HEAD <file>`     可以把暫存區的修改撤銷掉,重新放回工作區。
`git reset --hard HEAD^`     回溯版本當前版本, 
`git reset --hard + 版本號`  回溯版本,版本號在commit的時候與master跟隨在一起。
`git rm < filename >` 刪除版本庫的文件。
`git checkout -- <file>` 撤銷命令,用版本庫里的文件替換掉工作區的文件
1. 修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態。
2. 已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。
4.分支操作
`git checkout -b <分支名字>或者git switch -c <分支名字>` 創建+切換分支:
`git branch` 查看當前所有分支
`git branch <分支名字>` 創建分支
`git checkout <分支名字>或git switch <分支名字>` 切換到分支
`git merge <分支名字> ` 合并分支]
 `git merge --no-ff -m "備注信息" <分支名字>` 請注意--no-ff參數,表示禁用Fast forward,因為本
次合并要創建一個新的commit,所以加上-m參數,把commit描述寫進去,合并后,我們用git log看看分支歷史。
`git branch -d <分支名字>` 刪除分支,有可能會刪除失敗,因為Git會保護沒有被合并的分支
`git branch -D + <分支名字>` 強行刪除,丟棄沒被合并的分支
`git checkout -b dev` //新建并切換到本地dev分支
`git pull origin dev`  //本地分支與遠程分支相關聯
//在本地新建分支并推送到遠程
`git checkout -b test`
`git push origin test`    //這樣遠程倉庫中也就創建了一個test分支
5.凍結操作(進行的工作沒有做完,還不能提交)
`git stash` 當有其他任務插進來時,把當前工作現場“存儲”起來,以后恢復后繼續工作
`git stash list` 查看你剛剛“存放”起來的工作去哪里了
`git stash apply` 恢復卻不刪除stash內容
`git stash drop` 刪除stash內容
`git stash pop `恢復的同時把stash內容也刪了
5.標簽操作
`git tag` 查看所有標簽,可以知道歷史版本的tag
`git tag <name>` 打標簽,默認為HEAD。比如git tag v1.0
`git tag <tagName> <版本號>` 把版本號打上標簽,版本號就是commit時,跟在旁邊的一串字母數字
`git show <tagName>` 查看標簽信息
`git tag -a <tagName> -m "<說明>" `創建帶說明的標簽。-a指定標簽名,-m指定說明文字
`git tag -d <tagName>` 刪除標簽
`git push origin <tagname>` 推送某個標簽到遠程
`git push origin --tags `一次性推送全部尚未推送到遠程的本地標簽
`git push origin :refs/tags/<tagname>`刪除遠程標簽<tagname>

注意

  • SSH警告
    當你第一次使用Git的clone或者push命令連接GitHub時,會得到一個警告,如下所示,這是因為Git使用SSH連接,而SSH連接在第一次驗證GitHub服務器的Key時,需要你確認GitHub的Key的指紋信息是否真的來自GitHub的服務器,輸入yes回車即可。
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?

Git會輸出一個警告,告訴你已經把GitHub的Key添加到本機的一個信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
  • 哪些分支需要推送
  • master分支是主分支,因此要時刻與遠程同步;
  • dev分支是開發分支,團隊所有成員都需要在上面工作,所以也需要與遠程同步;
  • bug分支只用于在本地修復bug,就沒必要推到遠程了,除非老板要看看你每周到底修復了幾個bug;
  • feature分支是否推到遠程,取決于你是否和你的小伙伴合作在上面開發。

參考文章:https://www.liaoxuefeng.com/wiki/896043488029600
http://www.lxweimin.com/p/2b3b23d6166c
http://www.lxweimin.com/p/c2ec5f06cf1a

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。