Skip to content

abelshare/git-learining

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 

Repository files navigation

GIT 基礎教程

GIT 介紹

Git 是一個開源的分佈式版本控制系統,可以有效、高速地處理從很小到非常大的項目版本管理。

git

git
Workspace:工作區
Index / Stage:暫存區
Repository:倉庫區(或本地倉庫)
Remote:遠程倉庫

GIT 四種狀態

  1. 已修改:表示修改了文件,但還沒添加到暫存區中。
  2. 已暫存:表示修改了文件,已添加到暫存區中。
  3. 已提交:表示文件已經安全地保存在本地倉庫中。
  4. 已推送:表示已經同步至遠程服務器中。

git
工作區,暫存區,倉庫區

GIT 常用命令

初始化

git init

# 在當前目錄新建一個Git代碼庫
git init

# 新建一個目錄,將其初始化為Git代碼庫
git init [project-name]

git clone [url]

# 下載一個項目和它的整個代碼歷史
git clone [url]

git remote add origin [url]

# 增加一個新的遠程倉庫,並命名
git remote add origin [url]

常規

git add [cmd|file]

#提交新文件(new)和被修改(modified)文件,不包括被刪除(deleted)文件
git add .

#提交新文件(new)和被修改(modified)文件,不包括被刪除(deleted)文件
gid add -u

#提交所有變化
git add -A

#提交指定文件
git add [file1] [file2]

git commit [cmd] :將文件提交至本地倉庫

#將文件提交至本地倉庫並添加說明
git commit -m "message"

#將文件(包括沒有執行`add`命令的文件)提交至本地倉庫並添加說明
git commit -a -m [message]

#可以修改上一次的提交信息。
git commit --amend -m "message"

#提交指定文件
git commit -o [file] -m "message"

git status

# 顯示有變更的文件
git status

git reset

# 重置暫存區的指定文件,與上一次commit保持一致,但工作區不變
git reset [file]

# 重置暫存區與工作區,與上一次commit保持一致,危險
git reset --hard [commit]

# 重置當前分支的指針為指定commit,同時重置暫存區,但工作區不變
git reset [commit]

# 重置當前HEAD為指定commit,但保持暫存區和工作區不變
git reset --keep [commit]

git tag [cmd]

# 列出所有tag
git tag

# 新建一個tag在當前commit
git tag [tag]

# 新建一個tag在指定commit
git tag [tag] [commit]

# 刪除本地tag
git tag -d [tag]

git log

# 顯示當前分支的版本歷史
git log

# 顯示當前分支簡約版的歷史
git log --pretty=oneline

分支管理

git branch

# 列出所有本地分支
git branch

# 列出所有遠程分支
git branch -r

# 列出所有本地分支和遠程分支
git branch -a

# 新建一個分支,但依然停留在當前分支
git branch [branch-name]

# 新建一個分支,並切換到該分支
git checkout -b [branch]

git checkout

# 恢復到某個指定commit
git checkout [commit]

# 切換到某個分支
git checkout [branch-name]

# 恢復暫存區的指定文件到工作區
git checkout [file]

# 恢復某個commit的指定文件到暫存區和工作區
git checkout [commit] [file]

git merge

# 合併指定分支到當前分支
git merge [branch]

git cherry-pick

# 選擇一個commit,合併進當前分支
git cherry-pick [commit]

遠程操作

git push

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

git pull

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

git fetch

#獲取遠程服務器分支
git fetch

文件忽略

Git倉庫下新建名為.gitignore的文件

// 以正則匹配的方式選擇需忽略提交的文件
// 例如:

/node_modules  // 忽略node_modules/
.gitignore  // 忽略.gitignore文件
*.zip  // 忽略以.zip後綴結尾的文件

// 更多參考:https://git-scm.com/docs/gitignore

常見問題

沖突解決: Git用<<<<<<<,=======,>>>>>>>標記出不同分支的內容,刪除標記符號后,取本地或線上內容後保存即可

<<<<<<< HEAD
// 本地
Creating a new branch is quick & simple.
=======
// 遠程
Creating a new branch is quick AND simple.
>>>>>>>

工具

https://learngitbranching.js.org

作業

作業內容: 使用https://learngitbranching.js.org 工具進入沙盒環境
完成以下實際開發場景的 git 樹,并記錄下相應的命令,完成后以截圖的形式提交至講師處
截圖命名:以自己的命字命名

  1. v1 版本先行開發
  2. v1 執行近結尾時,v2 版本同時進行
  3. v1 完成合并上線,v2 同步最新代碼后繼續開發
  4. v1 進行熱修復,并合并上線,v2 同步最新代碼
    git

答案

git