小编Win*_*Win的帖子

push vs. bundle vs. tar zcvf - 备份整个本地.git

我可以通过两个步骤将其推送到存储库来备份我的本地.git:

git push --all ~/gitrepo
git push --tags ~/gitrepo
Run Code Online (Sandbox Code Playgroud)

我可以使用git bundle备份它.

我可以通过简单地复制整个目录或将其归档(压缩!)来备份它:

tar -zcvf gitrepo.tgz .git
Run Code Online (Sandbox Code Playgroud)

并且可能有其他方法来备份整个本地.git.

现在的问题是它们是否真的相同?(例如,logs不推送子目录)

git push方法的优点是什么git bundle

可以tar -zcvf被认为是"完美的git备份"吗?

git

14
推荐指数
3
解决办法
4100
查看次数

为什么简单的`git mv`会失败?

我正在尝试重命名本地文件.git directory:

git mv MyProj/src/ts0621/foobar.c NewProjName/src/ts0629/foobar.c
Run Code Online (Sandbox Code Playgroud)

然而,git失败了:

fatal: renaming 'MyProj/src/ts0621/foobar.c' failed: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我可以发誓git mv我在重命名子目录时为我工作,但由于某种原因,文件的简单重命名不起作用.为什么?

(当然,我MyProj/src/ts0621/foobar.c在尝试发出此命令之前验证了文件是否存在)

git

13
推荐指数
1
解决办法
5871
查看次数

Git - 掌握术语

好的,所以我通过了git教程介绍,我知道如何:

  • 创建一个空的本地.git对象数据库
  • 将整个当前工作目录的内容添加到其中
  • 提交补充(s)
  • 命名一个分支
  • 创建一个远程存储库
  • .

但是经历了最初的学习过程,我遇到了很多新的术语.我觉得理解这些术语的确切含义对于在使用实时项目时不会犯下不可逆转的错误至关重要.

你能否推荐一个有条不紊地学习关键术语含义的好资料来源,例如origin,master,commit vs. push,refs,heads,clone with checkout等?

git terminology

9
推荐指数
2
解决办法
3231
查看次数

工作目录和git索引有什么区别?

混帐书定义git的指标:

Git索引用作工作目录和存储库之间的临时区域.您可以使用索引构建一组要一起提交的更改.创建提交时,提交的内容是索引中当前的内容,而不是工作目录中的内容.

但是我仍然很难理解它,特别是突出的声明"所承诺的不是我工作目录中的内容".

到目前为止,在我有限的使用Git的工作,一切都在工作目录始终致力于,如果我这样做:

git add <all new files in the working directory>
git commit -a -m "git will refuse to commit without this comment" 
Run Code Online (Sandbox Code Playgroud)

git然后提交所有修改过的文件以及所有新文件.

那么,实际上,我的工作目录暂存区域?

我不确定git index它是什么以及它如何被解释为临时区域.

你能解释一下吗?

git git-commit git-index

8
推荐指数
3
解决办法
4230
查看次数

Git:如何撤消提交*和*恢复到最后一个分支

哦哦...我错误地提交了一个相当复杂的更改(包括子目录和文件重命名),却不知道我在做什么(或者Git会做什么).

我现在想要撤消所有这样的事情:

  1. 提交完全颠倒过来(好像它从未完成过,也许从历史中删除它)
  2. 将当前工作目录(在哪里.git)恢复到某个分支(最后一个将立即执行).

我找到了对git reset --softgit reset --hard的引用,但我已经向自己证明了我可以通过过早地使用命令而不完全理解它来做真正的损害.:)

我找到了git reset手册页,但我仍然感到困惑:

  1. 什么是HEAD
  2. HEAD和之间有什么区别 * master
  3. 在我的情况(见上文),我需要使用--soft,--hard或其它(3个选项)?
  4. 我是否需要运行另一个命令(完成后git reset)来"完成"逆转?

更新:阅读以下答案后:

  1. 我是否正确理解在我的情况下我需要做的就是发出一个命令git reset --hard HEAD^
  2. 如何验证反转是否正确执行?

git git-revert git-reset

7
推荐指数
1
解决办法
8164
查看次数

WinMerge通过git difftool不断提示输入第二个文件

我使用@ VonC的优秀指令来配置我的开发系统,以便git difftool <BRANCH1> <BRANCH1>调用WinMerge.这是我做的:

  1. 放置以下内容~/.gitconfig:

    [DIFF]

    tool = winmerge
    
    Run Code Online (Sandbox Code Playgroud)

    [difftool"winmerge"]

    cmd = winmerge.sh \"$LOCAL\" \"$REMOTE\"
    
    Run Code Online (Sandbox Code Playgroud)

    [difftool]

    prompt = false
    
    Run Code Online (Sandbox Code Playgroud)
  2. 创建了一个/usr/bin/winmerge.sh包含以下内容:

    echo Launching WinMergeU.exe: $1 $2

    "C:/Program Files (x86)/WinMerge/WinMergeU.exe" -e -ub "$1" "$2"

现在,当我尝试通过启动WinMerge时git difftool <BRANCH1> <BRANCH1>,我收到了似乎正确的参数传递:

Launching WinMergeU.exe: /tmp/21qMVb_file1.c /tmp/1ACqik_file1.c

但是,由于一些奇怪的原因,而不是WinMerge并排显示两个文件,它提示输入第一个文件作为右侧,第二个文件接受为左侧:

[WinMerge应该显示2个文件而不是一个

为什么会这样?我在配置步骤中遗漏了什么?

PS当我在命令行输入时winmerge.sh file1.c file2.c,WinMerge会立即并排显示两个文件,就像我期望的那样.

更新:哦,哇,我刚刚注意到Both paths are invalidWinMerge提示底部的消息(并更新了屏幕截图以强调这一点).看起来这些文件根本不是由difftool生成的,或者路径有问题.

git winmerge difftool

7
推荐指数
1
解决办法
1427
查看次数

如何在没有在通知区域中添加图标的情况下Shell_NotifyIcon

MSDN关于通知和通知区域的文档非常明确,要求在通知区域中显示一个图标以显示通知:

要显示通知,您必须在通知区域中有一个图标.在某些情况下,例如Microsoft Communicator或电池级别,该图标已经存在.但是,在许多其他情况下,只有在显示通知所需的时间内,您才会向通知区域添加图标.

因为我不希望任何图标添加到通知区域,我想也许是"重用"现有的最有可能是那里的典型桌面.一个好的候选者可能是系统时钟.

我的问题是:

  1. 如何查找/枚举系统时钟的NOTIFYICONDATA结构(恢复时的AKA"日期和时间属性")?
  2. 有没有更好的方法来实现这一点(没有添加图标)?

winapi system-tray systray tooltip

6
推荐指数
1
解决办法
2818
查看次数

Git Push澄清 - 推动什么?

当我本地工作目录送到中央存储库时,是否会推送所有中间分支和提交信息(从上次推送到此工作目录)?

换句话说,push是否会生成我当前工作目录的整个历史记录的精确副本,包括提交,分支等,因此可以从中央存储库中提取给任何其他用户?

如果不是所有东西都被推,那么什么被排除?

git git-push

6
推荐指数
1
解决办法
334
查看次数

在Windows上使用PuTTY的git push失败(致命:远程端意外挂断)

对于准备好第git push一次做好准备感到兴奋,我PuTTY在我的cygwin环境中创建了一个别名:

alias ssh="/cygdrive/c/PROGRA~2/putty/PUTTY.EXE"
Run Code Online (Sandbox Code Playgroud)

然后调用(当然是在我的工作目录中),正如git社区书中第47页所述:

git push ssh://mylinuxserver/~winwin/gitrepo master:master
Run Code Online (Sandbox Code Playgroud)

我的兴奋并没有持续很长时间,因为它立刻失败了一个致命的错误:

error: cannot run ssh: No such file or directory
fatal: unable to fork
Run Code Online (Sandbox Code Playgroud)

考虑到我能够从相同的命令行和shell实例成功运行,ssh winwin@mylinuxserver我很惊讶收到此错误消息.

知道为什么会这样,以及如何解决这个问题?

更新I:感谢本指南,我发现PUTTY.EXE不是git中使用的正确exe.相反,应该使用PLINK.EXE.

该指南还暗示应该使用名为GIT_SSH的环境变量让git知道如何进行魔术.所以我:

~/sb/ws> export GIT_SSH=/cygdrive/c/PROGRA~2/putty/PLINK.EXE
~/sb/ws> git push ssh://mylinuxserver/~winwin/gitrepo master:master
Run Code Online (Sandbox Code Playgroud)

现在我收到一个不同的错误:

fatal: The remote end hung up unexpectedly
Run Code Online (Sandbox Code Playgroud)

我认为这方面的进展正确,但我仍然不知道如何解决问题.任何想法都将非常感激.

更新II:仍然试图解决这个谜.这次我怀疑,因为git push在任何地方都没有提示用户名+密码,身份验证必须在密钥内......所以,我sshd按照这个方法仔细检查配置.我发现为需要改变的唯一的事情是取消对线HostKey /etc/ssh/ssh_host_dsa_key/etc/ssh/sshd_config,并重新启动该服务service sshd restart.之后的第一次,$GIT_SSH确实提示确认服务器的dss密钥指纹,我确认将密钥存储在缓存中,但是......问题仍然存在: …

git ssh cygwin putty sshd

6
推荐指数
1
解决办法
5688
查看次数

什么是"data-sigil"HTML属性?

我只是碰到一个网站,有"数据印记"作为HTML元素,如属性来到a,div,label,abbr.

它接受一个字符串值,如下所示:

<a class="a1class" href="/more.php" data-sigil="some-description">More</a>
Run Code Online (Sandbox Code Playgroud)

谷歌搜索"data-sigil"HTML属性只产生邮件列表发布,这似乎在HTML属性的上下文中没有解释.

知道神秘的"data-sigil"HTML属性是什么?

html

5
推荐指数
2
解决办法
4241
查看次数