我在某个时候在 Git 中搞砸了一些东西,现在我们devserver
分支上的东西是错误的。我的cptools
分支中的内容是正确的。但是当我这样做时:
git checkout devserver
git merge cptools
它没有记录这两个文件是不同的。devserver
显然,我毫无意义地承诺了他们。有什么方法可以取消提交它们,devserver
以便我可以将它们合并回来?我需要 Git 从cptools
. 我怎么做?
我在某个时候在 Git 中搞砸了一些东西,现在我们devserver
分支上的东西是错误的。我的cptools
分支中的内容是正确的。但是当我这样做时:
git checkout devserver
git merge cptools
它没有记录这两个文件是不同的。devserver
显然,我毫无意义地承诺了他们。有什么方法可以取消提交它们,devserver
以便我可以将它们合并回来?我需要 Git 从cptools
. 我怎么做?
看一眼
git branch -v
”查看分支列表,git checkout branch_name
" 切换到一个分支。看git log branch_name_here
:
$ git log
commit 65471553a1f67650e1e3511463ffc881ce9724b8
Author: The Wookie <thewookied@SO.com>
Date: Sun Feb 10 23:12:21 2013 -0500
Test commit 3
commit d0fc7ffb0bc3276c6bbc20b2c8ad1e1a4e46ff3b
Author: The Wookie <thewookied@SO.com>
Date: Sun Feb 10 21:59:56 2013 +1030
Test commit 2
commit b720fdc15f2b47e8e169a5ea9372de4814ae0724
Author: The Wookie <thewookied@SO.com>
Date: Sun Feb 10 21:59:07 2013 +1030
Test commit 1
要查看提交的具体内容,请执行以下操作git diff ref1 ref2
:
$ git diff d0fc7ffb0bc3276c6bbc20b2c8ad1e1a4e46ff3b 65471553a1f67650e1e3511463ffc881ce9724b8
diff --git a/file.py b/file.py
index 14017fc..31e30f0 100644
--- a/file.py
+++ b/file.py
@@ -42,23 +42,29 @@ class Foo(object):
self.cursor = self.connection.cursor()
if (not self.db_exists):
# create the db
- self.cursor.execute('''DROP TABLE foo''')
- self.connection.commit()
...
执行git reset --hard old_ref
从日志中删除提交并重置它所做的文件更改。
即git reset --hard d0fc7ffb0bc3276c6bbc20b2c8ad1e1a4e46ff3b
撤消最新的更改并将其从提交日志中删除,只留下提交 1 和 2。