本地操作
创建仓库
1 | git init <初始化路径> |
git init <初始化路径>用于初始化本地仓库,使用后对应目录下的文件全部变为untracked状态。
提交修改
1 | git add <目标文件或目录> |
git add <目标文件或目录>将untracked或modified状态的文件加入暂存区且将状态转为staged。
git commit将读取暂存区的文件,并生成对应快照挂载到快照树中,同时移动头指针指向新提交的快照。之后所有处于staged的文件全部转换为unmodify状态。
分支的创建与选择
1 | # 创建并转到目标分支 |
合并分支和解决冲突
1 | # 合并当前分支和目标分支,可能会因为发生冲突而没有完成合并。之后需要手动将解决冲突 |
回退版本
1 | git reset [--soft | --mixed | --hard] [<目标版本>] |
git reset用于进行版本回退,在未带任何参数的情况下默认回退到最新一次提交,相当于丢弃工作区的修改。
git reset存在三种标志,若省略则默认为--mixed,其各个标志的作用如下:
--soft:只会移动头指针,不会修改工作区和暂存区内容。--mixed:移动头指针并重置暂存区为目标提交的内容,不会修改工作区修改。--hard移动头指针并重置暂存区和工作区为目标提交的内容,注意这会丢失工作区修改!
<目标版本>有多种格式,若省略则默认为HEAD:
HEAD是一个预设标志,代表当前头指针指向的版本,用于实现相对位置定位:HEAD^:HEAD对应版本的上一个版本,^符号可以多次重复,如HEAD^^代表HEAD的上两个版本,以此类推。HEAD~1:HEAD对应版本的上一个版本,~符号后的数字可以自行指定,如HEAD~2代表HEAD对应版本的上两个版本,以此类推。
<目标版本>也可是是对应版本的版本号,这将会直接转到对应版本,这不仅可以进行版本的回退,也可以用于恢复到当前版本的后几个版本或其他分支。<目标版本>还可以是远程分支,这相当于回退到该远程分支对应的版本。
<目标文件列表>是需要回退版本的文件,通常情况下不会显示指定,也就是回退整个项目。
文件控制
1 | git rm |
因为Git不会自行跟踪文件的删除情况,因此仅在工作区删除文件时Git并不会自动的在项目中删除对应的文件,这时需要使用git rm和git mv显示指定对文件的删除和移动操作。
默认情况下,git rm和git mv会与rm和mv一样直接删除或移动工作区的文件,如果只希望结束对目标文件的追踪而不会修改对应的工作区文件,需要添加--cached标志。
文件状态与文件修改查询
1 | git status |
git status用于显示上次提交后整个项目中各个被修改的文件对应的状态。
git diff获得两个版本间的文件差异。主要使用方式如下:
git diff:比较当前工作区和暂存区的区别。git diff --cached:比较暂存区和HEAD指向版本的区别。git diff <branch0> <branch1>:比较<branch0>和<branch1>两个版本间的区别。
查看日志
1 | git log |
git log打印当前HEAD指针指向的节点向分支树根部的路径上的全部节点的信息,包括节点哈希值标识、注释等。注意,在移动头指针后将会改变其打印出的的节点信息。
git reflog打印出ref log,其记录了Git仓库中HEAD指针引用的变化,其基本上包含全部的提交信息。
Git远程常用操作
下载远程仓库
1 | # 从URL下载并添加远程仓库 |
远程仓库配置
1 | # 显示远程仓库信息 |
推送代码
1 | # 推送本地的分支版本上传到远程并合并,若在当前分支下工作可省略<本地分支名> |
拉取代码
1 | # 拉取远程仓库代码 |
将本地分支和远程分支关联
1 | # 将远程分支和本地分支关联 |