你应该知道的Git基础
你应该知道的Git基础
- 设置自己的用户名和邮箱
git config –global user.name "Your Name"
git config –global user.email "you@example.com"
代码解读
-
在提交之前有一个缓存区用于存储修改。
-
将当前所有修改存储到缓存区中
git add .也可以单独指定。 -
使用
git diff --cached比较本地仓库和缓存区中的差异。 -
使用
git diff HEAD比较本地未缓存的修改和当前状态。 -
使用
git diff查看所有未缓存的修改与本地仓库的区别。 -
使用
git diff --stat显示详细摘要信息。 -
请清除该存储区域的一个修改记录(如特定文件
hello.rbgit reset HEAD -- hello.rb) -
使用命令
git rm file会将指定文件从其所在的文件缓存区域以及本地目录树结构中删除 -
命令
git rm file --cached仅在缓存区域内删除该文件引用,并保留其在本地目录树结构中的存在
分支操作
使用git branch命令可查看系统中现有的所有分叉项。
通过执行git branch jser.me命令可以在系统中创建一个新的名为jser.me的新分叉。
运行git checkout -b jser.me命令后会检查该特定名称(jser.me)的分叉是否存在:如果不存在,则会生成该名称的新分叉并切换至该新生成的主干。
使用git branch -d jser.me命令可删除指定名称(jse me)对应的主分叉。
执行git merge命令可将除当前主分叉外的所有其他主分叉整合到当前主分叉中。
首先检出本地存储中的远程gh-pages主分叉,并将其设为主分叉;然后执行操作以完成设置。
Log查看
git log --oneline$简洁显示最近的日志记录。git log --graph$进行图形化呈现。git log erlang ^master$查询仅属于erlang分支的修改历史。git log --grep$基于正则表达式检索特定日志内容。git shortlog master$生成指定主分支的短日志报告。
里程碑
git tag -a v1.0打上v1.0
恢复删除的文件
git checkout commitid -- pathfile
与人分享
- 列出远端的别名:使用
git remote list - 添加远程仓库:运行命令
git remote add <remote_name> <remote_path>以指定名称创建远程路径 - 移除指定远程仓库的远程别名:执行命令
git remote rm <remote_name> - 仅获取本地代码:执行命令
git fetch - 拉取代码以获取最新版本:执行命令
git pull - 推送本地分支到指定远程仓库:运行命令
git push <remote_name> <local_branch>将本地分支推送到目标遥远仓库<remote_name>中的<local_branch>分支
一些原则
新功能尽量分叉以保持创新性,并通过定期整合至主版本来优化流程。同时建议避免在同一版本上投入过多资源,并采用适合项目的版本控制方法。
Git的几个关键知识点
- 有三种状态:
- 暂存 staged
- 修改 modify
- 已经提交
查看当前状态信息,默认情况下只显示暂存区和工作区两个区域
冲突之后的解决
找到冲突的地方,手工解决,然后git add filename; git commit
只合并特定的分支特定文件
- 执行命令 git cherry-pick,并提供 commit ID参数
- 切换到指定分支并指定文件名
查看和远程分支的对比
- 将远程分支拉取到本地
git fetch origin master:temp,完成从远程origin仓库master分支下载并创建本地临时分支。- 执行差异分析操作
git diff temp。 - 整合特定文件内容至主代码库,并参考之前的步骤进行操作。
- 移除不再需要的临时分支
git branch -d temp。
- 执行差异分析操作
git diff
- 仅显示带有对比信息的文件
git diff 608e120 4abe32e --name-only。 - 配合做成压缩文件
git diff 608e120 4abe32e --name-only | xargs zip update.zip。 - 若不是逐个查看每个文件的具体变化详情,而是统计相关信息包括哪些文件发生过修改以及修改了多少行代码,则可以使用‘–stat’参数。
- 这里的diff操作涉及的是特定的那些文件。
查看今天的更改
git log --since=1.days
子模块
- 使用git的submodule功能初始化分支。
- 运行命令
git submodule add将本地仓库中的submodule/git-url添加到当前仓库中,并命名为local-name。 - 使用foreach循环遍历所有子模块,并依次运行
git pull命令以更新这些本地仓库。
