我可以通过两个步骤将其推送到存储库来备份我的本地.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)
现在的问题是它们是否真的相同?(例如,logs不推送子目录)
该git push方法的优点是什么git bundle?
可以tar -zcvf被认为是"完美的git备份"吗?
我正在尝试重命名本地文件.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在尝试发出此命令之前验证了文件是否存在)
但是经历了最初的学习过程,我遇到了很多新的术语.我觉得理解这些术语的确切含义对于在使用实时项目时不会犯下不可逆转的错误至关重要.
你能否推荐一个有条不紊地学习关键术语含义的好资料来源,例如origin,master,commit vs. push,refs,heads,clone with checkout等?
该混帐书定义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)恢复到某个分支(最后一个将立即执行).我找到了对git reset --soft和git reset --hard的引用,但我已经向自己证明了我可以通过过早地使用命令而不完全理解它来做真正的损害.:)
我找到了git reset手册页,但我仍然感到困惑:
HEAD?HEAD和之间有什么区别
* master?--soft,--hard或其它(3个选项)?git reset)来"完成"逆转?更新:阅读以下答案后:
git reset --hard
HEAD^?我使用@ VonC的优秀指令来配置我的开发系统,以便git difftool <BRANCH1> <BRANCH1>调用WinMerge.这是我做的:
放置以下内容~/.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)创建了一个/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并排显示两个文件,它提示输入第一个文件作为右侧,第二个文件接受为左侧:

为什么会这样?我在配置步骤中遗漏了什么?
PS当我在命令行输入时winmerge.sh file1.c file2.c,WinMerge会立即并排显示两个文件,就像我期望的那样.
更新:哦,哇,我刚刚注意到Both paths are invalidWinMerge提示底部的消息(并更新了屏幕截图以强调这一点).看起来这些文件根本不是由difftool生成的,或者路径有问题.
MSDN关于通知和通知区域的文档非常明确,要求在通知区域中显示一个图标以显示通知:
要显示通知,您必须在通知区域中有一个图标.在某些情况下,例如Microsoft Communicator或电池级别,该图标已经存在.但是,在许多其他情况下,只有在显示通知所需的时间内,您才会向通知区域添加图标.
因为我不希望任何图标添加到通知区域,我想也许是"重用"现有的最有可能是那里的典型桌面.一个好的候选者可能是系统时钟.
我的问题是:
对于准备好第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密钥指纹,我确认将密钥存储在缓存中,但是......问题仍然存在: …
我只是碰到一个网站,有"数据印记"作为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属性是什么?
git ×8
cygwin ×1
difftool ×1
git-commit ×1
git-index ×1
git-push ×1
git-reset ×1
git-revert ×1
html ×1
putty ×1
ssh ×1
sshd ×1
system-tray ×1
systray ×1
terminology ×1
tooltip ×1
winapi ×1
winmerge ×1