<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 相關概念 ## 工作區與暫存區 工作區(Working Directory)就是我們電腦中能看見的目錄 暫存區或者說版本庫:我們使用 git add 操作就是把文件放到了暫存區,git commit 就是把暫存區所有內容提交到當前分支。 ![](https://box.kancloud.cn/03bb953d87658b477835d8a2f19b4d1c_587x313.png =400x) ## Git 與 SVN Git 屬于分布式版本控制系統,而 SVN 屬于集中式。 ![](https://img.kancloud.cn/f4/c0/f4c0e3930e3431dcc97cbea1ebe46680_849x494.png =400x) 集中式版本控制只有中心服務器擁有一份代碼,而分布式版本控制每個人的電腦上就有一份完整的代碼。 集中式版本控制有安全性問題,當中心服務器掛了所有人都沒辦法工作了。 集中式版本控制需要連網才能工作,如果網速過慢,那么提交一個文件會慢的無法讓人忍受。而分布式版本控制不需要連網就能工作。 分布式版本控制新建分支、合并分支操作速度非常快,而集中式版本控制新建一個分支相當于復制一份完整代碼。 # 全局配置 ```shell $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com" ``` [TOC] # 創建倉庫 本地 push 源碼一般分為兩種情況 ## 本地無源碼 第一步,clone 遠程源碼 ```txt git clone https://path/to/your/repository ``` 第二步,編寫源碼,完成后上傳源碼 ```txt git add . git commit -m "your commit message" git push origin master --set-upstream ``` 注意初次提交時需要加上`--set-upstream`參數,因為遠程不存在 master 分支,需要創建分支,第二次提交時就不需要了 ## 本地有源碼 第一步,初始化 git 倉庫 ```txt git init ``` 第二步,添加遠程倉庫 ```txt git remote add origin https://path/to/your/repository ``` 第三步,上傳源碼,與上一種情況方法相同 ## 相關 git 命令 `git init`:創建一個空倉庫 `git remote`:關聯一個遠程庫 `git clone` :克隆遠程庫 `git add`(將文件添加至暫存區) ```shell $ git add fileName.fileType # 將與倉庫同一目錄(子目錄)下的文件添加到倉庫中 $ git add --all # 將所有的已跟蹤的文件的修改與刪除和新增的未跟蹤的文件都添加到暫存區 ``` `git commit`(提交暫存區文件) ```shell $ git commit -m "message" # 將文件提交給倉庫, -m 后面為本次提交的說明 ``` > 為什么 git 添加文件需要 add、commit 兩步呢?因為 commit 可以一次提交很多文件,所以我們可以多次 add 不同文件后再提交。 ```shell $ git add file1.txt $ git add file2.txt file3.txt $ git commit -m "add 3 files." ``` # 查詢倉庫狀態 `git status`:查詢當前倉庫狀態(例如 readme.txt 被修改了會給出如下提示) ```shell $ git status On branch master Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: readme.txt no changes added to commit (use "git add" and/or "git commit -a") ``` `git diff <fileName>`:顯示對該文件做了哪些修改 # 時光穿梭機 ## 版本回退 `git log`:顯示從最近的到最遠的提交日志,其中的 **HEAD** 表示當前版本 `git log --pretty=oneline`:只顯示每次提交的 message 信息 ![](https://box.kancloud.cn/8c5a3f04ee5532c1089047843d28797e_826x423.png) `git reset`:版本更改,`git reset --hard HEAD~N`命令可以回退到之前的第 N 個版本 `git reset --hard commidID`命令可以回退到該 commit id 對應的版本 `git reflog`:查看歷史命令,可以看到所有命令的 commit id,如果回退到以前的版本又想返回未回退前的狀態可以使用該命令獲取對應的 commit id 再使用`git reset` ## 撤銷修改 `git checkout -- file`:丟棄工作區的修改。 假設我們執行 git checkout -- readme.txt,那么會有以下兩種情況: - 一種是 readme.txt 自修改后還沒有被放到暫存區,現在,撤銷修改就回到和版本庫一模一樣的狀態; - 一種是 readme.txt 已經添加到暫存區后,又作了修改,現在,撤銷修改就回到添加到暫存區后的狀態。 總之,就是讓這個文件回到最近一次 git commit 或 git add 時的狀態。 ## 刪除操作 `git rm test.txt`:從版本庫中刪除該文件,然后執行`rm test.txt`從工作區刪除該文件,最后`git commit -m "'remove test.txt"`提交本次操作 # 分支管理 `git checkout`命令加上`-b`參數表示創建并切換,相當于以下兩條命令: ```shell $ git branch dev $ git checkout dev Switched to branch 'dev' ``` 然后,用`git branch`命令查看當前分支: ```shell $ git branch * dev master ``` `git branch`命令會列出所有分支,當前分支前面會標一個`*`號。然后可以使用`checkout master`又切換回 master 分支。 `git merge`命令用于合并指定分支到當前分支。 `git branch -d dev`命令表示刪除 dev 分支。 ***** 總結: 查看分支:`git branch` 創建分支:`git branch <name>` 切換分支:`git checkout <name>` 創建+切換分支:`git checkout -b <name>` 合并某分支到當前分支:`git merge <name>` 刪除分支:`git branch -d <name>` 顯示工作區與當前分支文件的差異:`git diff HEAD`(HEAD 指向的是 local repository 中最新提交的版本) # 解決沖突 當 Git 無法自動合并分支時,就必須首先解決沖突。解決沖突后,再提交,合并完成。 解決沖突就是把 Git 合并失敗的文件手動編輯為我們希望的內容,再提交。 用 `git log --graph` 命令可以看到分支合并圖。 ## git 沖突的場景 * 情景一:多個分支代碼合并到一個分支時; * 情景二:多個分支向同一個遠端分支推送代碼時; 實際上,push 操作即是將本地代碼 merge 到遠端庫分支上。 關于 push 和 pull 其實就分別是 **用本地分支合并到遠程分支** 和 **將遠程分支合并到本地分支** 所以這兩個過程中也可能存在沖突。 git 的合并中產生沖突的具體情況: - 兩個分支中修改了同一個文件(不管什么地方) - 兩個分支中修改了同一個文件的名稱 兩個分支中分別修改了不同文件中的部分,不會產生沖突,可以直接將兩部分合并。 ## 沖突解決方案 * 情景一:在當前分支上,直接修改沖突代碼--->add--->commit。 * 情景二:在本地當前分支上,修改沖突代碼--->add--->commit--->push 具體見:[https://www.cnblogs.com/gavincoder/p/9071959.html](https://www.cnblogs.com/gavincoder/p/9071959.html) # 參考鏈接 [Git教程-廖雪峰的官方網站](https://www.liaoxuefeng.com/wiki/896043488029600) [https://github.com/CyC2018/CS-Notes/blob/master/notes/Git.md](https://github.com/CyC2018/CS-Notes/blob/master/notes/Git.md)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看