Git 初学,基本命令以及注意详情
GIT 备忘录
本文由TOWER提供(翻译版本) > 使用Git进行版本控制 – 就是那么简单
CREATE(创建)
克隆现有仓库$ git clone ssh://user@domain.com/repo.git
创建一个新的本地仓库$ git init
LOCAL CHANGES(本地操作)
查看工作目录中的文件更改状态$ git status
跟踪查看已被更改的文件内容$ git diff
将所有的更改添加到下一个提交$ git add .
将文件中的一些更改添加到下个提交$ git add -p <file>
提交所有本地更改的文件$ git commit –a
提交先前的分阶段更改$ git commit
更改最后一次提交,不要修改已发布的提交$ git commit --amend
COMMIT HISTORY(提交历史)
显示所有的提交,从最新开始$ git log
显示更改特定文件的时间$ git log -p <file>
逐行显示文件,并在每一行的行首显示commit号,提交者,最早的提交日期$ git blame <file>
BRANCHES & TAGES(分支和标签)
显示所有的分支$ git branch -av
切换分支$ git checkout <branch>
根据当前的分支创建一个新的分支$ git branch <new-branch>
基于远程分支创建新的跟踪分支$ git checkout --track <remote/branch>
删除本地分支$ git branch –d <branch>
标记当前的提交(打标签)$ git tag <tag-name>
UPDATE & PUBLISH(跟新和发布)
列出当前所有链接的远程仓库$ git remote -v
显示远程仓库的信息$ git remote show <remote>
添加新的远程仓库链接$ git remote add <shortname> <url>
从远程仓库获取新版本到本地,不会自动合并$ git fetch <remote>
从远程仓库获取新版本到本地,会自动合并$ git pull <remote> <branch>
提交更改至远程仓库$ git push <remote> <branch>
删除远程上的分支$ git branch –dr <remote/branch>
发布你的标签$ git push --tages
MERGE & REBASE(合并和无提交合并)
合并分支到您的当前需要合并的分支$ git merge <branch>
同merge一样,但它会把分支里的每一个提交取消掉,并且以补丁的形式保存在”.git/rebase”目录中$ git rebase <branch>
遇到冲突时,终止rebase提交$ git rebase --abort
解决冲突后,进行重新提交$ git rebase --continue
使用视图工具来解决冲突$ git mergetool
使用你的编辑器来解决冲突$ git add <resolved-file>
$ git rm <resolved-file>
UNDO(撤销)
放弃当前本地工作的所有更改$ git reset --hard HEAD
撤销特定文件中的更改$ git checkout HEAD <file>
恢复一些现有的提交(回退)$ git revert <commit>
回退到某个指定的版本,并放弃之前的更改$ git reset --hard <commit>
将所有更改保存为未分级更改$ git reset <commit>
保存未提交的本地更改$git resset --keep <commit>
在使用Git时的好习惯以及相关的注意事项
提交相关更改
提交应该是相关更改的包装。例如:修复两个不同的错误应该分别为两个单独的提交。小的提交使其他开发人员更容易理解这些更改,并在出现问题时可将其回滚。借助临时区域和容易分区的工具,Git可以轻松创建非常细化的提交管理。
经常提交
提交通常会保持较小的提交,并且可以帮助我们在执行相关的更改。此外,它允许我们更频繁地与其他人分享我们的代码。这样,每个人都可以更容易的定期整合更改,避免合并冲突。相比之下,几乎没有大的提交并且很少出现很难解决冲突。
不提交做一半的工作
我们只在代码完成时提交代码。这并不意味着你必须在提交之前完成一个完整的大功能。恰恰相反:将功能的实现分割成逻辑块,并记住提前和经常提交。但是在一天结束之前不要仅仅在离开办公室之前在存储库中提供一些东西。如果你只是因为需要一个干净的工作副本而试图提交(检查分支,引入更改等),请考虑使用Git的“存储”功能。
提交前测试代码
抵制试图完成你“思考”的诱惑。养成彻底地测试的喜欢,它可以确保完成并且没有出错(据我们所知)。尽管在本地存储库中提交一半的东西只需要你觉得可以,但是在推送代码时,测试代码更重要。
写好提交信息
在你提交时要对你的修改做一个简短的总结(最多50个字符作为指导)。
你的信息的主体应该提供以下问题的详细答案:
改变的动机是什么?
它与之前的实现有什么不同?
使用命令式,现在式(“更改”,而不是“更改”或“更改”)与git merge等命令生成的消息一致。
版本控制不是一个备份系统
将文件备份到远程服务器上是一个拥有版本控制系统的好方法。但是我们不应该像使用备份系统一样使用我们的VCS。在进行版本控制时,我们应该注意提交(请参阅«相关变化») - 我们不应该只是在死命的备份文件。
使用分支
分支是Git最强大的功能之一 - 这并非偶然:从一开始,快速简便的分支是一个核心要求。分支机构是帮助您避免混合不同开发路线的完美工具。我们应该在自己的开发工作流程中广泛使用分支机构:新功能,错误修复,想法...
同意工作流程
Git允许我们从很多不同的工作流程中进行选择:长时间运行的分支,主题分支,合并或重新分配,git-flow ......您选择哪一个取决于以下几个因素:您的项目,您的整体开发和部署工作流程以及(也许最重要的)关于我们和队友的个人偏好。然而,你选择工作,只要确保同意每个人都遵循的通用工作流程。
帮助和文档
在命令行获取帮助$ git help <command>
免费在线资源
http://www.git-scm.org/
http://www.git-tower.com/learn
http://rogerdudler.github.io/git-guide/