日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux下git的使用

發(fā)布時間:2025/3/15 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux下git的使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

文章目錄

  • git的使用
    • 1、初始化一個Git倉庫,使用git init命令。
    • 2、暫存區(qū)stage是Git非常重要的概念,Git跟蹤并管理的是修改,而非文件。
    • 3、要關(guān)聯(lián)一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git;
    • 4、要克隆一個倉庫,首先必須知道倉庫的地址,然后使用git clone命令克隆。
    • 5、git 的版本切換
    • 6、fork別人的代碼后如何保持和原作者同步的更新
    • 7、.gitignore規(guī)則不生效的解決辦法
    • 8、GIT 查看/修改用戶名和郵箱地址
    • 9、git 對比兩個分支差異
    • 10、git 中 submodule 子模塊的使用
      • 子模塊的添加
      • 子模塊的使用
      • 子模塊的更新
      • 刪除子模塊
    • 11、參見其他更加完整的 git 使用命令文檔說明,如下:
    • 12、關(guān)于GitHub 的多人協(xié)同項目的創(chuàng)建及其介紹參見如下的文章
    • 13、搭建離線的 GitLab 網(wǎng)址

git的使用

1、初始化一個Git倉庫,使用git init命令。

添加文件到Git倉庫,分兩步:

  • 第一步,使用命令git add ,注意,可反復(fù)多次使用,添加多個文件;

  • 第二步,使用命令git commit,完成。

  • 要隨時掌握工作區(qū)的狀態(tài),使用git status命令。

  • 如果git status告訴你有文件被修改過,用git diff可以查看修改內(nèi)容。

  • HEAD指向的版本就是當前版本,因此,Git允許我們在版本的歷史之間穿梭,使用命令git reset --hard commit_id。

  • 穿梭前,用git log可以查看提交歷史,以便確定要回退到哪個版本。

  • 要重返未來,用git reflog查看命令歷史,以便確定要回到未來的哪個版本。

2、暫存區(qū)stage是Git非常重要的概念,Git跟蹤并管理的是修改,而非文件。

  • Git是如何跟蹤修改的,每次修改,如果不add到暫存區(qū),那就不會加入到commit中。
  • 場景1:當你改亂了工作區(qū)某個文件的內(nèi)容,想直接丟棄工作區(qū)的修改時,用命令git checkout – file。
  • 場景2:當你不但改亂了工作區(qū)某個文件的內(nèi)容,還添加到了暫存區(qū)時,想丟棄修改,分兩步,第一步用命令git reset HEAD file,就回到了場景1,第二步按場景1操作。
  • 命令git rm用于刪除一個文件。如果一個文件已經(jīng)被提交到版本庫,那么你永遠不用擔心誤刪,但是要小心,你只能恢復(fù)文件到最新版本,你會丟失最近一次提交后你修改的內(nèi)容

3、要關(guān)聯(lián)一個遠程庫,使用命令git remote add origin git@server-name:path/repo-name.git;

關(guān)聯(lián)后,使用命令git push -u origin master第一次推送master分支的所有 內(nèi)容;
此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
如果想要提交某一次指定的 commit 而不是本地最新的 commit, 可以使用如下命令:

$ git push <remote name> <commit hash>:<remote branch name># Example: $ git push origin 2dc2b7e393e6b712ef103eaac81050b9693395a4:master

4、要克隆一個倉庫,首先必須知道倉庫的地址,然后使用git clone命令克隆。

Git支持多種協(xié)議,包括https,但通過ssh支持的原生git協(xié)議速度最快

  • 查看某個文件的歷史提交的版本代碼
1、可以先使用 git log 找到該個文件提交的歷史版本 2、然后使用 git show <git提交版本號> <文件名> 查看歷史版本

5、git 的版本切換

  • 一般會,先使用 git log或者 git log --pretty=oneline 找出 commit_id 。之后,便可以使用命令git reset --hard commit_id 切換版本了
  • 或者使用簽出一個新的分支的方法,用git checkout -b commit_id的方法,創(chuàng)建一個新的分支,并切換到新的分支
  • 使用git branch 可以查看有哪些分支,注意看 master 分支前的 * 字符:它表示當前所在的分支。也就是說,如果現(xiàn)在提交更新,master 分支將隨著開發(fā)進度前移。若要查看各個分支最后一個提交對象的信息,運行 git branch -v,然后可以用 git checkout 切換到對應(yīng)的分支
  • 要從該清單中篩選出你已經(jīng)(或尚未)與當前分支合并的分支,可以用 --merged 和 --no-merged 選項。比如用 git branch --merged 查看哪些分支已被并入當前分支(譯注:也就是說哪些分支是當前分支的直接上游。)
  • 一般來說,列表中沒有 * 的分支通常都可以用 git branch -d 來刪掉。原因很簡單,既然已經(jīng)把它們所包含的工作整合到了其他分支,刪掉也不會損失什么。
  • 另外可以用 git branch --no-merged 查看尚未合并的工作:它會顯示還未合并進來的分支。由于這些分支中還包含著尚未合并進來的工作成果,所以簡單地用 git branch -d 刪除該分支會提示錯誤,因為那樣做會丟失數(shù)據(jù)。
  • 打標簽 git tag -a <版本號> -m "<備注信息>"
  • 將本地標簽提交到遠程倉庫
    前面所提到的創(chuàng)建標簽,只是將標簽添加到了本地的版本管理,我們需要在創(chuàng)建之后將本地標簽同步到遠程倉庫,如Github。

推送所有標簽

git push origin --tags

推送指定版本的標簽

git push origin <版本號>

刪除遠程倉庫的標簽
同創(chuàng)建本地標簽一樣,刪除了本地標簽之后也要同時刪除遠程倉庫的標簽。

新版本Git (> v1.7.0)
git push origin --delete <版本號>

6、fork別人的代碼后如何保持和原作者同步的更新

在GitHub上我們會去fork別人的一個項目,這就在自己的Github上生成了一個與原作者項目互不影響的副本,自己可以將自己Github上的這個項目再clone到本地進行修改,修改后再push,只有自己Github上的項目會發(fā)生改變,而原作者項目并不會受影響,避免了原作者項目被污染。但經(jīng)過一段時間, 有可能作者原來的代碼變化很大, 你想接著在他最新的代碼上修改, 這時你需要合并原作者的最新代碼過來, 讓你的項目變成最新的。

1、先克隆項目到本地:
Git clone https://github.com/iakuf/mojo
cd mojo

2、添加原作者項目的 remote 地址, 然后將代碼 fetch 過來
git remote add sri https://github.com/kraih/mojo
git fetch sri
‘sri’相當于一個別名
查看本地項目目錄: git remote -v

3、合并
git checkout master
git merge sri/master
如果有沖突的話,需要丟掉本地分支:
git reset –hard sri/master

4、這時你的當前本地的項目變成和原作者的主項目一樣了,可以把它提交到你的GitHub庫
git commit -am ‘更新到原作者的主分支’
git push origin
git push -u origin master -f –強制提交

7、.gitignore規(guī)則不生效的解決辦法

把某些目錄或文件加入忽略規(guī)則,按照上述方法定義后發(fā)現(xiàn)并未生效,原因是.gitignore只能忽略那些原來沒有被追蹤的文件,如果某些文件已經(jīng)被納入了版本管理中,則修改.gitignore是無效的。那么解決方法就是先把本地緩存刪除(改變成未被追蹤狀態(tài)),然后再提交:

git rm -r --cached . git add . git commit -m 'update .gitignore'

8、GIT 查看/修改用戶名和郵箱地址

用戶名和郵箱地址的作用

  • 用戶名和郵箱地址是本地git客戶端的一個變量,不隨git庫而改變。
  • 每次commit都會用用戶名和郵箱紀錄。每次commit都會用用戶名和郵箱紀錄。
  • github的contributions統(tǒng)計就是按郵箱來統(tǒng)計的。
  • 查看用戶名和郵箱地址:

    $ git config user.name$ git config user.email

    修改用戶名和郵箱地址:

    $ git config --global user.name "username"$ git config --global user.email "email"

    其中,加上 --global 是全局設(shè)置的意思,不加是局部設(shè)置的意思。

    • git push 報錯 403:
    The requested URL returned error: 403

    可以清楚緩存后,在嘗試。命令如下:

    git config --local --unset credential.helper git config --global --unset credential.helper git config --system --unset credential.helper

    關(guān)于 credential 可以參見:

    https://blog.csdn.net/u012163684/article/details/52433645

    9、git 對比兩個分支差異

    比如我們有 2 個分支:master, dev,現(xiàn)在想查看這兩個 branch 的區(qū)別,有以下幾種方式:

    1.查看 dev 有,而 master 中沒有的:

    git log dev ^master

    同理查看 master 中有,而 dev 中沒有的內(nèi)容:

    git log master ^dev

    這里寫圖片描述

    2 查看 dev 中比 master 中多提交了哪些內(nèi)容:

    git log master..dev

    注意,列出來的是兩個點后邊(此處即dev)多提交的內(nèi)容。同理,想知道 master 比 dev 多提交了什么:

    git log dev..master

    3 不知道誰提交的多誰提交的少,單純想知道有什么不一樣:
    git log dev…master

    4.在上述情況下,再顯示出每個提交是在哪個分支上:
    git log --left-right dev…master

    10、git 中 submodule 子模塊的使用

    背景:我們經(jīng)常會遇到:某個工作中的項目需要包含并使用另一個項目。 也許是第三方庫,或者你獨立開發(fā)的,用于多個父項目的庫。 現(xiàn)在問題來了:你想要把它們當做兩個獨立的項目,同時又想在一個項目中使用另一個。

    如果將這個庫包含進來,那么無論用何種方式都很難定制它,部署則更加困難,因為你必須確保每一個客戶端都包含該庫。 如果將代碼復(fù)制到自己的項目中,那么你做的任何自定義修改都會使合并上游的改動變得困難。

    Git 通過子模塊來解決這個問題。 子模塊允許你將一個 Git 倉庫作為另一個 Git 倉庫的子目錄。 它能讓你將另一個倉庫克隆到自己的項目中,同時還保持提交的獨立。git 提交日志的獨立,代碼管理的獨立性。從而避免將主項目和子項目混成一談,從而避免 git 代碼管理的混亂。

    下面我們介紹子模塊相關(guān)的基礎(chǔ)命令,詳細使用請參考 man page。

    子模塊的添加

    添加子模塊非常簡單,命令如下:

    git submodule add <url> <path>

    其中,url為子模塊的路徑,path為該子模塊存儲的目錄路徑。執(zhí)行成功后,git status會看到項目中修改了.gitmodules,并增加了一個新文件(為剛剛添加的路徑)

    git diff --cached 查看修改內(nèi)容可以看到增加了子模塊,并且新文件下為子模塊的提交hash摘要
    git commit提交即完成子模塊的添加

    子模塊的使用

    克隆項目后,默認子模塊目錄下無任何內(nèi)容。需要在項目根目錄執(zhí)行如下命令完成子模塊的下載:

    git submodule init git submodule update

    或:

    git submodule update --init --recursive

    執(zhí)行后,子模塊目錄下就有了源碼,再執(zhí)行相應(yīng)的makefile即可。

    子模塊的更新

    子模塊的維護者提交了更新后,使用子模塊的項目必須手動更新才能包含最新的提交。
    在項目中,進入到子模塊目錄下,執(zhí)行 git pull更新,查看git log查看相應(yīng)提交。

    完成后返回到項目目錄,可以看到子模塊有待提交的更新,使用git add,提交即可。

    刪除子模塊

    有時子模塊的項目維護地址發(fā)生了變化,或者需要替換子模塊,就需要刪除原有的子模塊。

    刪除子模塊較復(fù)雜,步驟如下:

    rm -rf 子模塊目錄 刪除子模塊目錄及源碼 vi .gitmodules 刪除項目目錄下.gitmodules文件中子模塊相關(guān)條目 vi .git/config 刪除配置項中子模塊相關(guān)條目 rm .git/module/* 刪除模塊下的子模塊目錄,每個子模塊對應(yīng)一個目錄,注意只刪除對應(yīng)的子模塊目錄即可 執(zhí)行完成后,再執(zhí)行添加子模塊命令即可,如果仍然報錯,執(zhí)行如下:git rm --cached 子模塊名稱

    完成刪除后,提交到倉庫即可。

    11、參見其他更加完整的 git 使用命令文檔說明,如下:

    https://www.cnblogs.com/wupeiqi/p/7295372.html

    12、關(guān)于GitHub 的多人協(xié)同項目的創(chuàng)建及其介紹參見如下的文章

    http://www.cnblogs.com/zhaoyanjun/p/5882784.html

    13、搭建離線的 GitLab 網(wǎng)址

    https://blog.csdn.net/b644rofp20z37485o35m/article/details/80851382

    總結(jié)

    以上是生活随笔為你收集整理的linux下git的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。