在我的场景中,我正在做:
public Dictionary<int, string> CheckUserLogin(UserL User)
{
var dict = new Dictionary<int, string>();
using (SqlConnection con = new SqlConnection(conexion))
{
SqlCommand comObj = new SqlCommand("spLogin", con);
comObj.CommandType = CommandType.StoredProcedure;
comObj.Parameters.Add(new SqlParameter("@username", User.UserName));
comObj.Parameters.Add(new SqlParameter("@password", User.Password));
con.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
// Call Read before accessing data.
while (reader.Read())
{
dict.Add((int)reader["Id"],
reader["Username"]==DBNull.Value ?"":
(string)reader["Username"]);
}
}
}
return dict;
}
紧接着是:
git reset <commit>
根据我对git的理解,这个动作应该成功,并且重新做(快进)我重置的历史。
但是,我得到了:
许多文件都git pull --ff-only
,操作失败。
有谁知道为什么它没有像我预期的那样工作?谢谢!
答案 0 :(得分:1)
git reset
只有刚刚添加到索引中的非舞台文件..
在reset --hard
成功之前,您至少需要pull
(如果您确定自己没有任何工作正在进行中)。
重新(快进)我重置的历史记录。
不完全是:它将获取然后(git pull --ff-only
):
拒绝以非零状态合并和退出,除非当前HEAD已经是最新的,或者合并可以解析为快进。
它不会“快进你重置的历史记录”:reset与它无关:如果你以前做过自己的本地提交,那么合并不会是快进,无论是重置还是不重置(除非您重新设置为origin/master
,否则将丢失您的本地提交。
答案 1 :(得分:1)
git reset <commit>
实际上是执行git reset --mixed <commit>
(因为它是默认值)。
您可以选择--mixed
,--soft
和--hard
个选项:
- 软
根本不触摸索引文件或工作树(但将头重置为,就像所有模式一样)。这留下了所有 你改变的文件“要提交的更改”,就像git status所说的那样 它
- 混合
重置索引但不重置工作树(即保留更改的文件但未标记为提交)并报告 没有更新。这是默认操作。如果指定了-N, 删除的路径标记为意图添加。
- 很难
重置索引和工作树。之后对工作树中跟踪文件的任何更改都将被丢弃。
git reset
的更多选项,您可以参考git book。
根据您的情况,您可以改为使用git reset --hard <commit>
。