git安装地址
git的使用
- 查看帮助,所有的命令通用
1 | git cmd --help //cmd是对应的命令,输入之后他会打开对应的网页 |
- clone命令,从远程仓库中copy代码到本地,方式一般常用的有两种方法
1.1. https
1.2. ssh
1 | // 例如 |
- 本地基本配置,git config,配置用户名和邮箱,下面是配置全局的。就是整个git环境下的,还可以去配置一些快捷,比如commit命令可以配置为cm
1 | // 查看配置 |
- 本地创建git版本库
1 | git init |
- 添加到git暂存区,就是可以把该文件列为git版本控制的范围
1 | // 添加某一个文件到暂存区 |
提交修改纳入版本库
1
git commit -m"提交描述"
切换分支
1 | git checkout branchName |
- 关联远程仓库
1 | git remote add origin git@github.com:liweijie/xxx.git |
- 生成ssh密匙
1 | ssh-keygen -t rsa -C youemail |
- 分支管理
1 | //查看本地所有分支 |
- 合并分支
1 | //当前分支合并别的分支,直接合并 |
- 看起来没有merge的合并 rebase
1 | git rebase otherBranch // rebase别的分支的提交作为本分支的提交 |
- rebase和merge的作用和区别 他们的作用是同样的把别的分支代码合并到自己本分支上面,不同之处:
1 假如你现在有基于远程分支origin 创建一个叫mywork的分支,原来的origin分支已经有了两个提交,如下:
使用命令:
1 | git checkout -b mywork origin //创建并且切换到mywork分支 |
然后与此同时,我们在mywork分支做了一些修改,变为了
同时,又有别的人在origin分支上面做了修改并且提交了,如下
假如我们使用merge,把origin分支pull下来,然后切换到mywork分支,然后把origin合并过来,结果是这样子的
但是,我们想让他看起来是没有经过merge的,这样子分支上会清晰很多,方便管理,这时候使用rebase分支,他的原结果图是:
使用命令
1 | git rebase origin //当前分支是mywork,而且mywork分支已经pull下来了 |
这时候,mywork分支会把该分支的所有提交废弃,并且同时生成补丁patch ,存放在.git/rebase目录下,然后把mywork分支更新为最新的origin分支,最后把保存的补丁应用到mywork分支上。
当mywork分支更新后,他会指向这些新创建的提价,那些老的提交会被丢弃,如果允许垃圾收集命令git gc ,这些提交就会被删除。
当发生冲突的时候,git会停止rebase让你去解决冲突,在冲突解决完成后,使用git add .命令更新索引,无需执行git commit ,只需要执行git rebase -continue.。
所以,最终git merge和git rebase的区别就是git merge会保留所有的提交,会比较乱但是有注释,但是git rebase会比较的清晰,他会只有一条线。
- 拉取远程分支
1 | git pull <远程主机名> <远程分支名>:<本地分支名> |
- 获取最新的远程版本库内容
1 | git fetch <远程主机名>//一般为origin |
- 推送本地更新到远程服务器
1 | // 需要注意的是他跟git pull是相反的 git pull origin remoteBranch:localBranch |
- 打tag
1 | git tag -a 标签号-m"标签描述" |
- 合并分支
1 | //合并别的分支到当前分支 |
- 查看状态
1 | //查看还没有被列入版本库的文件和还没有被commit的文件 |
- 查看commit但是没有被push的文件
1 | git log localBranch ^origin/remoteBranch // 查看commit没有被push的详细 |
- 保存状态
1 | // 场景是你需要切换分支,但是当前分支的修改还不能提价 |
- 列出提交日志
1 | //列出所有历史记录 |
- 再次修改gitignore文件并且生效
1 | //场景是一些不需要被提价版本库的文件以及被提交了,这时候需要把他重新在版本库中去除 |
- 合并commit,多钟方法
1 | 第一种 |
- LInux的一些简单命令
1 | //载入修改文件内容 |