📄 Git快速入門

📄 Git快速入門

Git分爲3個區,工做區,暫存區,本地庫

💿 資源git

其餘資料(簡潔):https://www.yiibai.com/gitshell

其餘資料(較複雜):https://www.liaoxuefeng.com/w...緩存

Git快速入門:https://www.bilibili.com/vide...bash

Git進階:https://www.bilibili.com/vide...yii

⚙️ 安裝

  1. 官網下載:https://git-scm.com/
  2. 安裝:next()
  3. 配置基本信息
git config --global user.name "Your Name"
git config --global user.email "email@example.com"

# example
git config --global user.name "SunSeekerX"
git config --global user.email "1647800606@qq.com"

🔨 經常使用指令

指令 說明
初始化
git init 把本地的目錄變成git本地倉庫(執行一次便可)
git remote add [遠程地址別名] [遠程倉庫地址] 將你本地倉庫與遠程倉庫關聯起來(通常關聯一個地址便可)
經常使用操做
git status 查看本地倉庫文件狀態
git add -A 添加整個工做區全部發生改變的文件到暫存區
git commit -m 'Commit message' 將暫存區文件放到本地倉庫,-m後面接註釋寫上本次更改的地方
git pull [遠程地址別名] [遠程倉庫分支] 合併遠程倉庫的更新(push以前必須先合併)
git push -u [遠程地址別名] [遠程倉庫分支] 將本地當前分支的commit推送到遠程指定分支,(-u指定該遠程地址爲默認,後面就能夠不加任何參數使用git push了)
建立ssh key
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" 建立一個ssh key,直接回車,文件存在,不用的直接刪除目錄,有用的就直接複製ssh key
clip < ~/.ssh/id_rsa.pub 把密鑰放在剪貼板

💻 Git命令行操做

📁 本地庫操做

🔨 基本操做

基本操做命令
0️⃣ 初始化
git init
# Initialized empty Git repository in C:/Users/SunSeekerX/Desktop/git/.git/
1️⃣ 狀態查看
git status
# 查看工做區,暫存區的狀態
2️⃣ 添加文件到暫存區
git add [file name]
git add . # 添加全部發生改變的文件 (操做的對象是當前目錄下的全部變動,. 表示當前目錄。)
git add -A # 添加全部發生改變的文件(操做的對象是整個工做區的全部變動,不管當前位於那個目錄下。)
git add -u # 添加全部發生改變的文件(操做的對象是正個工做區已經跟蹤的變動,不管當前位於那個目錄下。)
3️⃣ 移除暫存區文件
git rm --cached [file name]
4️⃣ 暫存區提交到本地庫
git commit -m 'commit message'
5️⃣ 查看提交記錄
git log
# 打印詳細的日誌信息
# (HEAD -> master) HEAD爲指針指向當前版本
# 1.多屏控制
# 1.1:格向下翻頁
# 1.2:向上翻頁
# 1.3:退出
git log --pretty=oneline
# 以一行顯示commit信息,提交的hash值徹底顯示,(沒法顯示回退版本以前的commit版本信息)
git log --oneline
# 以一行顯示commit信息,提交的hash值只顯示一部分,(沒法顯示回退版本以前的commit版本信息)
git reflog
# 以一行顯示commit信息,而且顯示出HEAD指針須要移動的步數,(能夠顯示回退版本以前的commit版本信息)
# 前面7個字符顯示hash
# HEAD@{1}: 大括號內顯示須要移動的步數
6️⃣ 版本前進後退
# 本質:移動HEAD指針到某個指定的commit版本上

### 基於索引值[推薦]
git reset --hard [hash]

### 使用^符號:只能後退
git reset --hard HEAD^
# 一個^回退一步,n個後退n步

### 使用~符號:只能後退
git reset --hard HEAD~n
# 表示回退n步


####### reset 參數解釋
--soft 
# 1僅在本地庫移動HEAD指針
--mixed 
# 1.會在本地庫移動HEAD指針
# 2.重置緩存區
--hard
# 1.會在本地庫移動HEAD指針
# 2.重置緩存區
# 3.重置工做區
7️⃣ 比較文件差別
git diff
# 比較全部文件,工做區的文件和暫存區進行比較
git diff [文件名]
# 將工做區的文件和暫存區進行比較
git diff [本地庫中的歷史版本] [文件名]
# 將工做區的文件和本地庫中的歷史記錄版本進行比較

🔨 分支管理

說明

簡介:在版本控制過程當中,使用多條線同時推動多個任務。ssh

好處:各個分支在開發的過程當中,若是某一個分支開發失敗,不會對其餘分支形成任何影響,刪除從新開始便可。ide

初始化git倉庫默認建立一個master分支fetch

其餘分支習慣以feature_[name]命名url

主分支有bug去修復,習慣開分支爲hot_fix進行修復,修復完pull-requestmaster分支命令行

由於主分支通常24小時不間斷運行
graph LR
    start(project) -- branch --- hot_Fix((hot_Fix))
    start --branch--> master((master))
    start --branch--> feature_theme((feature_theme))
    start --branch--> feature_game((feature_game))
    
    master --new_branch--> hot_Fix
    hot_Fix --fix_bug--> hot_Fix_commit_A
    hot_Fix_commit_A --merge--> master_commit_A
    
    master --commit--> master_commit_A
    
    feature_theme --success_commit--> theme_commit_A
    theme_commit_A --merge--> master_commit_A
    feature_theme --fail--> delete_branch
    
    feature_game --success_commit--> game_commit_A
    game_commit_A --merge--> master_commit_A
    feature_game --fail--> delete_branch
0️⃣ 查看當前全部分支
git branch -v
1️⃣ 建立新的分支
git branch [分支名]
2️⃣ 切換分支
git checkout [分支名]
3️⃣ 合併分支
# 1.切換到接受修改的分支上(被合併,增長新內容)
git checkout [分支名]
# 2.合併分支
git merge [有新內容的分支]
4️⃣ 解決衝突
# 找到衝突的文件解決衝突
# 添加解決修改的文件
# commit

📡 遠程庫操做

若是是本地初始的倉庫須要添加遠程倉庫地址,克隆倉庫不須要。

可使用http或者ssh方式

http須要帳戶名和密碼,ssh須要配置ssh-key

🔨 基本操做-本地初始倉庫

0️⃣ 查看當前倉庫遠程地址
git remote -v
1️⃣ 添加遠程倉庫地址
git remote add origin [遠程地址]
2️⃣ 合併遠程倉庫代碼
git pull [遠程地址別名(origin)] [遠程倉庫分支]
# 至關於 fetch + merge

# 若是出現 fatal: refusing to merge unrelated histories
# 其實這個問題是由於 兩個 根本不相干的 git 庫, 一個是本地庫, 一個是遠端庫, 而後本地要去推送到遠端, 遠# 端以爲這個本地庫跟本身不相干, 因此告知沒法合併
# 具體的方法, 一個種方法: 是 從遠端庫拉下來代碼 , 本地要加入的代碼放到遠端庫下載到本地的庫, 而後提交上# 去 , 由於這樣的話, 你基於的庫就是遠端的庫, 這是一次update了
# 第二種方法:
# 使用這個強制的方法
git pull origin master --allow-unrelated-histories 
#  把兩段不相干的 分支進行強行合併
3️⃣ 推送代碼
git push [遠程地址別名(origin)] [遠程倉庫分支]
4️⃣ 抓取倉庫內容
git fetch [遠程地址別名(origin)] [遠程倉庫分支]
5️⃣ 切換到抓取分支上
git checkout [遠程地址別名(origin)]/[遠程倉庫分支]
6️⃣ 合併遠程抓取的內容
git merge [遠程地址別名(origin)]/[遠程倉庫分支]

🔨 基本操做-克隆遠程倉庫

其餘操做同 基本操做-本地初始倉庫
0️⃣ 克隆遠程倉庫
git clone [遠程倉庫地址]

🔨 其餘操做

0️⃣ 查看當前項目配置文件
git config --local -l
1️⃣ 查看當前項目配置文件並編輯
git config --local -e 
# 等同於
git config -e 
#[remote "origin"]
#       url = https://gitee.com/SunSeekerX/test.git
#       fetch = +refs/heads/*:refs/remotes/origin/*
# 此處配置了遠程地址`origin`的地址和抓取信息
# [branch "master"]
#       remote = origin
#       merge = refs/heads/master
# 此處配置了默認pull和push的遠程地址和合並分支名
2️⃣ 撤銷本地工做區當前全部更改
git checkout -- .

❗️ 注意

0️⃣ win10切換帳戶
在win10上使用http方式,win10會記錄用戶名和密碼,須要切換帳戶須要到

控制面板\全部控制面板項\憑據管理器中找到本身的帳戶名和密碼進行刪除,而後就能從新輸入用戶名和密碼

1️⃣ 設置ssh-key
百度 Git 配置ssh key

Fork and pull request

相關文章
相關標籤/搜索