我看到git checkout \*
和git commit -
参考online tutorial。这些成就是什么? (这似乎不是很直观,从该名男子页。)什么做“git checkout *”和“git commit - ”完成?
回答
如果你发出命令
git checkout *
则执行git checkout
之前,你的shell将扩大*
水珠。例如,如果你有文件A.TXT,b.txt,并c.txt,外壳会在运行它之前展开,以
git checkout a.txt b.txt c.txt
。相反,当您使用\*
时,*
会被转义并直接传递给git checkout
。
从手册页:
git checkout [-p|--patch] [<tree-ish>] [--] <paths>
当<路径>或--patch给出,GIT中结帐确实不开关 分支。它更新 中索引文件或命名为< tree-ish >(通常是提交)的工作树中的命名路径。在这种情况下, -b和--track选项毫无意义,导致其中任何一个都会导致错误。在更新工作树之前,参数 可用于指定特定的树(即提交,标记或树)以更新给定路径的索引。
在这里,他正在逃避glob \*
,以防止bash扩大它;所以它可以被git用来扩展索引中的内容。
EDIT(后问题更新):
约git commit -, 'canonical version'
: 它只是一个错字(注意如何,只是旁边米键)commit -m '...'
.....
实际上git commit --file -
会从标准输入读取它的输入,当用于管道来自其他命令的数据时;但它不是你的例子中的意图。
我现在明白,在传递给git之前,传递“\ *”可以防止bash从glob扩展。但我仍然不明白git在做什么。你是什么意思“所以它可以被git用来扩展索引中的内容”? – George
你有你的工作目录包含文件; git索引包含一个文件列表(已添加到索引的文件)。如果你做'git checkout *''bash会将'*'与当前工作目录匹配,展开命令并执行'git checkout file1 file2 file3 ...'。如果你使用'git checkout \ *',git将会收到glob,并将它与索引中的列表进行匹配,执行上面黄色框中描述的操作,所有匹配的文件(在本例中都是这些文件)。 –
- 1. “git checkout”和“git checkout - ”有什么区别?
- 2. 什么是“git checkout - ”。做?
- 3. “git commit -vam”完成了什么?
- 4. git-stash和git-checkout有什么区别?
- 5. git checkout commit-name和git checkout branchname有何区别
- 6. git revert和git checkout
- 7. 并发git checkout/add/commit
- 8. `git checkout-index -u`或`--index`做什么?
- 9. git commit --cleanup = whitespace是做什么的?
- 10. 当用户在“git add”和“git commit”之前做“git push”会发生什么?
- 11. git clone和checkout有什么区别?
- 12. 如何在git add和git checkout没有git commit后重新获得diff?
- 13. `git checkout -b新功能主控程序是做什么的?
- 14. git checkout vs git checkout HEAD vs git checkout <CURRENT BRANCH> vs git checkout - <WORKING DIR>
- 15. 什么时候需要做“git pull”,在“git add,git commit”之前还是之后?
- 16. 为什么我必须使用“git commit -a”而不是“git commit”?
- 17. 结合git add。和git commit
- 18. 我该如何完成git commit?
- 19. git commit -m vs git commit -am
- 20. git - 我做了什么?
- 21. git reset文件和git checkout文件有什么区别?
- 22. “git checkout -f”和“git reset --hard HEAD”有什么区别?
- 23. “git reset --hard”和“git checkout。”有什么区别?
- 24. Git rebase to older commit
- 25. git commit -am和git之间有什么区别-m
- 26. (git add -A后跟git commit)和git commit -a之间的区别?
- 27. git merge origin/master做什么?
- 28. git commit problems
- 29. 忘记“git rebase --continue”并做了“git commit”。怎么修?
- 30. 为什么git checkout“origin/branch-name”在git 1.5中导致“no branch”?
你最好首先考虑这个问题,然后发布它,而不是一遍又一遍地重新编写问题的主要部分。 – Zereges