本文共 3784 字,大约阅读时间需要 12 分钟。
转自:
因为我试图导入我旧的 WordPress 帖子到此博客不影响source
分支,我创建了一个新的分支,称为wpcom-importer
分支,对rake deploy
成功的运行。然而,一些我旧的 WordPress 博客包含一些特殊的字符,触发编码问题。rake
错误消息来看,我觉得我已经把转换的员额从 WordPress 的 XML 的右边的树枝上。
因此,起草了我新的职位上source
分支,但不是在wpcom-importer
分支上。然后切换到wpcom-importer
并删除一些不需要的部分的 XML 文件。然而,我不能切换回source
分支做另一个提交。因此,我用git stash
来解决问题。
完成后的草案,我犯下的变化、 切换到wpcom-importer
和"合并"上次更改对source
分支为rake preview
。在source
分支上运行预览命令的理由是为了避免在public
文件夹中的巨大变化。已经学会了做"合并",从。
被陌生与显示的数学方程kramdown 语法,我犯了一些错误在源代码中为我上source
分支写入草案时。
(上次编辑君 19,2014)
从网络图中,我意识到我在了解合并在 Git 中的错误。我不应该手动犯下同样的变化,不同的分支,但也要将它提交一次只上一个分支和合并时提交另一个分支,如果两个不同分支之间没有冲突。
我继续写<posts>
。不幸的是,我有误犯wpcom-importer
,而不是source
分支上发生的变化。我很想去
wpcom-importer
到source
分支。source
分支更改。source
分支中的更改合并到wpcom-importer
.我发出下面的命令来做到这一点。
$ git reflog # For checking purpose$ git reset --soft HEAD^ # Revert to the previous commit$ git log -3 # For checking purpose$ git status # `' should be in `... not staged for commit'$ less # For checking purpose$ git reset HEAD # Unstage ` ' for commit$ git checkout source # Go to the correct place for the commit$ git add # Add back ` ' to `source' branch$ git commit -am " " # Do the commit on the correct branch$ git checkout wpcom-importer # Go back to another branch for merging$ git merge source # Merge the changes back
"藏"的手段,去另一支在这里临时区域中未提交的更改。
用中文写的是一个 Git 命令的快速摘要。我学会了使用git stash
命令从那里。
$ git stash # save the uncommitted changes$ git stash list # show a list of stashes$ git stash show # inspect a list of stashes$ git stash pop # apply and discard the topmost stash$ git stash apply # apply but don't discard the topmost stash$ git checkout source --# copy the file from other branch
在最后一次"合并"命令, --
避免歧义因为source
可以是一个分支或文件夹的名称在这种情况下。此外,此命令会影响提交历史。
这里是关于重置工作树与以前的版本更多的命令。
$ git reset --soft HEAD^ # Revert to the previous commit without changing the files$ git reset --hard HEAD~2 # Take a further step back from `HEAD' and discard all changes in the files in the disappeared commits
本手册的git reset
,看到了一个链接到git revert
,和听不懂那些从那里的两个命令之间的区别。
如果你想要撤消提交以外最新的一个分支, 是你的朋友。
网页中的堆栈溢出真的是我的朋友。()git revert
不会覆盖提交历史,所以它适合发布的更改,虽然git reset
可以改写历史。
请参阅撤消合并或拉和git reset
为解释手册 》 中的以下部分。
供应链管理会说:
Automatic merge failed; fix conflicts and then commit the result.
因此,问题合并没有一直致力。简单地运行git reset --hard
将解决这个问题。
使用ORIG_HEAD
而不是HEAD
的分支合并前提示。(即git reset --hard ORIG_HEAD
)
(添加在 2014 年 6 月 20 日)
乐极生悲可能在git merge
中发生的冲突,其中一个可能运行git diff <branch1>..<branch2>
看出两个分歧分支之间的差异。然而,比较大块,并不表明添加和删除每个分支上。-
在 diff 大块可以引起要么
<branch1>
;或 <branch2>
中的内容.在<branch2>
上运行git merge <branch1>
在不同情况下给出了不同的结果。
-
比较中大块将插入到<branch2>
.-
大块会插入到<branch1>
.为预测是否会有冲突,需要知道每个分支上做更改已完成。因此,我们需要比较尖端的每个分支与他们共同的祖先。
让我举出两个例子作为说明。
一个人有这样一个文件。
123 | line 1line 2line 3 |
然后它被分为两个分支。
12 | line 2line 3 |
12 | line 1line 3 |
运行git diff <branch1>..<branch2>
,一个获取
+line 1-line 2 line 3
一个人有这样一个文件。
1 | line 3 |
然后它被分为两个分支。
12 | line 2line 3 |
12 | line 1line 3 |
运行git diff <branch1>..<branch2>
一个获取
+line 1-line 2 line 3
观察: diff 帅哥中的两个例子都相同,即使它们的共同祖先和文件中的更改是不同.
从上述的子部分中,很明显那个需要比较尖的每个分支上用两个分支的共同祖先。来看看如何<branch1>
已被修改,git diff <branch2>...<branch1>
可以用来比较的提示<branch1>
与的共同祖先<branch1>
和<branch2>
.