Git-Tutorials

Git-Tutorials

Git版本控制入门与实践教程

本教程全面介绍了Git版本控制系统的核心概念和实用技巧。内容涵盖Git的安装配置、仓库操作、代码提交、远程协作等基础知识,以及大型仓库克隆优化等进阶主题。通过清晰的讲解和实例演示,帮助开发者快速掌握Git,提升项目版本管理效率。适合Git初学者以及希望深化Git使用技能的开发人员参考学习。

Git版本控制命令行GitHub代码管理Github开源项目

Git-Tutorials 基本使用教學 :memo:

因為小弟覺得這東西蠻有趣的,所以就簡單寫個教學文,順便記錄一下:memo:,希望能幫助想學的人:smile:

如果教學有誤再請糾正:sweat_smile:

基本使用指令以及安裝可參考小弟之前拍的影片

影片教學包含如何產生 SSH key

如果步驟正確且沒出錯誤,可以在路徑下找到 .ssh資料夾,裡面有 id_rsa 以及 id_rsa.pub 兩個檔案,

這兩個就是 SSH Key, id_rsa是私鑰 ,不能洩露出去, id_rsa.pub是公鑰 ,可以很放心的告訴任何人。

安裝完 Git 之後,要做的第一件事情就是去設定自己的名字和信箱

git config --global user.name "twtrubiks" git config --global user.email "twtrubiks@gmail.com"

可以輸入以下來確認是否輸入成功

git config --global user.name git config --global user.email

alt tag

Git 設定資料查看,可執行以下指令 ( 文章末會有較詳細的教學 ):

git config --list

git init 指令

初始化 git

git init

也可以指定資料夾

git init <directory>

git clone 指令

複製如圖位置網址 ( 不要複製我的哦~ 複製你自己的 ) alt tag

git clone ( 複製的網址 ) SSH / HTTPS

( 如果你要使用 https 的方式, 請接著看 Personal Access Tokens )

git clone git@github.com:twtrubiks/test.git

第一次會出現 SSH 警告,選 YES 即可。

如圖 ( 下載成功 ),在你的下載路徑下就會多出一個資料夾

alt tag

Personal Access Tokens

從 2021/8/13 開始, 如果你用 https 的方式你會發現

alt tag

remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication. fatal: Authentication failed for 'https://github.com/xxxxx.git/'

這時候如果我們不想加入 ssh key, 也不想透過加入共同協做的方式,

可以透過這個 Personal Access Tokens (你可以把他想成臨時的權限),

先到你的 github 裡的 Settings -> Developer settings,

選 Personal Access Tokens, 產生你的 token

alt tag

時間這邊你可以自己定義多久後會過期,

下面的部份則是這個 token 有哪些權限,

alt tag

設定完之後, 就可以複製你的 token

alt tag

再回去用 https clone 的方式,

原本是使用, 帳號 + password (已經不能使用了),

現在改成, 帳號 + 剛剛的 token 就可以順利 clone 了.

如何改善(加速)大型 repo git clone 速度

有時候我們會需要 clone 很大的 repo,執行 git clone 都需要很長的時間,是不是有方法可以

加速 clone 的速度呢 :question:

直接開始動手嘗試 ( 使用 django 當範例 ),

git clone git@github.com:django/django.git

( 你會發現 clone 需要一些時間 :triumph:)

alt tag

接著查看 log,git log

alt tag

嘗試切換 branch git checkout stable/2.2.x

alt tag

開始改善(加速) clone 的時間,

可以透過 --depth 這個參數來完成,簡單說明一下他的功能,當我們一般執行 clone 之後,

接著執行 git log 你會發現有大量的 log,在某修情況下,你可能不需要那麼多的 log,

也就是說你可能只需要最近 10 筆的 history commit,甚至你只需要 1 筆 ( 也就是根本不需要

history commit ),這時候就很適合使用 --depth

git clone git@github.com:django/django.git --depth 1

( 你會發現這次快很多了 )

alt tag

接著查看 log,git log

( 會變快的原因是因為我們只保留最新的一筆 history commit ,

如果你需要最近 10 筆,改成 --depth 10 即可 )

alt tag

但是會有一個問題,當嘗試切換 branch git checkout stable/2.2.x

( 你會發現你無法切換 remote branch :scream:

原因是因為使用 --depth 相當於是 --single-branch

所以當然沒有其他的 branch。 )

alt tag

也就是說以下兩條指令其實是相等的

git clone git@github.com:django/django.git --depth 1 git clone git@github.com:django/django.git --depth 1 --single-branch

為了解決這個問題,比較好的做好應該是這樣

git clone git@github.com:django/django.git --depth 1 --no-single-branch

( 這個和 --single-branch 比會稍微久一點點,因為每個 branch 的最新一個 history commit 都要 clone 下來 )

這樣的話,就可以保留 remote 的 branch 了,

alt tag

成功切換 remote 的 branch, git checkout stable/2.2.x

alt tag

最後稍微整理,

如要 clone 最近一次的 history,而且也需要其他 branch,使用如下,

git clone git@github.com:django/django.git --depth 1 --no-single-branch

如果你想要指定分支, 加上 -b,

git clone git@github.com:django/django.git --depth 1 --no-single-branch -b stable/3.1.x

如要 clone 最近一次的 history,而且不需要其他 branch,使用如下,

git clone git@github.com:django/django.git --depth 1 --single-branch

or

git clone git@github.com:django/django.git --depth 1

更多詳細參數說明請參考 git clone

git status 指令

git status

可以讓我們觀看目前的 repository ( repo 容器 )。

alt tag

意思是目前你的工作區是乾淨的。

工作區與暫存區 ( Stage )

git add 意思是把要送出的文件放到暫存區 ( Stage ) ,

然後執行

git commit 就可以把暫存區 ( Stage ) 裡所有修改的內容送到目前的分支上。

一旦送出 ( git commit ) 後,如果你又沒有對工作區做任何修改,那麼工作區就是"乾淨"的。

git commit -m "xxxxx" 指令,-m 後面輸入的內容是本次修改 ( 送出 ) 的說明,

盡量輸入一眼就可以看出這次送出修改了什麼的內容 ( 方便以後回去觀看能快速了解此次 commit 修改了什麼 )。

以下 demo 為在一個資料夾內新增一個 Hello.py 檔案

然後使用 git status 觀看目前的 repository ( repo 容器 ),你會看到 Hello.py 未被追蹤,如下圖

alt tag

可以使用如下指令

git add Hello.py

額外補充,下面這個指令很有趣,大家可以玩玩看

git add -p

接著再使用

git commit -m "文字"

git commit -m "add Hello.py"

再使用 git status,你會發現工作區變乾淨了。如下圖

alt tag

補充,如果只有輸入

git commit

alt tag

這時會跳出編輯視窗

alt tag

這時可以按鍵盤的 Ins鍵 ( 或按鍵盤上的 英文字 i ) 即可輸入文字

alt tag

輸入完先按 Esc鍵 ,按完後底下的 INSERT 會消失,接著直接打 :wq ,再按 enter 就會儲存並離開了。

更多參數可參考 https://git-scm.com/docs/git-commit 說明。

如何修改最後一次的commit呢 ?

有時候我們 commit 完之後,才發現自己的 commit 內容手殘打錯了

這時候可以使用如下指令,他會跳出編輯視窗給你編輯你上一次的 commit 內容。

git commit --amend

又或是我們 commit 完之後,才發現自己漏了幾個檔案沒有 add 進去

這時候可以使用如下指令

git commit -m "init commit" git add missing_file.py git commit --amend

如上狀況為當我 git commit -m "init commit" 之後,

我發現我漏掉了 missing_file.py 這個檔案 ( commit 前忘記 add 進去 ) ,

這時候就可以使用 git commit --amend 來修改最後一次的 commit 。

有時候我們會為了方便,直接使用下面的指令一次加入全部的檔案

git add .

但是加完後發現其實有些檔案是不需要 add 進入的,這時候就可以使用如下指令去取消 add

git reset HEAD <file>

範例,路徑下有 A.py 以及 B.py 這兩個檔案,然後我使用 git add . 加入, alt tag

但加入完我發現其實 B.py 我還沒有要 add 進入,所以我這時候就可以使用 git reset HEAD B.py 去還原。

alt tag

git push 指令

git push

將程式 push 到 github ( or bitbucket 之類 )上 , 如下圖

alt tag

版本控制 - 歷史記錄

git log

小寫q 可退出

alt tag

如果覺得版面太雜,可以使用下列指令

git log --pretty=oneline

小寫q 可退出

alt tag

另外底下也是一個看 log 的方式( 很酷 :satisfied:),有 GUI 的感覺( 來源為文章最後的連結 )

git log --graph --pretty=format:"%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset" --abbrev-commit --date=relative

alt tag

Git 中,使用 HEAD 表示目前的版本,

git reset --hard HEAD

alt tag

如果現在要把目前版本退回到上一個版本,就可以使用 git reset 指令:

上一個版本就是HEAD~1,

git reset --hard HEAD~1

![alt

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多