tig*_*tig 90 git branch git-checkout
是否可以在git切换到另一个分支而不检查所有文件?切换分支后,我需要删除所有文件,重新生成它们,提交并切换回来.因此,检出文件只是浪费时间(并且有大约14000个文件 - 这是一个很长的操作).
为了使一切清楚:
我需要所有这些来上传文档到github.
我有gh-pages分支的回购.当我在本地重建文档时,我将其复制到repo目录,提交并推送到github.但我并不高兴,因为我在本地有两份文件.我决定创建空分支并在提交后切换为空并删除文件.但转回来是一个漫长的操作 - 所以我问了这个问题.
我知道我可以离开gh-pages分支并删除文件,但我不喜欢脏工作树)
CB *_*ley 99
是的,你可以这样做.
git symbolic-ref HEAD refs/heads/otherbranch
Run Code Online (Sandbox Code Playgroud)
如果你需要在这个分支上提交,你也需要重置索引,否则你最终会根据最后签出的分支提交一些东西.
git reset
Run Code Online (Sandbox Code Playgroud)
小智 40
仅使用基本git命令:
这个答案比Charles的答案要长一些,但它只包含我能理解并因此记住的基本git命令,无需继续查找.
标记您当前的位置(如果需要,首先提交):
git checkout -b temp
Run Code Online (Sandbox Code Playgroud)
将标记重置(移动)到另一个分支而不更改工作目录:
git reset <branch where you want to go>
Run Code Online (Sandbox Code Playgroud)
现在临时和其他分支指向同一个提交,你的工作目录没有受到影响.
git checkout <branch where you want to go>
Run Code Online (Sandbox Code Playgroud)
因为你的HEAD已经指向同一个提交,所以不会触及工作目录
git branch -d temp
Run Code Online (Sandbox Code Playgroud)
请注意,这些命令也可以从任何图形客户端获得.
Tin*_*ino 17
为了读者的利益:
虽然我认为Charles Bailey的解决方案是正确的,但是当切换到不是本地分支的东西时,这个解决方案需要调整.还应该有一些方法如何使用易于理解的常规命令来完成它.这是我想出的:
git checkout --detach
git reset --soft commitish
git checkout commitish
Run Code Online (Sandbox Code Playgroud)
解释:
git checkout --detach是一样的git checkout HEAD^{},其背后离开当前分支并进入"分离的头状态".所以下一次修改HEAD不再影响任何分支.分离HEAD不会影响工作树和索引.git reset --soft commitish然后移动HEAD到给定的SHA commitish.如果你想更新索引,请--soft离开,但我不建议这样做.这同样不会触及工作树,而(--soft)不会触及索引.git checkout commitish然后再次附加HEAD到给定commitish(分支).(如果commitishSHA没有任何反应.)这也不会影响索引或工作树.此解决方案接受引用提交的所有内容,因此这对于某些git别名是理想的.在rev-parse下面仅仅是一个测试,以确保,没有断裂的链条,使得错别字不小心切换到分离的头的状态(错误恢复将是方式更复杂).
这导致以下git switch treeish别名:
git config --global alias.switch '!f() { git rev-parse --verify "$*" && git checkout "HEAD^{}" && git reset --soft "$*" && git checkout "$*"; }; f'
Run Code Online (Sandbox Code Playgroud)
仅供参考,你可以在我的git别名列表中找到它.
我想你正在寻找管道命令git read-tree.这将更新索引,但不会更新工作目录中的任何文件.例如,假设branch是要读取的分支的名称:
git read-tree branch
如果您想要提交您刚刚阅读的分支,您还需要:
git symbolic-ref HEAD refs/heads/branch
小智 7
您可以使用不同的分支名称覆盖HEAD文件:
echo"ref:refs/heads/MyOtherBranch"> .git/HEAD
| 归档时间: |
|
| 查看次数: |
36647 次 |
| 最近记录: |