基本linux命令
基本
-
cd:改变目录
- cd..上级目录
- cd 路径
- pwd:显示当前目录
- clear:清屏
文件
- ls:列出当前目录所有文件
- touch:创建一个文件
- rm :移除文件
- rm 文件名
- mv:移动 文件夹
- mv 文件名 目录名
目录
- mkdir:创建目录
- mkdir 文件名
- rm -r:删除一个目录
- rm-r 目录名
Git命令
文件简介
.gitconfig:Git的配置文件
.gitignore:忽略文件,不添加到暂存区
/mtk/
#过滤整个mtk文件夹
*.zip
#过滤所有.zip文件
/mtk/do.c
#过滤/mtk/do.c文件fd1/*
#忽略目录 fd1 下的全部内容/fd1/*
#忽略根目录下的 /fd1/ 目录的全部内容;!/fw/bin/
!/fw/sf/
#不忽略 根目录下的 /fw/bin/ 和 /fw/sf/ 目录;
配置命令
git config --global --list:查看本地配置
git config --system --list:查看系统配置
Git原理
Working Directory:写代码的本地空间
Index:暂存区
Respository:本地仓库,有所有版本的数据
Remote:远程仓库
Git命令
git init:搭建本地仓库
git clone:克隆仓库
git clone url
git status:查看现在分支状态
git add .:提交代码至暂存区
git commit -m:提交暂存取内容至本地仓库(后边可添加注释信息)
git push:推到远程仓库
分支
git branch:查看所有本地分支
git branch -r:查看所有远程分支
git branch [branch name]:新建一个分支,仍然停留在当前分支
git checkout -b [branch]:新建一个分支,并切换到该分支
git merge [branch]:合并指定分支到当前分支
git branch -d [branch-name]:删除分支
merge与rebase
merge
rebase
冲突
(有人在你修改之前修改了master,你的master已经过时了)
git rebase
其原理是,把你的工作分支所有最新commit先摘除掉,然后基于master的最新提交拷贝一份Git tree,再将摘除的commit放在树的最前面。
- 首先切换到master分支
git checkout master
- 更新本地master代码
git pull origin master
- 切换到工作分支
git checkout work-for-project-1
- 做rebase操作
git rebase master
3. 产生冲突
如果在rebase的过程中,你在工作分支上修改过的文件,碰巧有人在master
上也修改过同一个文件的同一行内容,这时候冲突产生了。提示信息类似如下:
error: could not apply fa39187... something to add to patch A
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
Could not apply fa39187f3c3dfd2ab5faa38ac01cf3de7ce2e841... Change fake file
4. 解决冲突
- 使用IDE或者VIM打开有冲突的文件,Git会很智能的标记出哪些内容有冲突:
If you have questions, please <<<<<<< master open an issue ======= ask your question in IRC. >>>>>>> work-for-project-1
你可以选择保留某些行,或者删除,或者更改。记得把<<<<<<<, =======, >>>>>>>这些删除掉。
- 添加改动
git add .
- 继续rebase过程
git rebase --continue
在这个过程中,你只需要解决冲突就好。不需要关注其他文件,因为这时候你并不在你的工作分支,而是在一个类似于缓存分支上。
这时要想把代码提交到远程GitHub上,需使用
git push force 或者 git push force-with-lease