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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(二)GitHub的使用随记

發布時間:2023/12/20 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (二)GitHub的使用随记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、Git及GitHub的使用

1. 突破GitHub單個大文件上傳限制

GitHub 上新建的倉庫容量大小限制在 1G,單個文件不能超過 100M,有 50M 的文件,就會警告了。 可通過以下命令查找超過 100M 的文件:find ./ -type f -size +102400k。 想要突破 GitHub 的限制,支持單個文件超出 100M,可以使用 Git LFS。

參考:突破github的100M單個大文件上傳限制

2. Git只Clone倉庫指定文件或文件夾

步驟總結如下:

git init <repo> #新建倉庫并初始化 cd <repo> #切換到該倉庫目錄 git remote add origin <url> #拉取remote的all objects信息,url為倉庫地址 git config core.sparsecheckout true #設置允許克隆子目錄,即開啟sparse clone echo "參考論*" >> .git/info/sparse-checkout #設置需要pull的目錄,*表示所有,!表示匹配相反的 git pull --depth=1 origin master #將origin端指定目錄下的文件pull到本地

通過本人親自實踐,有幾點說的:

  • 像這步命令echo "參考論" >> .git/info/sparse-checkouth會在.git/info/目錄下生成sparse-checkout無后綴文件,打開看到內容可以看到設置為了參考論,即會下載匹配參考論的目錄下所有文件。也可以修改為別的,比如修改諸如為參考論文/files/101,匹配參考論文/files/101文件或文件夾?。

  • 通過實踐,發現其實不管如何設置下載指定的文件或文件夾,其實它都是有下載整個倉庫容量大小,正如知乎宮玖的回答 - 知乎,@依云指出:

    你一定沒有親自去嘗試這個功能?!竎heckout」!=「clone/fetch」。實際上整個倉庫還是會全部拖回本地,只是檢出的時候不檢出別的目錄而已。

  • git pull --depth=1 origin master :depth 用于指定克隆深度,為 1 即表示只克隆最近一次 commit,可以不加,否則可能出現問題。補充: git clone 時使用了 --depth 后,如何再重新拉取全部的歷史。

  • PS:后來發現,其實直接打開想要下載的文件,在右上角可以直接鼠標右鍵點擊Raw選擇鏈接另存為即可下載?;蚴鞘褂脼g覽器插件【GitZip for github 】可以非常方便下載,推薦。

    參考:

    • git clone克隆或下載一個倉庫單個文件夾
    • git只clone倉庫中指定子目錄和指定文件的實現

    3. 利用GitHub進行多人協作開發

    (1) 開發并且提交代碼

    首先要從 GitHub 上 clone 自己倉庫代碼到本地,你需要執行如下命令:

    # 如果沒有配置ssh,可以 git clone https://github.com/strivebo/git-practice.git git clone git@github.com:strivebo/git-practice.git

    然后代碼下載到本地了,修改代碼,然后可以提交代碼,命令如下:

    git add . # 表示提交所有改動,指定提交某個文件的改動,則可 git add hello.txt git commit -m '修改原因,相關說明信息'

    執行git commit之后,只是提交到了本機的倉庫,而不是 GitHub 上你賬號的倉庫。你需要執行 push 命令,把 commit 提交到服務器。

    # git push #直接到遠程默認倉庫,或者下面這個: git push orgin master #push到名為orgin的遠程倉庫的指定分支master

    這樣就完成了修改遠程倉庫代碼了。

    (2) 多人協作開發

    Q:假如想要進行多人協作開發。比如要對 xiaoming 的名為 git-test 的倉庫貢獻自己寫的代碼,比如說添加新功能,怎么操作呢?

    A:首先你需要 fork 一份 xiaoming 的 git-test 倉庫到自己 GitHub 倉庫,這個時候這個倉庫就是你的了,再 clone 到本地磁盤,然后按上小節流程操作就可以完成對自己 fork 來的遠程 git-test 倉庫的代碼修改工作。

    然后可以發起 pull request 給 xiaoming 請求合并代碼就行,隨即 xiaoming 本人就會看到你寫的代碼,如果他覺得不錯,沒問題,他就可以進行合并了。(關于如何發起 pull request,請點擊本小節參考資料查閱,有截圖~)

    但這里的合作開發會有一個問題,如何與 xiaoming 的倉庫代碼保持同步?

    因為在自己做開發的過程中,難免會遇到“Fork”的項目已經有了新的更新,這時當然是希望自己倉庫中的代碼也能同步進行更新??墒?#xff0c;你本地倉庫所連接的遠程倉庫的是你自己的 GitHub 倉庫,而不是原作者的倉庫。 解決方法其實很簡單,為你的本地倉庫再添加一個遠程倉庫源。 步驟如下:

    ①先查看當前項目所連接的遠程倉庫:git remote -v,一般情況可以看到目前連接了自己的遠程倉庫,截圖我就略了;

    ②然后添加源作者 xiaoming 的遠程倉庫連接:git remote add upstream git@github.com:xiaoming/git-test.git

    這個命令什么意思呢?就是對本地倉庫再關聯一個遠程連接,名稱為 upstream,地址為git@github.com:xiaoming/test.git(如果要取消該關聯,使用這個命令:git remote rm upstream)

    (1)從原倉庫獲取最新版本到本地 git fetch upstream master(2)保證當前位于 master 分支上 git checkout master(3)將最新版本整合到本地 master 分支上 git merge upstream/master(4)將更新發送到自己的 GitHub 倉庫里 git push origin master

    或者①②③步可以用: git pull upstream master 這條命令替代,不過這樣不太安全,因為你 fetch(獲取)之后可以通過:git log --oneline --graph --decorate --all來查看更新的情況,再決定是否 merge(整合)到一起。

    如上操作完畢,這樣自己 fork 過來的倉庫代碼就和原作者倉庫代碼保證一致了。

    也可參考該文:github上fork了別人的項目后,再同步更新別人的提交,該文第二種方法即上面講的方式,命令如下:

    git remote -v git remote add upstream git@github.com:xxx/xxx.git git fetch upstream git merge upstream/master git push

    參考資料:

    • 如何利用 Git 與 GitHub 進行多人協作開發
    • github的多人協作

    4. 同一臺電腦配置多個Git賬號

    在日常使用 GitHub 作為倉庫使用的時候,有時可能會遇到這樣的一些情況:

    1. 有兩個 github 賬號,一臺電腦怎么同時連接這兩個賬號進行維護呢? 2. 自己用一個 github 賬號,平時用來更新自己的一些資料;公司使用的 gitlab(也是 git 的衍生產品)

    SSH Key 的配置:

  • Windows 下打開 Git Bash,創建 SSH Key,按提示輸入密碼,可以不填密碼一路回車

    $ ssh-keygen -t rsa -C "注釋" #如:ssh-keygen -t rsa -C “123456@qq.com”
  • 生成另外一個賬號新的 SSH keys

    ssh-keygen -t rsa -C "注釋" #如:ssh-keygen -t rsa -C "123456@sina.com"

    平時我們都是直接回車,默認生成 id_rsa 和 id_rsa.pub。這里特別需要注意,出現提示輸入文件名的時候(Enter file in which to save the key (\~/.ssh/id_rsa): id_rsa_new)要輸入與默認配置不一樣的文件名,比如:我這里填的是 id_rsa_new。

    其實也可以一個命令操作,是使用 -f 參數指定文件名:ssh-keygen -t rsa -C "注釋" -f id_rsa_new"

  • 配置 C:\Users\用戶名\.ssh\config 文件。在 .ssh文件夾下新建 config 文件(無后綴名),修改如下:

    #github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa#github2 Host second.github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_new

    注:令不同 Host 實際映射到同一HostName,但密鑰文件不同。Host 前綴可自定義。

    它們具體的含義如下:

    #Host myhost(這里是自定義的host簡稱,以后連接遠程服務器就可以用命令ssh myhost)[注意下面有縮進] #User 登錄用戶名(如:git) #HostName 主機名可用ip也可以是域名(如:github.com或者bitbucket.org) #Port 服務器open-ssh端口(默認:22,默認時一般不寫此行) #IdentityFile 證書文件路徑(如~/.ssh/id_rsa_*)
  • 測試:

    $ ssh -T git@github.com Hi xiaoming! You've successfully authenticated, but GitHub does not provide shell access.$ ssh -T git@second.github.com Hi zhangsan! You've successfully authenticated, but GitHub does not provide shell access.
  • 解決方案總結為:

  • 生成私鑰/公鑰,密鑰文件命名避免重復
  • 設置不同 Host 對應同一 HostName 但密鑰不同
  • 取消 git 全局用戶名/郵箱設置,為每個倉庫獨立設置用戶名/郵箱
  • 如何取消 Git 全局用戶名/郵箱設置,如下:

  • 使用 git config --list 查看當前配置

    如果你之前在設置本地倉庫和 github 連接的時候設置過 user.name 和 user.email, 那么你必須首先清楚掉該設置,因為不清楚掉該設置,兩個賬號在提交資料的時候,驗證肯定沖突(只能設置一個全局的user.name 和 user.email,而你現在有兩個賬號就對應兩個不同的)。

  • 取消 global

    git config --global --unset user.name git config --global --unset user.email
  • 設置每個項目 repo 的自己的 user.email

    git config user.email "xxxx@xx.com" git config user.name "suzie"
  • 或者直接直接編輯電腦.gitconfig 文件(Windows 系統在C:\Users\用戶名\.gitconfig目錄),把 name 和 email 都去掉,從而取消全局用戶/郵箱設置。

    參考資料:

    • 一臺電腦綁定兩個github帳號教程
    • 同一臺電腦配置多個git賬號
    • 一臺電腦綁定兩個git帳號(GitHub和GitLab)

    5. Git配置多個SSH-key?為什么?

    背景:當有多個 git 賬號時,比如:

    a. 一個 gitee,用于公司內部的工作開發; b. 一個 github,用于自己進行一些開發活動;

    操作步驟:

    ①生成一個公司用的 SSH-Key

    ssh-keygen -t rsa -C 'xxxxx@company.com' -f ~/.ssh/gitee_id_rsa

    ②生成一個 github 用的SSH-Key

    ssh-keygen -t rsa -C 'xxxxx@qq.com' -f ~/.ssh/github_id_rsa

    ③在 ~/.ssh 目錄下新建一個config文件,添加如下內容(其中Host和HostName填寫git服務器的域名,IdentityFile指定私鑰的路徑)

    # gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitee_id_rsa#github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id_rsa

    ④用ssh命令分別測試

    ssh -T git@gitee.com ssh -T git@github.com

    參考資料:

    • Git配置多個SSH-Key
    • 一臺電腦配置多個ssh key(不同的多個郵箱ssh key,多git賬號,智能選擇對應的ssh key)
    • 管理git生成的多個ssh key

    6. 如何將GitHub已有的項目轉移到組織倉庫中去

    打開倉庫,點擊 setting,拉到最下面,點擊 Transfer,會看到要求輸入如下:

    在這里分別輸入要轉移的項目名稱,第二行輸入組織名。輸入完畢之后點擊I understand transfer this repository。

    參考資料:github如何將已有的項目轉移到組織倉庫中去

    7. 如何在GitHub上添加協議?

    ①進入你的“代碼倉庫”,點擊"Create new file",這時 GitHub 的新頁面上,有一個空格讓你填入文件名稱。

    ②在輸入框輸入文件名”LICENSE",這里輸入框的右側會出現包含所有開源協議的列表,選擇合適的開源協議,選擇你需要的協議;

    ③點擊“Commit new file”,這時你添加的開源協議就在代碼倉庫的菜單中了。

    參考:如何在github上添加協議

    8. 保持碼云Gitee和GitHub同步更新?

    使用 GitHub 時,國內的用戶經常遇到的問題是訪問速度太慢,有時候還會出現無法連接的情況(原因你懂的)。如果我們希望體驗 Git 飛一般的速度,可以使用國內的 Git 托管服務——碼云(gitee.com)。和 GitHub 相比,碼云也提供免費的 Git 倉庫。此外,還集成了代碼質量檢測、項目演示等功能。對于團隊協作開發,碼云還提供了項目管理、代碼托管、文檔管理的服務,5 人以下小團隊免費。

    使用碼云和使用 GitHub 類似,在此不贅述了。下面主要講的是從 GitHub 上 clone 下來的倉庫如何與 Gitee 保持同步更新,操作如下:

    切換到本地倉庫目錄,先使用命令:git remote -v 查看是否關聯了遠程倉庫。如果顯示如下:

    git remote -v origin git@github.com:michaelliao/learngit.git (fetch) origin git@github.com:michaelliao/learngit.git (push)

    說明本地庫已經關聯了origin的遠程庫,并且,該遠程庫指向 GitHub。我們可以關聯一個遠程倉庫并指向 Gitee,這樣本地庫就既關聯 GitHub,又關聯碼云。

    PS:使用多個遠程庫時,我們要注意,Git 給遠程庫起的默認名稱是origin,如果有多個遠程庫,我們需要用不同的名稱來標識不同的遠程庫。

    接下來,我們再關聯碼云遠程倉庫:

    git remote add gitee git@gitee.com:liaoxuefeng/learngit.git

    注意:遠程庫的名稱叫gitee,不叫origin。

    現在,我們用git remote -v查看遠程庫信息,可以看到兩個遠程庫:

    git remote -v gitee git@gitee.com:liaoxuefeng/learngit.git (fetch) gitee git@gitee.com:liaoxuefeng/learngit.git (push) github git@github.com:michaelliao/learngit.git (fetch) github git@github.com:michaelliao/learngit.git (push)

    如果要推送到 GitHub,使用命令:

    git push github master

    如果要推送到碼云,使用命令:

    git push gitee master

    注意:本人用的同一個 ssh-key 的情況下,在提交代碼使用簡短命令:git push時候貌似只提交到了 GitHub 遠程倉庫;若要提交到 Gitee,則再需git push gitee master。

    參考:使用碼云 - 廖雪峰的官方網站

    9. 如何正確接收 GitHub 的消息郵件

    參考:如何正確接收 GitHub 的消息郵件

    二、GitHub項目美化

    1. GitHub項目徽章的添加和設置

    GitHub 項目的 README.md 中可以添加徽章(Badge)對項目進行標記和說明,這些好看的小圖標不僅簡潔美觀,而且還包含了清晰易讀的信息。

    徽標主要由圖片和對應的鏈接(當然,你可以不填)組成,徽標圖片的話一般由左半部分的名稱和右半部分的值組成。

    GitHub 徽標的官方網站是:shields.io/,我們可以在官網預覽絕大部分的徽標樣式,然后選擇自己喜歡的(當然首先需要適用于自己的目標項目)徽標,添加到自己的項目文檔中去。

    參考資料:

    • 為你的Github README生成漂亮的徽章和進度條
    • GitHub 項目徽章的添加和設置

    2. 為GitHub項目添加表情

    GitHub 支持的表情,官網查詢:https://www.webfx.com/tools/emoji-cheat-sheet/

    格式,如::blush:,顯示為?

    三、Git及GitHub細節和技巧

    1. 本地查看遠程分支

    git clone 默認會把遠程倉庫整個給 clone下來,但只會在本地默認創建一個 master 分支,如果遠程還有其他的分支,此時用 git branch -a 查看所有分支。

    2. Git支持多種協議

    GitHub 給出的地址不止一個,除了``git@github.com:xiaoming/test.git這個地址,還可以使用https://github.com/xiaoming/test.git這樣的地址。實際上,Git 支持多種協議,默認的git://`使用ssh,但也可以使用 https 等其他協議。

    使用 https 除了速度慢以外,還有個最大的麻煩是每次推送都必須輸入口令,但是在某些只開放 http 端口的公司內部就無法使用 ssh 協議而只能用 https。

    3. 設置默認被推送的分支

    git push -u origin test #設置默認被推送的分支 git push #這個時候我推送的遠程分支應該是 origin/test

    查看git push關聯的遠程分支:git branch -v。

    4. ssh-keygen命令

    ssh-keygen 命令用于為“ssh”生成、管理和轉換認證密鑰,它支持 RSA 和 DSA 兩種認證密鑰。語法:ssh-keygen(選項)

    參數:

    -b:指定密鑰長度; -e:讀取openssh的私鑰或者公鑰文件; -C:添加注釋; -f:指定用來保存密鑰的文件名; -i:讀取未加密的ssh-v2兼容的私鑰/公鑰文件,然后在標準輸出設備上顯示openssh兼容的私鑰/公鑰; -l:顯示公鑰文件的指紋數據; -N:提供一個新密語; -P:提供(舊)密語; -q:靜默模式; -t:指定要創建的密鑰類型。

    如:ssh-keygen -t rsa -C "123456@qq.com"

    5. Git忽略提交(.gitignore文件)

    在使用 Git 的過程中,我們喜歡有的文件比如日志,臨時文件,編譯的中間文件等不要提交到代碼倉庫,這時就要設置相應的忽略規則,來忽略這些文件的提交。簡單來說一個場景:在你使用git add .的時候,遇到了把你不想提交的文件也添加到了緩存中去的情況,比如項目的本地配置信息,如果你上傳到 Git 中去其他人 pull 下來的時候就會和他本地的配置有沖突,所以這樣的個性化配置文件我們一般不把它推送到 GIt 服務器中,但是又為了偷懶每次添加緩存的時候都想用git add .而不是手動一個一個文件添加,該怎么辦呢?很簡單,Git 為我們提供了一個.gitignore文件只要在這個文件中申明那些文件你不希望添加到 Git 中去,這樣當你使用git add .的時候這些文件就會被自動忽略掉。

    對于經常使用 Git 的朋友來說,.gitignore配置一定不會陌生。這種方式通過在項目的某個文件夾下定義.gitignore文件,在該文件中定義相應的忽略規則,來管理當前文件夾下的文件的 Git 提交行為。.gitignore文件是可以提交到公有倉庫中,這就為該項目下的所有開發者都共享一套定義好的忽略規則。在.gitingore文件中,遵循相應的語法,在每一行指定一個忽略規則。如:

    *.log *.temp /vendor

    參考:Git忽略提交規則 - .gitignore配置運維總結

    6. 如何在README.md中嵌入一個Gist?

    適用于 GitHub 的網頁,通過 Jekyll,使用 Markdown 中的腳本標記,然后由 Jekyll 處理。因為 Markdown支持 html,所以可以直接使用< script>標簽嵌入 Gist。

    只需復制 GitHub 提供的 Gist 的嵌入網址,示例,復制以下內容并粘貼到 Markdown 文件:

    < script src =“https://gist.github.com/nisrulz/11c0d63428b108f10c83.js”>< / script>

    這樣能看到想要的結果。注:以上使用的 Jekyll 方式,親測,如果是直接嵌入 README.md 文件是不行的,因為 GitHub為了安全性都不能引入自定義的 JS 和 CSS。

    參考:

    • Github: How to embed a gist into README.md? - Stack Overflow
    • Github:如何在README.md中嵌入一個gist?
    • Custom css file for readme.md in a Github repo - Stack Overflow

    7. 其他網頁上面嵌入個人的GitHub倉庫?

    是否想在其他網頁上面嵌入自己的 GitHub 倉庫頁面,有個 star 或 fork 按鈕,如下圖:

    可以這樣寫:

    <iframe src="https://ghbtns.com/github-btn.html?user=strivebo&amp;repo=websites-and-tools&amp;type=watch&amp;count=true&amp;size=large" allowtransparency="true" frameborder="0" scrolling="0" width="156px" height="30px"></iframe> <iframe src="https://ghbtns.com/github-btn.html?user=strivebo&amp;repo=websites-and-tools&amp;type=fork&amp;count=true&amp;size=large" allowtransparency="true" frameborder="0" scrolling="0" width="156px" height="30px"></iframe>

    把 user 和 repo 改成你自己的就可以了。PS:親測,GitHub 網站頁面暫不支持。

    推薦資料

    • GitHub:waylau/github-help

    update:2019-02-18

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。