Project Icon

Git-Tutorials

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

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

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

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

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

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号