Git-入门
Git
下载&安装
打开Git
右键-Open git bash here
菜单/程序-git bash
cmd命令提示符
1 | pwd 查看程序允许的目录位置 |
配置Git
1 | git config --global user.name "<你的用户名>" |
查看配置
1 | git config --list |
初始化仓库
需要Git服务器进行代码托管,可以自建Git服务器,也可以使用Github或Gitee的免费服务器。本文章以Gitee为例进行演示,
远端初始化仓库
本地初始化仓库
绑定远端仓库
git remote add
1 | git remote add origin https://gitee.com/littleboy97/git-practice |
修改仓库
克隆仓库
将远端仓库克隆到本地
1 | git clone <链接> |
查看当前仓库状态
1 | git status |
添加暂存文件
添加git缓冲区
1 | 添加指定文件 |
添加版本评论
添加版本评论
1 | git commit |
文件在评论过程会形成一次log记录,然后可通过git log查看记录来获取
1 | git log |
git reset评论记录里的那串数字,可以找到每次的提交
1 | git reset --hard <commitID> |
是否能删除评论?
查看文件差异
查看文件差异
1 | git diff <commit ID1> <commit ID12> |
推送至远端仓库
推送更新到远端仓库
1 | git push |
分支
分支,创建用于功能的编写和功能的测试使用的环境。
设计流程:首次生成的main主分支,在设计过程会需要进行功能develop分支的开发(这样就不会动到原先的main主分支)。这个有点类似我们在复制一版文件进行修改。开发分支设计好后,会合并到main主分支里。
查看
1 | git branch |
创建
这只是创建,没有直接检出切换到新建的分支的,需要checkout检出
1 | git branch <分支名> |
切换
切换不同分支,其文件夹内容显示和分支是有关系的(图),不同分支有不同的内容的。
1 | git checkout <分支名> |
上传
分支也是可以上传到远端仓库的,可以按前面操作。git push将本地分支推送到远端仓库。
1 | git push |
如果远端无分支则设置下面方法上传推送
1 | git push -u <远端仓库名> <分支名> |
下载
将远端仓库拉取到本地分支。
1 | git pull |
如果远端无分支则
1 | git pull <remote> <branch> |
合并
作为完成分支功能开发的分支,可将设计完成的功能分支进行合并汇总到主分支上。
在分支做好的内容有两种处理:
1、上传分支后,切换到需要汇总的分支,输入如下代码,将其他分支合并进来
1 | 切换汇总分支 |
2、git staus将当前分支暂存起来
1 | git staus |
删除
删除本地分支
1 | git branch -d <分支名> |
更新远端分支,并删除远端分支
1 | git push -u origin -d <分支名> |
文件复制
<分支1>:
1 | ├── README.md |
<分支2>:
1 | ├── README.md |
假设我们当前在<分支1>, 目录为仓库根目录,想要复制<分支2> 的 java/test.java 到当前目录,执行下面的语句:
1 | git checkout <分支2> -- java/test.java |
⚠️注意:这里还是会创建一个java目录,而不是把test.java放到根目录下。
如果当前进入了cpp 子目录,后面的路径也需要改成相对路径:
1 | git checkout <分支2> -- ../java/test.java |
如果想要复制整个目录,也是一样的:
1 | git checkout <分支2> -- java/ |
此外还可以利用提交的hash值来复制文件,这样就会复制当次提交时候的文件内容:
1 | git checkout 941b6dd java/test.java |
协同
代码冲突
revert回退版本
本地回退版本,revert会按照某个commit版本,并会当作新版本使用。
1 | git revert HEAD^ |
reset回退版本
本地回退版本,reset会回退到某个commit版本,并会删除后续版本。
1 | git reset HEAD^ |
rebase切换提交
Q&A
切换分支
当我们正常使用Git切换分支时,会出现以下提示(请在切换分支之前提交您的更改或隐藏它们)Please commit your changes or stash them before you switch branches.
方法:
因为当前的分支dev 最初也是从master 分支上衍生出来的。而此时你要再从该分支上切换到其主分支。那么你需要先把该dev分支上的改动提交后才能切换,但是该dev分支上还没有完成全部的修改,你不想提交。那么此时你就要选择 stash (存放)它们(你在当前分支上改动的却没有提交commit的内容)。
所以第一步,在当前分支上执行 git stash 命令。将当前分支存起来,id为 807be186826这时候再执行 git status 命令,显示没有东西需要提交,接着就可以在主分支master上创建并切换到新的分支去修复另一个Bug了。
那修改完那个Bug也提交后,就该回到dev 分支上去继续修改那个未完成的Bug。
执行 git checkout dev 切换到 dev 分支,这个时候执行 git status 命令仍旧显示没有东西需要提交。毕竟我们前边已经成功将dev上未提交的改动给“隐藏“了,这时,用 $ git stash list 命令去查看我们“存储”的列表。
参考
菜鸟教程:https://www.runoob.com/git/git-tutorial.html
vim编辑器
标签