Git - 学习笔记

Terminal 指令

认识 Git 之前首先要介绍几个简单的 Terminal 指令

WindowsMacOS/Linux功能cdcd切换目录cdpwd显示目前所在资料夹dirls目前资料夹的档案列表mdmkdir创建资料夹type nul>touch建立档案copycp複製档案movemv移动档案delrm删除档案clsclear清除Terminal内容

※各个终端机指令皆有差异,Git Bash 操作方式与 Mac 较相同

範例如下( Windows )

$ cd ..// 回到上一层$ cd test// 移动到下一层的 test 资料夹$ md test// 建立 test 资料夹$ type nul> test.txt// 建立 test.txt 档案$ copy test.txt test2.txt// 複製 test.txt 后建立一档案为 test2.txt$ move test.txt aa\bb.txt// 将 test.txt 移动至 aa 资料夹内,并改名为 bb.txt$ del test.txt// 删除 test.txt 档案

Git 初始化

使用 Git 前必须要先设定使用者与 Email 才可以使用,所以我们先在全域设定

$ git config --global user.name "你的使用者名称"$ git config --global user.email "你的Email"$ git config --list// 查看设定

设定完成后开启专案资料夹,输入以下指令进行

$ git init

初始化后会在资料夹内新增一个 .git 资料夹,版本控管文件都存于此资料夹内,如果删除此资料夹就无法再次复原档案了!

Git 架构与基本知识

我们先来看一下 Git 的架构,共分为工作区、暂存区、本地端档案库与远端档案库,前三个皆在本地端进行,只有最后一个是在远端的 Server 进行
Git 关係图

HEAD:目前档案比对的基準,也就是目前所在的 commit 位置master:预设的分支名称.gitignore:此档案内设定的档案名称不受 git 的控管-f:在指令后方加上 -f 可以强制执行该指令@:可以代替指令中的 HEAD

开始使用 Git 指令

首先介绍几个比较常用的指令

$ git status// 观看目前资料夹状态$ git add .// 将所有档案加入暂存区$ git commit -m "git init"// 将暂存区的档案进行 commit,-m 后面为 commit 的讯息$ git commit --amend -m "git init again"// 修改最后一次 commit 的讯息$ git commit --amend --no-edit// 将暂存区的档案併入最后一次 commit$ git log// 查询所有 commit 纪录$ git log -p // 参数 -p 显示 commit 详细资讯$ git log --oneline --graph// 参数 --oneline 显示更精简的 commit 纪录// 参数 --graph 显示 commit 线图$ git log --all// 参数 --all 显示包含 branch 的纪录

再来是比较不常用到的指令

$ git reset index.html// 将 index.html 取消加入暂存区$ git add -u// 将有 commit 过且修改的档案放入暂存区$ git show HashID// 查看某次 commit 与它上一版的差异细节(没有输入 HashID 预设为最后一次 commit)$ git cat-file -p HashID// 查看 HashID 的内容,HashID 至少四码以上$ git blame 档案名称// 查看档案内容 commit 的时间点与作者$ git diff// 查看档案差异

diff 是比较少用的指令,在检查档案差异时可使用,使用方法如图
git diff使用说明

指令缩写

Git 提供我们在全域设定缩写,可以将常输入的指令记录下来,可以少打一些字
详细设定可在 git config --list 内检视

$ git config --global alias.co checkout// 设定 checkout 缩写为 co$ git config --global alias.ci commit// 设定 commit 缩写为 ci$ git config --global alias.st status// 设定 status 缩写为 st$ git config --global alias.br branch// 设定 branch 缩写为 br

Git 如何还原?

还原总共分为三种,分别是 revertcheckoutreset

revert

$ git revert HashID -n// 复原 commit 并自动加一个 commit,加上 -n 则不会自动 commit

checkout

$ git checkout index.html// 将 index.html 档案还原至暂存区的状态,暂存区没有则还原至 HEAD

reset

reset HEAD^$ git reset --hard// 将档案还原至 HEAD 的状态,并清除暂存区$ git reset HashID --hard// 重设 HEAD 到某个 commit 并清除暂存区$ git reset --mixed// 清除暂存区,但工作目录不变$ git reset HashID --mixed// 清除暂存区,重设 HEAD 到某个 commit,但工作目录不变$ git reflog// 查看 HEAD 的移动纪录

revert、checkout、reset 差异

revert

改变工作目录的档案HEAD 与 master 维持不动需要按照顺序还原 commit自动 commit

revert -n

改变工作目录的档案HEAD 与 master 维持不动不会 commit

checkout 档案

改变工作目录的档案HEAD 与 master 维持不动

checkout commit or checkout branch

重设工作目录的档案HEAD 移动至 commitmaster 维持不动

reset --hard

重设工作目录 & 暂存区HEAD 与分支移动至commit

reset --mixed

重设暂存区HEAD 与分支移动至commit

reset --soft

HEAD 与分支移动至commit指令工作目录暂存区HEAD分支备注revert重设重设往前不变新增 commitrevert -n重设不变不变不变checkout 档案重设不变不变不变checkout 分支/commit重设不变重设不变reset --hard重设重设重设重设reset --mixed不变重设重设重设reset --soft不变不变重设重设

操控 Git 分支

$ git branch// 查看所有分支$ git branch 分支名称// 新增分支$ git branch 分支名称 -d// 删除分支,使用 -D 可强制删除$ git checkout 分支名称// 将HEAD移动到该分支$ git checkout -b 分支名称 // 新增分支并切换HEAD$ git branch -m index index2// 修改分支名称,将 index 分支修改为 index2

checkout 会将原本分支的异动套用到新分支,若新分支有其他修改导致无法套用,则无法切换分支

使用 Checkout 切换分支有三种情况

正常切换将档案异动带着一起切换
成功切换至其他分支,但工作目录维持修改的部分无法切换
修改的档案与分支档案有冲突,解决方法如下:reset 将修改的部分捨弃commit 下次需要时再回来使用档案stash 将档案收藏起来
$ git stash save index// 将档案收藏为index$ git stash list// 收藏列表$ git stash pop// 取出最后一个收藏

合併分支

$ git merge dev// 将 dev 合併到目前分支 (使用快进合併)$ git merge dev --no-ff// 将 dev 合併到目前分支 (不使用快进合併)

快进合併的意思是,只需移动分支即可完成合併,不使用快进合併则会产生一个 commit
(merge 预设是使用快进合併)

合併档案遇到冲突怎么办?

遇到冲突通常都是因为两个人一起 commit 同一个部分,此时则须两人一起讨论需如何修改,最后将不必要的部分删除,将档案加入暂存区,并再次 commit ,然后新增讯息或 :q 离开~

使用 rebase 让线图变为一条线

假设我们要将 dev 分支合併到 mester,则先切换到 dev,然后输入指令

$ git rebase master

同上面,先将不必要的部分删除,将档案加入暂存区,并输入以下指令

$ git rebase --continue

这时分支就合併完成了,并且也变成了一条线拉~

在 commit 上贴上标籤

$ git tag "v4.0" HashID// 在该 HashID 上贴上 v4.0的标籤$ git tag -a "v4.0" -m "update"// 在目前 HEAD 上贴上 v4.0的标籤,讯息为 update$ git tag -d "v4.0"// 删除 v4.0 标籤$ git cat-file -p "v4.0"// 查看 v4.0 标籤的讯息

Git 远端操作

$ git init --bare// 建立远端档案库$ git remote add origin 路径// 将本地端的档案库连结至远端$ git remote show origin// 查看档案库资讯$ git ls-remote 路径// 查看远端分支$ git fetch// 抓取远端 commit 纪录$ git merge origin/master// 将本地端合併远端分支$ git branch -u origin/master master// 将远端的 master 设定为预设分支$ git pull// 等于 fetch + merge$ git romote remove origin// 删除远端档案库$ git clone 路径 资料夹名称// 複製远端资料$ git push// 将分支推送至远端,加上 -f 可以强制推送$ git clean -f// 把没有版控的档案删除$ git gc// 清理没有用到的 Object

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章