注意:我在 CLI git/git-svn 中看到过有关此情况的问题,但在 TortoiseGit 中没有看到任何问题。
我下载并安装了 Git 和 TortoiseGit。我已经有一个远程 SVN 存储库,并且安装了 TortoiseSVN,如果这有什么区别的话。
创建空目录后,我使用右侧上下文菜单,如下所示:
当我点击“确定”时,会弹出一个窗口,显示它正在连接到存储库,并且它会滚动浏览所有修订版本,直到 r 1693,这是我的最新版本。它显示“成功”,并且我的本地文件夹中有一个 .git 目录。但没有文件。
我按如下方式摆弄它:
SVN Fetch 似乎是显而易见的选择。当我更改修订版号时,克隆操作失败并显示以下消息:
git did not exit cleanly (exit code 1) (16078 ms @ 12/16/2013 10:31:27 AM)
Run Code Online (Sandbox Code Playgroud)
我要开始摆弄 CLI,但我怀疑我也会遇到同样的问题。毕竟这是一个非常基本的操作。感谢您的帮助。

我在一个小团队中使用 git,并使用 TortoiseGit 作为客户端。每天,我发现我的本地分支在分支后面提交了一些提交,没有任何本地更改。
我的行动方针是从远程更新开始,然后切换/签出到<remote branch>. 如果我已经有相应的本地分支,我需要选中Force或Override branch if exists复选框才能继续。
问题:两者有什么区别?
进一步阅读:我知道还有其他可能性,例如Pull、 或Reset branch to this。由于各种原因,上述过程恰好是我最喜欢的。
在项目根目录中,我有.gitignore一个文件忽略除 gitignore 文件之外的所有内容。这是文件的内容:
**/*
!.gitignore
Run Code Online (Sandbox Code Playgroud)
然后implementation/xml/我有另一个包含以下内容的 gitignore 文件:
!**/*
Run Code Online (Sandbox Code Playgroud)
然后在implementation/xml/ant/中我创建了名为texd-odt-build.xml完整路径的新文件(/implementation/xml/ant/texd-odt-build.xml)的新文件。
现在是第二个 gitignore 文件,它位于项目根目录中的文件(gitignore 文件)下面的两个文件夹中。那么第二个 gitignore 应该覆盖根目录中的那个,对吧?但使用 bash 我发现它 texd-odt-build.xml仍然在忽略列表中。
为了检查它,我使用了这个命令:git status --ignored。“孩子”gitignore 不工作的原因可能是什么?
我使用 TortoiseGit 1.8.16。但文件夹的上下文菜单不包含“添加到忽略列表”选项。
右键单击存储库中的文件夹。我希望在上下文菜单中看到“添加到忽略列表”。该项目不在上下文菜单中。
如何通过TortoiseGit添加忽略文件?
我提交了一个文本文件并将其推送到主分支。我的同事从主分支中创建了一个单独的分支,并对文件进行了一些更改 - 他对文本进行了修订。更改是在单个提交和单个文件中进行的。
现在,我想将他的一些更改合并到 master 分支中的原始文件中。但!我不想接受一切,只想接受一些改变。
更改是在同一文件的不同行上进行的:修订版中更改了一些行,添加了一些行,删除了一些行。我怎样才能做到这一点?
如果我正确理解 git,将修订分支简单合并到 master 将不会检测到冲突,因为我没有在 master 分支中进行任何更改。此外,合并只会应用分支/提交中所做的所有更改。但是,我只想应用在线(比方说)#20、50、69 所做的更改。我想忽略其他更改,因为我不同意它们。
如何使 git 在所有更改的文件上产生冲突,以便我能够选择是否接受更改?我需要一些互动方式。
例如,在 MS Word 中,可以跟踪更改。然后,每个更改都可以被接受(采用新版本并删除旧版本)或拒绝(保留旧版本并丢弃更改)。然后,更改不再突出显示。
我正在 MS Windows 10 上使用 TortoiseGit 应用程序,在 git 版本 1.9.5.msysgit.1 上运行。因此,如果有一种使用客户端的方法,我会更喜欢它。
我正在使用 TortoiseGit,覆盖图标显示的是文件夹而不是文件。我遇到了这个页面http://blog.garethjmsaunders.co.uk/2015/03/22/managing-overlay-icons-for-dropbox-and-tortoisesvn-and-tortoisegit/我尝试过,但仍然没有解决不了问题。
现在在我的注册表/ShellIconOverlayIdentifiers 中,Tortoise 图标优先于任何其他应用程序。
有任何想法吗?
谢谢。
我想找到这里很好描述的问题的解决方案- 简而言之,这个问题可以通过git branch -d $(git branch --merged)使用命令行来解决 - 问题是,是否有可能在 TortoiseGit 中做同样的事情?
抱歉,如果某处有重复的内容,我在寻找解决方案时淹没在大量更改提交消息的技巧中(这对我没有帮助)。
我有两组更改,每个更改应该是一次提交的一部分。不幸的是,我在早上开始了第二个变更集,没有注意到我忘记在前一天晚上提交第一个。
在大多数情况下,它们会影响不同的文件。但是,有一个文件包含两个变更集的更改,如果在没有第二个变更集的情况下推送会破坏构建。太糟糕了,我想在一个单独的分支上工作,直到功能正常。
可悲的是,当我注意到有一个包含两者更改的文件时,我已经提交(未推送)第一个变更集并在其上创建了工作分支。
有没有办法编辑我的提交,以便我可以提取影响变更集 2 的更改?
在 Mercurial 中,您可以通过以下方式解开提交
当 GUI 重新打开时,补丁包含了它们应该包含的内容,可以完成并推送。
这实际上是我的目标工作流程。git有类似的东西吗?
我使用的工具:Win10 上的 TortoiseGit 和 GitExtensions
编辑:答案中建议的解决方案
git checkout new_branch
git reset -p HEAD~1
git add -p
...
git commit -m "my changeset 1"
git add
git commit -m "my changeset 2"
git checkout old_branch
git reset --hard <new_branch>~1
Run Code Online (Sandbox Code Playgroud)
这给了我old_branch变更集 1 和new_branch变更集 2。
再次感谢!
我正在寻找一个 TortoiseGit 操作,它相当于:
TortoiseSVN --> Show log --> Revert to this revision
Run Code Online (Sandbox Code Playgroud)
在 TortoiseSVN 中,此操作将本地存储库恢复为选定的修订版本,同时保持所有更改的文件签出。
换句话说,更改后的文件会在我执行时显示TortoiseSVN --> Check for modifications,当我完成对已恢复的修订版的测试后,我可以轻松放弃这些更改。
出于某种原因,我发现在 TortoiseGit 上执行这个有用的操作非常困难。
我目前使用的解决方法是:
TortoiseGit --> Show log --> Export this revision...有没有更直接的方式呢?
我已经尝试了以下 TortoiseGit 操作,但它们只会对我的本地存储库“造成严重破坏”,之后我无法继续执行“标准”提交和推送过程:
Reset "master" to this...Switch/Checkout to this...Rebase "master" onto this...Revert change by this commit我在这里发现了一个类似的问题,但答案建议的选项在我的 TortoiseGit 弹出菜单中甚至都不可行。
非常感谢您的帮助。