git 取消merge_Git 实用笔记

73b2eaa658ce4db9e8d3846f6cf4df45.png
更新于 2019/03/28 22:29:49

git 文件状态

这里说的是已被追踪的文件

分为未修改、已修改、已放入暂存区。

824fd1d35b55930a3199df67e5c24609.png
各状态之间的转化
一般都会有两个远程分支,origin 代表自己的远程仓库,upstream 代表上游官方代码仓库

git add 命令作用:

  1. 开始跟踪新文件;
  2. 把已跟踪且修改过的文件放到暂存区;
  3. 将有冲突的文件标记为已解决;

HEAD 指针

HEAD 指针很重要,就把他放在第一项简单介绍了,官方文档中给出的解释如下:

HEAD 指向你正在工作的本地分支的指针,运行 git branch 命令,仅仅是建立了一个新的分支,但不会自动切换到这个分支中去。

远程仓库相关

 # 关联远程仓库
 git remote add [name] [xxurl]
 # 出现的问题:fatal: refusing to merge unrelated histories
 git pull origin master
 git pull origin master --allow-unrelated-histories
 git commit -m "xx"
 # 再执行 git pull origin master

 # 添加远程仓库
 git remote add [远程仓库别名] [url]
 # 远程仓库删除/重命名
 git remote rm [远程仓库别名]
 git remote rename [old] [new]

git fetch

 git fetch [remote-name]

从指定的远程仓库拉取本地仓库还没有的数据,执行之后本地仓库会拥有这个远程仓库中所有分支的引用,但不会自动合并或修改当前的工作空间。不推荐用 pull 命令,除非这个仓库只有你自己维护且不会产生冲突。实际工作中为防止冲突都用 fetch、rebase。

Github 同步 Fork 源项目更新

 # 关联官方远程仓库
 git remote add upstream http://ssx
 # 拉取官方仓库更新的数据
 git fetch upstream
 # 切换到本地 master 分支
 git checkout master
 # 把官方仓库的 master 分支合并到本地 master,完成同步且不会丢掉本地修改的内容
 git merge upstream/master
 # 更新到 GitHub 自己 Fock 的分支上
 git push origin master

a357b2b9209efc2e71db1ac2ef8c9c15.png

当官方仓库有新分支时:

f0217cef5ba3c3b47948dc4695bd47f6.png

git stash 暂存

 git stash       #将当前所有修改项(未提交)暂存,工作空间返回致上一次提交
 git stash apply #回复之前暂存的修改

git 版本回退

 # --hard 会抛弃当前工作区的修改
 # --soft 会回到之前的版本,但保留当前工作区的修改,用于重新提交
 git reset <模式> xx版本号(head表示当前版本)
 ​
 # 这时再使用 git push 会提示当前版本小于远程版本
 git push
 #  ! [rejected]        LogbackFilter_AS-176 -> LogbackFilter_AS-176 (non-fast-forward)
 # error: 推送一些引用到 'https://code.xxx.com.cn/curriculum/owl.git' 失败
 # 提示:更新被拒绝,因为您当前分支的最新提交落后于其对应的远程分支。
 # 提示:再次推送前,先与远程变更合并(如 'git pull ...')。详见
 # 提示:'git push --help' 中的 'Note about fast-forwards' 小节。
 ​
 #强制提交
 git push origin <分支> --force

.gitignore 文件

不会对已被追踪的文件起作用
  1. a.txt 文件:忽略此仓库下的全部 a.txt 文件
  2. build/:忽略所有 build 目录中的文件

git 分支创建

 # 新建一个分支并切换到那个分支上
 git checkout -b xxx
 # 等同于 git branch xxx; git checkout xxx

git commit 指定文件

 git commit [file1] [file2] -m "xxx"

git rebase 和 git merge

git rebase 看起来会让当前分支没有经过任何合并一样

git merge xx 是将 xx 分支合并到当前分支,看起来好像是提一个新的「合并的提交」; git rebase xx 是取消当前分支的提交内容,并把它们保存为一个“补丁”,把当前分支更新为最新的 xx 分支,最后把这些补丁应用到当前分支。

0c13a0d89b25a07812c5f7908bb169c6.png
当前 git 分支状态

b6d9519e18cd585835eafb9e264935c1.png
merge 操作生成了一个新的合并的提交

c52e65c6eb5ed90f08b7d32f769c1d86.png
rebase 会先将当前当前所在分支的提交取消掉

参考文章:

git rebase 使用笔记​www.jianshu.com
474b33f664335b70d25525fb1cf73390.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值