git 的进阶用法

学习记录贴:

查看 branch 之间的关系图:

git log --graph --decorate --oneline --simplify-by-decoration --all

-–decorate 标记会让git log显示每个commit的引用

-–simplify-by-decoration 只显示被branch或tag引用的commit

-–oneline 一行显示

原贴位置:https://juejin.im/post/5ed7b02fe51d457867169a7b?utm_source=gold_browser_extension

echo > 输出重定向

echo >> 追加重定向

如果有两个不同的分支,则 git merge 对于记录它们合并的时间非常有用

在正常工作中,git rebase 更为合适

设置沙盒,进行模拟实验

git init /tmp/rebase-sandbox

cd /tmp/rebase-sandbox

git commit --allow-empty -m'Initial commit'

如果遇到麻烦,运行 rm -rf /tmp/rebase-sandbox 即可

修正最近提交 amend

git commit -a --amend 

-a 自动将所有 git 已经知道的文件进行缓存

--amend 将更改的内容压扁到最近的提交中

git show 查看修复的提交

修复比较旧的提交 fixup

git rebase -i HEAD~3

git rebase -i master  // 快速遍历所有提交

git rebase -i origin/master // 编辑所有尚未合并到上游的提交

1)、此命令会打开文本编辑器,显示最近的三次提交

2)、修改相应的需要合并的提交的 pick  为 fixup(可以使用 f 来进行缩写)

3)、并移动到需要修复的提交之后。

4)、修改完成后,保存并退出编辑器

5)、使用 git log -2 --oneline 查看日志,验证结果(-2代表最近的两次日志)

-i 代表交互式

HEAD~3 代表最近的三次提交

将多个提交压扁为一个 suqah

1)、git rebase -i master

2)、将除第一行外的每个 pick 改变为 squash 压扁,保存并退出

3)、修改提交信息,保存并退出,然后检查 git 日志

git pull --rebase

在由上游更新的分支(例如:远程分支)上做一些提交,git pull 会创建一个合并提交,默认等同于

git fetch origin <barnch>

git merge origin/<branch>

假设本地分支 <branch> 配置为从原始远程跟踪 <barnch> 分支,即:

git config branch.<branch>.remote

git config branch.<branch>.merge 

如下方式会让历史记录更清晰:git pull --rebase,基本等同于

git fetch origin

git rebase origin/<barnch>

将变基方式作为默认行为:git config --global pull.rebase true

变基git rebase

使用 rebase 命令可以使我们的提交历史更干净简洁。

master 分支和 <branch>分支同时修改一个文件时,rebase 解决冲突完之后,还能保证分支干净简洁

git rebase <branch>

当遇见冲突时,首先解决冲突

然后 git add .

然后继续 rebase 合并:git rebase --continue

git merge --abort 中止合并

git rebase --onto master feature-1 feature-2

变基前:变基后:

 git 撤回 commit:git reset

撤回上一个版本:git reset HEAD^   git reset HEAD~

撤回上 n 个版本:git reset HEAD~n

默认参数:--mixed 删除工作空间改动代码,撤销commit,并且撤销git add,但是修改的代码不会被删除

--soft 撤销 commit,不撤销 add 

--hard 删除巩固走空间改动代码,撤销 commit,并且撤销 add

 git 撤回 add: reset

撤回 add 提交:git reset HEAD

git 将本地分支推送到远程并设置为上游分支:

git push --set-upstream origin 本地分支

git 设置本地分支的上游分支:

git branch --set-upsteam-to origin/远程分支 本地分支

git 更新最新的 commit message

git commit --amend

git 强制推送到远程分支

git push -f

git 暂存

 git stash  将文件放进暂存区

git stash pop 将暂存区的文件释放

git 合并两个远程分支

git remote -v  显示所有远程仓库

git remote add [short_name] [url]  添加远程版本库

git remote show [short_name] 显示某个远程版本库的信息

git remote rm name 删除远程仓库

git remote rename old_name new_name  修改仓库名

 git fetch [short_name]  获取远程代码库,会首先检查本地仓库和远程仓库的差异,检查哪些不存在于本地仓库,然后将这些变动的提交拉取到本地

在远程仓库1的本地分支,合并远程仓库2的远程分支,使用 git merge 远程仓库2

解决(fatal: refusing to merge unrelated histories)

git merge [远程分支2] --allow-unrelated-histories

删除远程分支上已经不存在的分支

 git remote prune origin

 

 
 
 
 
 
 
 
 
 
 
posted @ 2020-06-05 15:57  z春眠不觉晓z  阅读(371)  评论(0编辑  收藏  举报