我在这个模块中没有看到checkout或列出远程/本地分支的选项:https://gitpython.readthedocs.io/en/stable/ 最佳答案 对于那些只想打印远程分支的人:#Executefromtherepositoryrootdirectoryrepo=git.Repo('.')remote_refs=repo.remote().refsforrefsinremote_refs:print(refs.name) 关于python-在GitPython中check
我已经克隆了一个git仓库。这个存储库有一个远程分支,类似于-feature-abc。当我输入gitcheckout-feature-abc时,我得到:error:unknownswitch`e'知道如何检查这个分支吗? 最佳答案 尝试使用这种语法:gitcheckout---feature-abc双连字符语法应该有助于git将命令选项与实际的分支名称参数分开,正如我之前在“Deletingabadlynamedgitbranch”中解释的那样。如果这不起作用,您可以按照“HowdoIrenamealocalGitbranch?”中
我遇到的问题是我的手指会自动键入gitpushoriginmaster。如果我正在处理new-branch并打算输入gitpushoriginnew-branch并且master上有未推送的更改,他们将不小心被推有什么方法可以防止这种情况,以便我只能推送到当前分支或从当前分支推送? 最佳答案 如果没有使用git-config中的push.default设置给出refspec,您可以指定gitpush做什么。三种模式适合你的情况:Thesimple,currentandupstreammodesareforthosewhowantto
我想还原所有本地更改gitcheckout--.但不小心做了gitcheckout-.而且它做了很多我根本看不懂的局部修改。第二个命令的作用是什么,是否可以恢复已完成的操作? 最佳答案 gitcheckout-checkout之前checkout的分支。所以我假设gitcheckout-.会将工作副本的内容替换为先前checkout的分支的内容。你无法撤消它,但既然你想重置你的工作目录的内容,你为什么不直接运行gitcheckout--.?您可能希望在将来使用gitreset--hard来撤消对当前分支的所有更改。它还会重置索引。
如果我在git中设置一个post-recieve钩子(Hook)#!/bin/shGIT_WORK_TREE=/var/www/www.example.orggitcheckout-f这会删除服务器上但不在我本地git存储库上的文件吗?如果会,有什么办法可以阻止吗? 最佳答案 这取决于文件是否会被删除取决于它们在checkout之前是否已经存在于存储库中。如果服务器(/var/www/www.example.org)上的文件在服务器上的repo中被跟踪,但新checkout包含删除它们的更改,那么它们将在服务器端被删除.如果服务器上
为什么git允许我重置文件?我以为我理解了reset,因为它正在移动HEAD...显然我错了。所以,gitresetshafile似乎和gitcheckoutshafile做的一样,除了我在索引和工作目录中。这对我来说没有意义。有人可以解释一下区别吗? 最佳答案 tl;drgitresetCOMMITFILE仅更改索引,gitcheckoutCOMMITFILE将同时更改索引和工作树。gitreset有--soft、--hard和--mixed非常重要的标记(and--keepand--merge)http://git-scm.co
是否有一个命令/选项/过滤器可以放弃所有修改后的文件的更改(通过checkout),这些文件的更改只影响空白?或者,仅暂存具有非空白更改的文件(包括暂存它们的空白更改)会很好。 最佳答案 你可以:首先应用所有非空白更改(参见“Gitaddonlynon-whitespacechanges”)gitdiff-w--no-color|gitapply--cached--ignore-whitespace清理任何其他更改(参见“Howdoyoudiscardunstagedchangesingit?”)gitcheckout--.在此解决
根据thisthread,Git中的排除sparse-checkoutfeature应该实现。是吗?假设我有以下结构:papers/papers/...presentations/presentations/heavy_presentationpresentations/...现在我想从checkout中排除presentations/heavy_presentation,而将其余部分留在checkout中。我还没有设法让它运行。正确的语法是什么? 最佳答案 遗憾的是,以上都不适合我,所以我花了很长时间尝试sparse-checko
在服务器上,我有裸存储库,它是开发过程的来源,可以简化QA环境的部署。所以在post-receive中它只是做GIT_WORK_TREE=/home/devgitcheckout-f但是随着产品变得越来越复杂,还应该发生一些其他事情。所以现在它由deploy.sh脚本处理,该脚本也由存储库跟踪。所以我想要做的是能够而不是checkout整个存储库是只checkoutdeploy.sh并运行它。我认为这样的事情会奏效:SOURCE_PATH="/home/dev"GIT_WORK_TREE=$SOURCE_PATHgitcheckoutdeploy.sh$SOURCE_PATH"/dep
我想checkout到其他分支或之前的提交,但我想保留一个文件夹相同的文件(而不是checkout文件夹)。我希望该文件夹将显示在gitstatus中,因此我现在可以将此文件夹添加到索引中。例如,我有一个包含node_modules的文件夹。我希望该文件夹包含在我的所有提交中(我知道大多数人更喜欢.gitignorenode_modules文件夹)。但是当我移动到其他提交或检查其他分支时,我希望git不会触及node_modules文件夹。这可能吗? 最佳答案 你可以使用sparsecheckout从工作树中排除node_modul