git 極簡教程

git 極簡教程

git 學習資源

核心理解

三個區域

  • 工作目錄
  • 索引(暫存區)
  • 歷史

提交

git的提交是文件歷史狀態的快照 ,Git 中的分支,其實本質上僅僅是個指向 commit 對象的可變指針。Git 會使用 master 作爲分支的默認名字。在若干次提交後,你其實已經有了一個指向最後一次提交對象的 master 分支,它在每次提交的時候都會自動向前移動。

HEAD

Git 是如何知道你當前在哪個分支上工作的呢?其實答案也很簡單,它保存着一個名爲 HEAD 的特別指針。它是一個指向你正在工作中的本地分支的指針(譯註:將 HEAD 想象爲當前分支的別名)。每次提交後 HEAD 隨着當前分支一起向前移動 。切換到哪個分支,哪個分支就成爲自動向前移動的指針HEAD。 HEAD^ 代表上一次提交的版本,HEAD^^ 代表上上次提交的版本,HEAD~100 表示上 100 次提交的版本

合併

合併分兩種情況,fast-forward(快進),分叉合併。前者中兩個分支是直系親屬,後者,沒有直系關係,但是有共同的祖先。

本地常用操作

本地新建、添加、提交

mkdir rep_name
cd rep_name
git init # 本地倉初始化
...
git add . # 添加到索引
git commit -m 'xxx' # 提交到歷史
git status # 查看狀態
git log --graph --pretty=oneline --abbrev-commit # 查看提交、合併歷史

查看、刪除暫存區文件

git ls-files # 查看
git rm -r --cached <file_name>

分支新建、切換、刪除、合併、重命名

git branch # 查看分支列表
git branch <branch_name> # 新建分支
git checkout <branch_name> # 切換分支
git branch -b <branch_name> # 新建分支並切換
git branch -d <branch_name> # 刪除分支

# 切換到 master 分支,與另一個分支合併
git checkout master
git merge <branch_name>
git branch -m <old_name> <new_name> # 分支重命名

移動 HEAD 到指定提交、分支、標籤(切換)

每一次提交都是一個歷史節點,而 HEAD、分支、標籤分佈在部分歷史節點之上。

git checkout <branch_name> | <tag_name> | <commit_id> # 移動 HEAD 到指定分支、標籤、提交(索引和工作目錄同步改變)

git checkout HEAD~ # 將head指向上一次提交的節點,同時恢復索引和工作目錄,分支指向不動

版本回退與文件恢復

  • 恢復上一次提交到索引 git reset HEAD <file>
  • 恢復索引到工作目錄 git checkout -- <file>
  • 版本回退 git reset --hard <commit_id> | HEAD^ 注: 與切換分之不同
    • 重新回到回退之前版本,使用 git reflog 找到對應的 commit id

修改提交(覆蓋提交)

git commit --amend
git commit --amend --no-edit

與遠程倉(github)交互

建立 ssh 連接

  • 本地安裝 git
  • 產生密鑰
     ssh-keygen -t rsa
     # 之後輸入三個回車
    
  • C:\Users\Administrator\.ssh\id_rsa.pub 中的公鑰添加到 github 個人賬戶
  • 測試
     ssh -T [email protected]
    

本地倉與遠程倉關聯

本地先有

  • 在 github 新建倉庫
  • 本地與遠程建立關聯
    git remote add origin [email protected]:username/rep_name.git # 建立關聯
    git remote # 查看與之關聯的遠程倉
    git remote remove origin # 取消與遠程倉的關聯
    

遠程先有

git clone [email protected]:username/rep_name.git # 默認 clone master 分支
git clone -b <branch_name> <address> # clone 指定分支

本地與遠程的同步

git fetch origin <branch_name> # 下載遠程分支到本地
git pull origin <branch_name> # 下載遠程分支到本地,並與當前分支合併
git push origin <branch_name> # 上傳當前分支,並與遠程倉指定分支合併

其它

git branch -r # 查看遠程分支

gitignore 規則

新建 .gitignore 文件,在其中添加 git 命令忽略的目錄。但是,.gitignore 只能忽略那些原來沒有被 track 的文件,如果某些文件已經被納入了版本管理中,則修改 .gitignore 是無效的,解決辦法:

git rm -r --cached .
git add .
git commit -m 'update .gitignore'

git 別名

建議直接複製更改 .gitconfig 文件

[user]
	email = [email protected]
	name = daibingh
[alias]
	st = status
	co = checkout
	ci = commit
	br = branch
	lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit

github pages 教程

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章