Terminal指令
认识Git之前首先要介绍几个简单的Terminal指令
Windows MacOS/Linux功能
cd cd切换目录
cd pwd显示目前所在文件夹
dir ls目前文件夹的档案列表
md mkdir创建文件夹
type nul> touch建立档案
copy cp复制档案
move mv移动档案
del rm删除档案
cls clear清除Terminal内容
※注意Git bash操作方式与Mac较相同
示例如下(Windows)
$ cd ..
//回到上一层(salecigarettesonline)
$ 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关系图
$ git config --global user.name“你的使用者名称”
$ git config --global user.email“你的Email”
//使用Git前必须要先设定使用者与Email才可以使用,我们先在全局设定
$ git config --list
//查看设定
设定完成后开启项目文件夹,输入以下指令
$ git init
//进入项目后输入指令,进行项目git初始化
输入之后会在文件夹内新增一个.git文件夹,版本控管文件都存于此文件夹内
也就是如果删除了.git文件夹后就无法再次复原档案了!
Git小知识
HEAD
目前档案比对的基准,每次commit后皆会前进
master
预设的分支名称
.gitignore
可忽略不必要的档案,于根目录加入此档案,并在里面打入需要忽略的档案
开始使用Git指令
比较常用指令
$ git status
//观看目前文件夹状态
$ git add .
//将所有档案加入暂存区
$ git commit -m“git init”
//将暂存区的档案执行commit,-m后面为commit的内容
$ git commit --amend -m“git init”
//修改最后一次commit的内容
$ git log --all
//查询所有commit纪录,没有加上--all则只显示HEAD之前的commit纪录
以下指令较不常用到
$ git reset index.html
//将index.html取消加入暂存区
$ git add -u
//将有commit过且修改的档案放入暂存区
$ git show HashID
//查看某次commit与它上一版的差异细节(没有输入HashID预设为最后一次commit)
$ git cat-file -p HashID
//查看HashID的内容,HashID至少四码以上
$ git diff
//查看档案差异
git diff使用说明
Git如何还原?
还原总共分为三种,分别是revert、checkout、reset
使用revert
$ git revert HashID -n
//复原commit并自动加一个commit,加上-n则不会自动commit
使用checkout
$ git checkout index.html
//将index.html档案还原至暂存区的状态,暂存区没有则还原至HEAD
使用reset
$ git reset --hard
//将档案还原至HEAD的状态,并清除暂存区
$ git reset HashID --hard
//重设HEAD到某个commit并清除暂存区
$ git reflog
//查看HEAD的移动纪录
$ git reset --mixed
//清除暂存区,但工作目录不变
$ git reset HashID --mixed
//清除暂存区,重设HEAD到某个commit,但工作目录不变
revert、checkout、reset的差异
revert
改变工作目录的档案
HEAD与master维持不动
需要按照顺序还原commit
自动commit
revert -n
改变工作目录的档案
HEAD与master维持不动
不会commit
checkout档案
改变工作目录的档案
HEAD与master维持不动
checkout commit or checkout branch
重设工作目录的档案
HEAD移动至commit
master维持不动
reset --hard
重设工作目录&缓冲区
HEAD与分支移动至commit
reset --mixed
重设暂存区
HEAD与分支移动至commit
reset --soft
HEAD与分支移动至commit
指令工作目录暂存区HEAD分支备注
revert重设重设往前不变新增commit
revert -n重设不变不变不变
checkout档案重设不变不变不变
checkout分支/commit重设不变重设不变
reset --hard重设重设重设重设
reset --mixed不变重设重设重设
reset --soft不变不变重设重设
操控Git分支
$ git branch
//查看所有分支
$ git branch分支名称
//新增分支
$ git branch分支名称-d
//删除分支
$ git checkout分支名称
//将HEAD移动到该分支
$ git checkout -b分支名称
//新增分支并切换HEAD
checkout会将原本分支的异动套用到新分支,若新分支有其他修改导致无法套用,则无法切换分支
$ git log --all --graph
//有线图的log纪录
使用Checkout切换分支有三种情况
正常切换
将档案异动带着一起切换
成功切换至其他分支,但工作目录维持修改的部分
无法切换
修改的档案与分支档案有冲突,解决方法如下:
reset将修改的部分舍弃
commit下次需要时再回来使用档案
stash将档案收藏起来
$ git stash save index
//将档案收藏为index
$ git stash list
//收藏列表
$ git stash pop
//取出最后一个收藏
合并分支
$ git merge dev
//将dev合并到目前分支(使用快进合并)
$ git merge --no-ff dev
//将dev合并到目前分支(不使用快进合并)
快进合并的意思是,只需移动分支即可完成合并,不使用快进合并则会产生一个commit
(merge预设是使用快进合并)
合并档案遇到冲突怎么办?
遇到冲突通常都是因为两个人一起commit同一个部分,此时则须两人一起讨论需如何修改
最后将不必要的部分删除,将档案加入暂存区,并再次commit,然后新增信息或:q离开~
使用rebase让线图变为一条线
假设我们要将dev分支合并到mester,则先切换到dev,然后输入指令
$ git rebase master
同上面,先将不必要的部分删除,将档案加入暂存区,并输入以下指令
$ git rebase --continue
这时分支就合并完成了,并且也变成了一条线拉~
在commit上粘贴标签
$ 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路径文件夹名称
//复制远端数据(shkwkj)
//将分支推送至远端,加上-f可以强制推送
$ git push
$ git clean -f
//把没有版控的档案删除
$ git gc
//清理没有用到的Object
共同学习,写下你的评论
评论加载中...
作者其他优质文章