推荐学习资料git 官网git 教程github 文档git 的工作流程git 分区工作区WorkSpace指本地仓库中除了 .git 目录以外的所有文件和目录缓存区Stage.git 目录下的 index 文件版本库.git 目录本地仓库Local Repo没有具体说明位置概念还是很好理解的相对于远程仓库而言本地的存储仓库远程仓库Remote Repo现在常见的 github、码云远程仓库也可以自行搭建git 管理下的文件有四种状态gitstatus# 项目文件的状态跟踪、修改、暂存Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified创建本地仓库参考常用命令、基本配置# 常用命令git# 可查看git常用的命令gitstatus# 项目文件的状态待提交、文件已入库 文件已修改 暂存状态建议常用gitcommit-m消息内容# 提交到本地仓库 -m 是提交的备注信息gitbranch[新的分支名]# 新建一个分支但不会立马切换到新建分支gitcheckout-b[分支名]# 新建一个分支并切换到该新建分支gitmerge[分支名]# 合并该指定分支名到当前分支gitbranch-d[要删除的分支名]# 删除分支gitpush origin--delete[branch-name]# 删除远端分支gitbranch-dr[remote/branch]# 删除远端分支# 配置 git 的本地的用户信息 默认在C:\Users\用户名\.gitconfiggitconfig--globaluser.name用户名# 设置git的用户名gitconfig--globaluser.email用户邮箱# 配置git的邮箱示例初始化git仓库# 自选目录将这个目录变成git管理的仓库生成.git文件gitinit# 整体流程修改 - 暂存 - 提交 - 推送gitaddREADME.md#添加文件到本地仓库gitrmREADME.md#本地倒库内删除gitcommit-mfirst commit消息内容/注释#提交到本地库并备注此时变更仍在本地。# git commit后会进入vim界面 可使用ESC 后键盘输入:wq进行保存退出gitcommit-a##自动更新变化的文件a可以理解为autogitremoteaddxxx gitgithub.com:xxx/xxx.git#增加一个远程服务器的别名。gitremotermxxx##删除远程版本库的别名gitpush-uremotename master#将本地文件提交到Github的remoname版本库中。此时才更新了本地变更到github服务上远程仓库的别名# 查看关联的远程仓库的别名gitremote 查看 本地仓库关联的 远程仓库gitremote-v查看 本地仓库关联的 远程仓库信息# 修改关联的远程仓库的别名gitremoteaddgithub gitgithub.com:toFrankie/repo-demo.git 新增 远程仓库别名gitremotermgithub 删除 已存在 远程仓库别名只会移除本地仓库与远程仓库的管理不会删除远程仓库的代码gitremoterenamegithub gitlab 修改 远程仓库别名也可以先删除再添加gitremote set-url github gitgithub.com:toXXXX/repo-demo.git 更新 远程仓库别名 关联的 远程仓库从GitHub仓库下载至本地# 从GitHub仓库下载至本地# 选择ssh方式可读写gitclone git://github.com:xxxx/test.git##以gitreadonly方式克隆到本地只可以读gitclone gitgithub.com:xxx/test.git##以SSH方式克隆到本地可以读写gitclone https://github.com/xxx/test.git##以https方式克隆到本地可以读写gitfetch gitgithub.com:xxx/xxx.git##获取到本地但不合并gitpull gitgithub.com:xxx/xxx.git##获取并合并内容到本地# 示例在本地的指定目录下clone在github上的代码 cd D:\test git clone gitgithub.com:yyzzyyzzyy/single-line-detection.gitgit 分支管理创建分支gitbranch#显示当前分支是mastergitbranch new_bra#创建分支命名为new_bragitcheckout new_bra#切换到新分支gitaddbranch.txt# 新建文件 并添加到暂存区gitcommit-madded branch.txtgitpush origin new_bra##把分支提交到远程服务器只是把分支结构和内容提交到远程并没有发生和主干的合并行为。origin为默认的远程仓库的代替名合并分支gitcheckout master#切换到新主干gitmerge new_bra##把分支合并到主干gitbranch#显示当前分支是mastergitpush origin master#此时主干中也合并了new_bra的代码origin为别名其他# 更新远程分支列表gitremote update 别名--prune# 查看所有分支gitbranch-a# 删除远程分支本地未删除gitpush 别名--delete分支名# 删除本地分支gitbranch-d分支名