基本工作流程
- 从远程仓库克隆一份作为本地仓库
- 从本地仓库中检出代码然后进行代码修改
- 再提交前先将代码添加到暂存区
- 将暂存区的修改提交到本地仓库,本地仓库中保存修改的各个历史版本
- 在修改完成后,若需要共享代码,可以将代码推送到远程仓库
创建版本仓库
方式一:可以从别人的仓库克隆
方式二:在需要共享的文件夹内部点击右键选择“git在这里创建版本库",会产生”.git"文件夹(隐藏文件夹),在项目中写的文件都会受到git的版本控制。
添加和提交文件
点击新建的文件夹右键选择tortoiseGit再选择添加,添加完成。
此时的文件只是在暂存区,此时可以点击右键选择git提交。可以在日志信息内写入做该次修改的目的和更改内容,最后点击提交即可。
文件的修改
修改文件后直接点击右键选择git提交即可;
在此过程中可以双击变更列表中的文件查看修改前后对比。
多文件提交
在空白处右键选择git提交,直接在变更列表中选中要提交的多个文件即可。
查看历史
项目文件夹上方右键选择tortoisegit,选择显示日志,就可以看见提交记录。
还原修改
方式一:若想放弃所有更改,右键选择tortoisegit再选择还原。
方式二:若想还原部分修改,右键选择tortoisegit再选择比较差异,工具打开后可以选择想要的部分右键选择“使用此文本块”。
删除文件
若还没有提交,直接删除即可。
方式一:若已经提交,若直接删除会使上一层文件发生变更,被删除文件会显示缺失状态,tortoisegit会将该文件放入暂存区,此时只需要填写日志就可以将文件删除。
方式二:右键要删除的文件,选择tortoisegit选择删除,此时文件显示的是已删除状态。
注意使用两种方式删除过后都需要进行提交。
删除文件后其记录仍然存在,可以将其导出找回该文件。
忽略文件
右键在tortoisegit中找到“添加到忽略列表”,一般选择“.后缀名”,此后该类文件都会自动忽略。
如果选择了“只忽略指定文件夹的文件”则只忽略选择的文件在的文件夹中的文件,如果选择了“递归”选项还会忽略掉其他的文件夹的文件。
克隆仓库
- 复制远程仓库的地址(https)
- 不可以在已经有版本控制的目录里面执行克隆
- 若是个人仓库则需要输入自己的账号密码,若输入错误而输入的错误内容被保存可在控制面板->用户账户->管理你的凭据->windows凭据->删除
推送代码
此时在新建的工作区提交文件是储存在本地仓库,远程仓库不会新增文件,此时需要执行推送操作。
在testgit文件夹上右键选择“git同步”,在弹出的对话窗中选择“推送”。
拉取代码
若有其他用户修改了代码并推送到了远程仓库,则需要使用拉取代码使文件同步更新。
在testgit文件夹上右键选择“git同步”,在弹出的对话窗中选择“拉取”。
推送已有仓库到git
只需要是本地仓库关联上远程仓库即可。
先创建一个远程仓库,在项目里右键选择tortoisegit选择设置,找到“git->远端”,在URL中填入复制的地址,点击应用即可。(远端可以设置多个)
第一次添加远端仓库需要先获取代码。
此时只是完成关联,代码还未同步,此时只需再点击git同步选择推送即可。
SSH公钥配置
使用该配置不需要像https一样设置账号密码,直接用公钥访问。
- 在本机使用命令生成ssh key,命令:ssh-keygen -t rsa -C "xxxxxxx@xxx.com"
- 查看ssh key内容并复制,cat ~/.ssh/id_rsa.pub
- 添加到github/gitee账号的公钥仓库中
- 后续操作把远程地址都替换成ssh地址即可。
冲突和自动合并
冲突产生:多人共同维护一份代码,当修改了相同的代码块并提交,此时就可能发生冲突。
解决:
1.可以合并的冲突(修改位置不是在同一行),当发现远端的版本与自己本地的不同时,即无法推送的时候,只能拉取远端版本,拉取之后,如果时可以合并的问题会自动合并,且会自动提交到本地的master,只需要要同步就可以修改远端的代码。
2.不可以合并的冲突(修改位置不是在同一行),当发现远端的版本与自己本地的不同时,即无法推送的时候,只能拉取远端版本,拉取之后,发现不能合并,点击冲突文件,可以对比远端与本地的代码,就可以对比操作,具体选择哪一个版本,或者修改哪一句都可以,操作与还原操作相同。再进行保存,标记为已解决,需要进行提交,之后再推送。
分支管理
使用分支可以把工作从开发主线上分离开,以免影响开发主线。
git的分支本质上是提交对象的可变指针,默认分支名字是master。在多次提交操作后已经有一个指向最后的提交对象的master分支,master分支会在每次提交时自动向前移动。
创建分支
通过tortoisegit的”创建分支“菜单创建。(可以针对某一个版本创建分支,创建时选择提交按钮,选择指定的版本即可)
分支的查看:右键选择tortoisegit的”版本分支图“
切换分支
右键选择tortoisegit的”切换/检出“,在其中可以选择分支。分支切换后文件里的内容也会更改为该分支里面最后一次提交的内容。
分支的创建和切换可以同时进行(在创建时点击切换到新分支即可)。
合并分支
当分支上的开发已经完成,此时需要将分支的修改合并到master分支(在master进行操作),再执行合并,选择需要合并的分支即可。
tortoisegit->合并->选择要被合并的分支
情况一:要合并的分支在master之前,使用fast-forward(把master的指针指到最新)。(不会产生冲突)
情况二:要合并的分支和master都对于前版本进行了修改,此时不可以使用fast-forward(会使master指向的版本丢失),应该将两个版本的内容合并产生一个新的版本,再将分支合并。
删除分支
当分支合并后或者分支没必要保留就需要删除分支。
tortoisegit->版本分支图->右键要删除的分支选择删除。
标签
给某一个提交打上标签来表示给提交重要。
tortoisegit->创建标签->填写标签名。
远程分支
默认情况只会推送master分支到远程仓库,如果需要推送其他分支就需要在推送时选择本地分支和远程分支的名称。
跟踪分支:与远程分支有直接关系的本地分支,如果在跟踪分支上输入git pull,git能自动识别去哪个服务器上面抓取,合并到哪个分支。
修改上次提交
如果在提交代码后有遗漏的地方,正常再次提交会产生一个新的版本,如果只想保留一个版本可以在提交时勾选”修改上次提交“,此时提交的修改会自动合并到上一次的提交中。
版本重置
如果想恢复到之前的某个提交的版本,且那个版本之后提交的版本都不需要保留了,可以采用版本重置。
先调出提交历史,在某个版本上右键,选择”重置xx到此版本“,然后根据自身情况选择重置类型即可。
1.硬重置:直接将原来的版本内容覆盖掉现在的版本,已经不能找到现在的版本。
2.混合重置:将原来的版本覆盖掉现在的版本,但是依然能找到现在的版本。
版本回退
版本回退也可以让代码回退到之前的版本,这种回退方式会保留版本信息,产生一个新的提交。
选择一个或多个版本后右键选择”还原这些版本的变量“。
暂存修改
有时在某一个分支上进行开发时可能会出现需要切换到另外一个分支开发的情况,但是暂存区已经有修改无法直接切换。
解决方法一:先提交修改再切换。
方法二:使用暂存修改的功能。tortoisegit->贮藏更改。