我上演了一些改变来承诺; 如何查看为下一次提交而暂存的所有文件的差异?我知道git状态,但我想看到实际的差异 - 而不仅仅是分阶段文件的名称.
我看到git-diff(1)手册页说
git diff [--options] [ - ] [...]
此表单用于查看您对索引所做的更改(下一次提交的暂存区域).换句话说,差异是你可以告诉git进一步添加到索引但你还没有.您可以使用git-add(1)暂存这些更改.
不幸的是,我无法理解这一点.必须有一些方便的单行,我可以创建一个别名,对吗?
以下C#程序(内置csc hello.cs)仅Hello via Console!在控制台和Hello via OutputDebugStringDebugView窗口中打印.但是,我看不到任何一个System.Diagnostics.*电话.这是为什么?
using System;
using System.Runtime.InteropServices;
class Hello {
[DllImport("kernel32.dll", CharSet=CharSet.Auto)]
public static extern void OutputDebugString(string message);
static void Main() {
Console.Write( "Hello via Console!" );
System.Diagnostics.Debug.Write( "Hello via Debug!" );
System.Diagnostics.Trace.Write( "Hello via Trace!" );
OutputDebugString( "Hello via OutputDebugString" );
}
}
Run Code Online (Sandbox Code Playgroud)
是否需要一些特殊的命令行开关csc?
我没有使用Visual Studio进行任何开发,这是纯粹的命令行.
我刚刚读过修改git过去提交中的单个文件,但不幸的是,接受的解决方案"重新排序"了提交,这不是我想要的.所以这是我的问题:
我偶尔会在处理(无关)功能时发现我的代码中存在错误.然后快速git blame揭示该错误已经被引入了一些提交之前(我提交了很多,所以通常它不是引入该错误的最新提交).此时,我通常这样做:
git stash # temporarily put my work aside
git rebase -i <bad_commit>~1 # rebase one step before the bad commit
# mark broken commit for editing
vim <affected_sources> # fix the bug
git add <affected_sources> # stage fixes
git commit -C <bad_commit> # commit fixes using same log message as before
git rebase --continue # base all later changes onto this
Run Code Online (Sandbox Code Playgroud)
然而,这种情况经常发生,上述序列变得烦人.特别是'互动式底板'很无聊.上面的序列是否有任何快捷方式,这可以让我修改过去的任意提交和分阶段的更改?我完全清楚这会改变历史,但我经常犯错误,所以我真的很喜欢这样的事情.
vim <affected_sources> # fix bug
git add -p <affected_sources> # Mark …Run Code Online (Sandbox Code Playgroud) 当"解构"元组时,我可以_用来表示我不感兴趣的元组元素,例如
>>> a,_,_ = (1,2,3)
>>> a
1
Run Code Online (Sandbox Code Playgroud)
使用Python 2.x,如何用函数参数表达相同的内容?我试图使用下划线:
>>> def f(a,_,_): return a
...
File "<stdin>", line 1
SyntaxError: duplicate argument '_' in function definition
Run Code Online (Sandbox Code Playgroud)
我也试图完全省略这个论点:
>>> def f(a,,): return a
File "<stdin>", line 1
def f(a,,): return a
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
还有另一种方法可以达到同样的目的吗?
我有许多不同的小类,每个小类都有几个字段,例如:
class Article:
def __init__(self, name, available):
self.name = name
self.available = available
Run Code Online (Sandbox Code Playgroud)
什么是使该name字段只读的最简单和/或最惯用的方式,所以
a = Article("Pineapple", True)
a.name = "Banana" # <-- should not be possible
Run Code Online (Sandbox Code Playgroud)
不可能了吗?
这是我到目前为止所考虑的:
使用吸气剂(呃!).
class Article:
def __init__(self, name, available):
self._name = name
self.available = available
def name(self):
return self._name
Run Code Online (Sandbox Code Playgroud)
丑陋,非pythonic - 以及许多要编写的样板代码(特别是如果我有多个字段可以进行只读).但是,它完成了工作,很容易理解为什么会这样.
用途__setattr__:
class Article:
def __init__(self, name, available):
self.name = name
self.available = available
def __setattr__(self, name, value):
if name == "name":
raise Exception("%s property is read-only" % …Run Code Online (Sandbox Code Playgroud)我的git存储库有三个分支devel,stable和customers/acme_patches.很久以前,它stable是分叉的devel,并且所有的错误修正都发生在stable.时不时地stable被合并回来devel.customers/acme_patches是一个具有一些客户特定补丁的分支.该分支未合并为devel和stable.
一些ASCII艺术来说明场景:
o---o---o customers/acme_patches?
/
o---o---1---o---o---o stable
/ \ \
o---o---o---2---o---o---o---o devel
\
o---o---o customers/acme_patches?
现在我想知道:
customers/acme_patches分叉的是什么分支- devel或者stable?我只是知道它过去曾分离过其中一个,但我不知道哪个.例如它可能已经提交1或2在上图中.
我一直在玩git log --oneline --graph,gitk但自从customers/acme_patches分开了几百次提交之后,很难按照画出的线条.
是否有一个快速命令(一个小脚本也可以),它可以以某种方式跟随提交customers/acme_patches向后找到第一个提交有两个孩子(叉点),然后确定是否在stable或在中提交devel?
在最好的情况下,我可以执行类似的操作(请原谅,我在Windows上):
C:\src> git fork-origin customers/acme_patches
stable
Run Code Online (Sandbox Code Playgroud) 我正在使用git bisect来查找导致提交的失败.但是,该范围内的许多提交肯定是无关紧要的(因为它们是对文档或单元测试的提交).我想让git bisect自动跳过影响某些目录中文件的提交.这有可能吗?
我试过的所有编译器都正确拒绝了代码
int main() {
int x = "foo";
}
Run Code Online (Sandbox Code Playgroud)
带有类型错误:const char[4]无法转换为int.为什么相同的编译器(包括Ideone.com)会给出相同的错误
int main() {
int x = + "foo";
}
Run Code Online (Sandbox Code Playgroud)
而不是(我想到的)语法错误因为+符号?我的第一个想法是const char[4]衰减指针,而指针又被视为一个整数值,因此+表示"正".虽然看起来有点牵强,但我希望看到const char*出现在错误消息中.
作为练习,我试图定义一个ruler值
ruler :: (Num a, Enum a) => [a]
Run Code Online (Sandbox Code Playgroud)
这对应于标尺功能
0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2...
Run Code Online (Sandbox Code Playgroud)
其中n列表的第th个元素(假设第一个元素对应n=1)是2的最大幂,它均匀分割n.为了使它更有趣,我试图实现ruler而不必进行任何可分性测试.
使用辅助函数
interleave :: [a] -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)
这简单地交替了两个给定列表中的元素,我想出了这个 - 但是它不起作用:
interleave :: [a] -> [a] -> [a]
interleave (x:xs) (y:ys) = x : y : interleave xs ys
interleave _ _ = []
ruler :: (Num a, Enum a) => [a]
ruler = foldr1 interleave . map repeat $ [0..]
main :: IO ()
main = print …Run Code Online (Sandbox Code Playgroud) 许多catamorphisms似乎很简单,大多数用自定义函数替换每个数据构造函数,例如
data Bool = False | True
foldBool :: r -- False constructor
-> r -- True constructor
-> Bool -> r
data Maybe a = Nothing | Just a
foldMaybe :: b -- Nothing constructor
-> (a -> b) -- Just constructor
-> Maybe a -> b
data List a = Empty | Cons a (List a)
foldList :: b -- Empty constructor
-> (a -> b -> b) -- Cons constructor
-> List a -> b
Run Code Online (Sandbox Code Playgroud)
但是,对我来说不清楚的是,如果使用相同类型的构造函数,但使用不同的类型参数会发生什么.例如,而不是传递List …