终端下的其他命令
cd
进入路径,一般找文件时先 .
再/
, ..
后退
(也可进入git
仓库路径,再进入其内的文件,仓库内config
可以看到所有本地信息,HEAD
引用正在工作的分支,refs
引用,里面的heads
看所有分支,objects
里面的二位加id
用cat
反向追踪后可以看到具体的类型tree
或者blob
)
pwd
当前工作路径
ls -al
显示路径下所有文件
cat
显示文件内容,跟上具体分支显示具体id
(加上-file -t id号
反向追踪其文件类型,t
换成p
则显示指向的文件类型)
vi
进入修改文件内容界面,:wq!
退出(vi .gitignore
可以添加不被管理的类文件)
echo
在当前路径下创建新的文件
$ git help
看提示,看具体的延申在后面加上--具体
习惯上先用add
加入后,再用commit -m ''
写明操作原因
一 config
的三个作用域
$ git config --local//对某个仓库有效
$ git config --global//对当前用户所有仓库有效
$ git config --system//对系统所有登录的用户有效
//直接输入local时会报错,其他两个会给出一大串可执行的指令
$ git config --list --local
//加--list显示config的配置,什么都没有的情况下输入local会报错,输入global会显示名字和邮件,输入system显示系统信息
//不加--list直接加具体想看的内容也可以,即二中不加具体内容的格式
二 最小配置
$ git config --global user.name 'your name'
$ git config --global user.email 'your email'
//也可以用来改写信息
三 建git
库
-
已有的项目纳入管理
$ cd 项目代码所在文件夹 $ git init
-
新建的项目直接管理
$ cd 某个文件夹 $ git init your_project //会在当前路径下创建和项目名称同名的文件夹 $ cd your_project
四 将文件纳入git
管理后的部分命令
$ git commit -m'内容'
//-m写入改变的原因(写入暂存区),-am可以跳过(不推荐)
//没有加入库前用该指令会提示无法跟踪文件
延申:
1.内容如果写错了,应用
$ git commit --amend指令进入修改界面改第一行数据(只能对最近的一次)
$ git rebase -i 需要修改信息的父亲id(通用)
//进入第一个界面后将第一行的pick改为r,随后保存退出会弹出第二个界面,改第一行数据即可
2.合并连续commit内容
$ git rebase -i 需要合并几个信息的最近父亲id
//进入后找到所有合并信息中最早的那一个保持不变,其他要合并的信息的pick改为s,随后弹出第二个界面,根据第一行提示写下合并的原因
//如果是间隔的,保证合并的几个连续(在见面调整顺序)即可,不需要合并的依然用pick,除了初始载体其他改为s
//涉及到最初的commit时要自己手写进去
3.消除最近几次commit
$ git reset --hard 要消除commit的id(会把之后的提交全部清了)
注:rebase系列命令在实操时极易出错,没有熟练度再管理正式项目时慎用
$ git add 文件名
//加入新的文件
$ git status
//显示当前仓库状态
$ git log
//看日志版本库(默认只有当前master分支,要单独看哪个分支后面加哪个即可)
延申:
$ git log --oneline -n几 --all --graph
//简便地看到所有日志,几代表看到最近几次地更改,看所有分支,图形化展示,可以拆分可以组合顺序无关
$ gitk
//图形化看版本历史,也有--all的命令,否则只是查看当前分支的演变
//定制:点view,再勾选即可(refs包含后面三个)
$ git diff
//找两个commit的差异,可以用HEAD去代替当前commit,^或者~用于找父亲,可以叠加使用,也可以加上数字
//加--cached比较暂存区和HEAD的区别
//默认下使用是比较工作区和暂存区
//比较多个时只用加一个--,随后写文件名即可;比较两个分支时不用加--,具体对哪个文件感兴趣时后面再加--文件名
$ git reset HEAD
//使暂存区恢复至HEAD(全部)
//如果指定哪个文件恢复,在后加上--文件名即可
$ git revert
//建一个新的和前一次的状态一致,可在远程仓库中使用
$ git checkout --具体的文件
//使工作区恢复至暂存区(全部)
$ git stash
//将当前工作区的内容暂时存放
$ git stash list
//看状态
$ git stash apply
//拿出来但是不删stash里面的
$ git stash pop
//拿出来丢了stash里面的
五 文件的重命名
$ git mv 原文件名 新文件名
//改日志
$ git rm 原文件
//删旧的,暂存区一块删
$ git reset --hard
//删掉暂存区内所有的更改(危险)
六 分支命令
如果在不存在的地方(用checkout
随意指向一个地方)执行命令(分离头指针的情况下),过段时间所做操作会被清理
$ git branch -av
//显示分支,-v也行
$ git checkout 分支名
//切换分支
$ git branch -b 分支名
//创建并切换至该分支(去掉-b则是只创建分支)
$ git branch -d 分支名
//删除分支,-D强力删除
$ git branch -f 分支名 提交
//让分支的下一次提交强制指向提交,提交eg.HEAD~3
$ git cherry-pick id值
//复制一条新路径,将id值的提交复制一遍添加到当前指向下
七 git
仓库的备份
$ git clone --bare file://地址 zhineng.git(任意命名)
//智能协议拷贝
$ git remote -v
$ git remote add zhineng(任意命名) 地址
//和远端仓库发生链接
$ git push zhineng(任意命名)
//把本地的信息更新到远端