GIT COMMANDS
git指令
分支操作
reset commit
建议reset只用于本地还没提交的commit reset后会将工作空间重置回目标commit 用于线上容易翻车
丢弃本地改动 同步为线上最新代码
拉取线上最新代码
本地代码reset到线上最新版本
1
| git reset --hard origin/<BranchName>
|
- –hard 删除工作空间改动代码,撤销commit,撤销git add .
- 注意完成这个操作后,就恢复到了上一次的commit状态
- –mixed 不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
- 这个为默认参数,git reset –mixed HEAD 和 git reset HEAD 效果是一样的
- –soft 不删除工作空间改动代码,撤销commit,不撤销git add .
revert commit(merge)
分常规commit和merge commit两种情况
当revert merge commit的时候 会提示需要-m参数
revert merge commit
使用
1
| git show 30414f610826486efa8ce8b6303f51817c4e79d9
|
能看到 merge栏有 145ae2613 9bc158141 2个commit id,
1
2
3
4
| commit 30414f610826486efa8ce8b6303f51817c4e79d9
Merge: 145ae2613 9bc158141
Author: xx <[email protected]>
Date: Fri Oct 9 15:54:04 2020 +0800
|
参数 -m 就是指定要撤销的那个提交,从左往右,从1开始数
1
| git revert 30414f610826486efa8ce8b6303f51817c4e79d9 -m 1
|
撤销145ae2613分支带来的改动
查看远程分支
查看本地分支
切换本地分支
1
| git checkout 'branchName'
|
合并本地分支
本地分支重命名
如果目标分支不是当前分支,可以使用下面代码:
1
| git branch -m 原分支名 新分支名
|
如果是当前分支,那么可以使用加上新名字
关联本地分支到远程分支
1
| git branch -u origin/feature/DACHU-act05 feature/DACHU-act05
|
获取冲突文件列表(对比2个分支差别)
1
| git diff --name-only --diff-filter=U
|
对比本地分支和线上分支
先更新下本地的远程分支
然后可以比对
1
| git log feature/LANQB-3394-2..origin/feature/LANQB-3394-2
|
参考地址:
https://www.zhihu.com/question/53601264
删除远程分支
1
| git push origin --delete LANQB-2974
|
删除本地分支
1
| git branch -d <BranchName>
|
代码操作
获取git上的项目
从远程更新代码到本地
git pull = git fetch + git merge
添加代码到索引
git add -A 和 git add . 的区别
Git Version 1.x:
Git Version 2.x:
检查当前文件状态
写入暂存区
推送至远程
1
| git push origin <BranchName>
|
查看提交纪录
1
| git log -p xxxxxxxxxxxxxxxxx
|
删除未跟踪文件
1
| git clean [-d] [-f] [-i] [-n] [-q] [-e <pattern>] [-x | -X] [--] <path>...
|
-d ## 删除未跟踪目录以及目录下的文件,如果目录下包含其他git仓库文件,并不会删除(-dff可以删除)。
-f ## 如果 git cofig 下的 clean.requireForce 为true,那么clean操作需要-f(--force)来强制执行。
-i ## 进入交互模式
-n ## 查看将要被删除的文件,并不实际删除文件
常见问题
LF will be replaced by CRLF
提交时转换为LF,检出时不转换
1
| git config --global core.autocrlf input
|
或者安装换行符切换工具
1
| sudo apt-get install dos2unix
|
1
| find . -type f | xargs dos2unix
|
or
1
| find . -type f -exec dos2unix {} +
|
切换ssh和http协议
查看当前remote
从http和ssh互相切换
1
| git remote set-url origin url.git
|
删除Git仓库所有提交历史记录,成为一个干净的新仓库
参考地址:
https://stackoverflow.com/questions/13716658/how-to-delete-all-commit-history-in-github
1
| git checkout --orphan latest_branch
|
1
| git commit -am "commit message"
|
- Rename the current branch to master
- Finally, force update your repository
1
| git push -f origin master
|
.gitignore文件中添加新过滤文件,但是此文件已经提交到远程库,如何解决?
第一步,为避免冲突需要先同步下远程仓库
第二步,在本地项目目录下删除缓存
第三步,再次add所有文件
输入以下命令,再次将项目中所有文件添加到本地仓库缓存中
第四步,添加commit,提交到远程库
1
| git commit -m "filter new files"
|