git及開發(fā)工作流的詳細講解

git 基本操作

1.安裝與配置

下載安裝

  • git下載地址 根據(jù)自己的平臺下載,如果是windows,下載的安裝包一直下一步就可以了

配置基本

  • 一把我們會選擇用戶級別的配置 --global
# 當前項目配置文件 ./.git/config
git config --local user.name "your name"
git config --local user.email "email"

# ~/.gitconfig
git config --global user.name "your name"
git config --global user.email "email"

# 系統(tǒng)配置文件 /etc/.gitconfig
git config --system user.name "your name"
git config --system user.email "email"

2.初始化git倉庫

  • 本地初始化倉庫

    • 創(chuàng)建一個項目(空的文件夾)或者已有的項目,在終端中(CMD、等)打開這個項目

    • 執(zhí)行初始化git倉庫命令

      • git init
        
  • 克隆遠程已有的項目

    • 在終端中打開你要存放這個項目的目錄

    • 執(zhí)行克隆命令

      • # url 是遠程倉庫的地址
        git clone [url]
        

3.開發(fā)操作(工作區(qū)、暫存區(qū)、版本庫)

工作區(qū)

  • 工作區(qū)就是被git管理的目錄下有新增文件、已經(jīng)跟蹤的文件內(nèi)容有變化的區(qū)域

  • git會自動監(jiān)測被改動的文件

  • 撤銷修改

    # 撤銷改動的語法
    git checkout -- 文件名
    
  • 隱藏修改內(nèi)容

    # 臨時保存
    git stash save -a 注釋
    
    # 查看臨時保存的記錄
    git stash list
    
    # 恢復(fù),num是可選項,通過git stash list可查看具體值。只能恢復(fù)一次,恢復(fù)完之后就會把這次的記錄刪除
    git stash pop stash@{num}
    
    # 恢復(fù),num是可選項,通過git stash list可查看具體值??苫貜?fù)多次
    git stash apply stash@{num}
    
    # 刪除 保存的記錄
    git stash drop stash@{num}
    
    # 刪除所有的記錄
    git stash clear
    

暫存區(qū)

  • 被git跟蹤并且添加到緩存里面的文件

  • 將工作區(qū)的內(nèi)容添加到暫存區(qū)

    # 語法
    git add 文件名
    
    # 示例 使用 . 表示當前目錄下面的所有文件(包括子目錄里面的所有文件)
    git add .
    
    # 添加指定的文件 xxx.txt yyy.txt README.md
    git add xxx.txt yyy.txt README.md
    

版本庫

  • 緩存區(qū)東內(nèi)容被提交

    # 將暫存區(qū)的內(nèi)容提交到版本庫
    git commit -m "這次提交的注釋"
    
  • 查看提交記錄

    # 簡介顯示最近提交
    git reflog
    
    # 詳細顯示所有提交記錄
    git log
    
  • 版本庫回退

    # 選擇以前提交的版本庫
    # 版本號可以在提交記錄中查詢
    git reset --hard 版本號
    
  • 合并(修改)提交記錄

    git rebase -i 版本號
    

分支

  • 新建分支

    git branch 分支名字
    
  • 查看已有的分支

    git branch
    
  • 切換分支

    git checkout 分支名字
    
    # 創(chuàng)建并切換分支
    git checkout -b 分支名字
    
  • 刪除分支

    git branch -d 分支名字
    
    # 強制刪除
    git branch -D 分支名字
    
  • 合并分支

    git meger 被合并的分支名字
    
  • 合并分支可能產(chǎn)生沖突

    • 產(chǎn)生沖突會有warning:提示內(nèi)容很詳細
    • 產(chǎn)生的沖突需要我們自己解決,可以通過git status查看那么文件有沖突
    • 找到有沖突的文件手動解決沖突并提交 git commit -am "解決沖突"

遠程倉庫

  • 一般我們會用 SSH地址,這樣可以省去使用的時候頻繁輸入賬號密碼

    配置git-ssh

  • 遠程分支:托管在github、gitlab、coding、碼云等這樣的第三方服務(wù)層庫上的倉庫

  • 與遠程倉庫建立連接

    git remote add 遠程倉庫別名 遠程倉庫地址
    
    # git clone 的方式不用配置
    
  • 向遠程倉庫提交記錄

    git push 遠程倉庫別名 分支名
    
  • 從遠程倉庫拉去最新的提交記錄

    # 一步拉去
    git pull 遠程倉庫別名 分支名
    
    # 兩部拉去
    git fetch 遠程倉庫別名 分支名
    #有沖突解決沖突
    git git merge 遠程倉庫別名/分支名
    
    
    # 或者 下面會用到rebase的講解
    git rebase 遠程倉庫名字/分支名
    
  • 遠程倉庫操作

    • 查看已有的遠程倉庫

      # 遠程倉庫別名列表
      git remote
      
      # 帶有url的
      git remote -v
      
    • 刪除遠程倉庫

      git remote rm [別名]
      
    • 修改

rebase(變基)

  • 場景一:多個記錄整合成一個記錄

    git rebase -i 某一次的幾條記錄  # 從某一次的提交記錄信息 合并到當前提交記錄
    git rebse -i HEAD~3  # 最近的三次提交記錄合并
    
    # 出現(xiàn) vi 編輯區(qū)域
    根據(jù)下面提示選擇
    一般我們會將pick 修改為 s
    
    # 保存退出  再次出現(xiàn) vi 的編輯區(qū)
    列出要合并的提交記錄
    例如修改為  v1 & v2 & v3
    
    # 保存
    git log # 查看提交記錄
    
    • 注意 盡量不要合并已經(jīng)提交到遠程倉庫的(提交記錄)
  • 場景二:

    • master c1 - c2 - c4 -c5

      dev C3

    • Master c1 - c2 - c3 -c4 -c5

    將c3在其他分支上的提交記錄 合并到master 分支上

    git checkout dev
    git rebase master  # 變更當前dev分支的基
    
    git checkout master
    git merge dev
    
  • 場景三:遠程拉取代碼 會有合并沖突 產(chǎn)生分叉

  • # 可能產(chǎn)生記錄分叉
    git pull origin dev
    
    # 不產(chǎn)生記錄分叉
    git fetch origin dev
    git meger origin/dev
    
    git rebase origin/dev
    
  • 注意事項

    • git rebase 產(chǎn)生沖突怎么辦?
    • 會提示
        1. 解決沖突
        1. git add .
        1. Git rebase --continue

標簽tag

  • 開發(fā)完成到一定階段的打包

    # 提交記錄的版本號 默認是當前最新的提交記錄 也可以指定某次提交記錄的版本號標識
    git tag -a v1.4 -m "描述信息" [提交記錄的版本號]
    
  • 將tag上更新到遠程倉庫

    # 推送單個tag到遠程倉庫
    git push 遠程倉庫地址別名(origin) v1.4
    
    # 推送所有的
    git push 遠程倉庫地址別名(origin) --tags
    
  • 查看已有的標簽

    git tag
    
  • 查看某個標簽的詳細內(nèi)容

    git show v1.4
    
  • 刪除 某個tag

    git tag -d v1.4
    

忽略文件

  • 在git倉庫的根目錄下添加.gitignore文件

  • 文件內(nèi)容寫不想向遠程倉庫提交的內(nèi)容

    • ide編輯器的緩存目錄
    • 個人配置文件
    • 編譯解釋器的緩存文件
    • 打包的可執(zhí)行文件
  • 實例

    a.py
    
    !a.py
    
    dir/
    
    *.py
    
    *.h[a|c|d]
    
    
    #提供各種各樣的 .gitignore
    github上查看
    

rm 操作刪除文件、git緩存

  • 刪除緩存

    git rm --cached [文件名]
    
  • 刪除文件及緩存

    git rm [文件名]
    
    # 強制刪除
    git rm -f [文件名]
    

4.開發(fā)工作流

mkdir mpro
cd mpro
# 初始化倉庫
git init

touch app.py
git add .
git commit -m "開啟服務(wù)"

# 遠程推送
git remote add origin 遠程地址
git push origin master

git tag -a v1 -m "v1版本"
git push origin --tags


cd ~
mkdir p1mp
git clone 遠程倉庫

git checkout dev

git checkout -b "p1dev"

touch fun1.py
git add .
git commit -m "fun1.1"
git push origin p1dev


# 提交 review

# leader 在 dev 分支 切換出 release 分支  進行測試

# 同步本地 master

# 打標簽
git tag -a v2 -m "v2版本"
git push origin --tags


git checkout -b ""

工作流示意圖

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容