Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds(林纳斯)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。
Git中任何已提交的东西几乎总是可以恢复的
git config --global user.name 用户名 设置用户签名
git config --global user.email 邮箱 设置用户签名
git init 初始化本地库
git status 查看本地库状态
git add 添加到暂存区
git commit -m “日志信息” 文件名 提交到本地库
git commit -a -m “日志信息” 直接添加暂存区并且提交 (需要添加过一次暂存区以后才可以使用)
git .gitignore 需要忽略的文件
git log 查看详细版本信息
git reflog 查看历史记录查看前7位精简版的版本号
mv test.txt mry.txt 修改文件名
git status -s 显示简洁的状态
git diff 修改之后还未添加到暂存区中的内容
git diff staged 添加到暂存区后还未提交的内容
rm 文件 在工作区移除文件
git rm 文件 在git中移除文件
git rm log/*.log 删除log/目录下的所有扩展名为.log的文件
如果仅仅需要不让git管理这个文件
git rm --cached 文件名 : 工作区还有文件,本地仓库没有文件
git mv test.txt mry.txt 修改暂存区中文件名称
相当于下面三句:
mv test.txt mry.txt
git rm test.txt
git add mry
要在提交前删除旧的文件名
git reset HEAD 文件名 取消暂存区中的文件
(默认使用的mixed,命令比较危险)
git checkout – 文件名 撤销之前所做的修改
(这个命令非常危险,他会用最近一次提交的版本覆盖掉它)
cat 文件名查看文件内容
git remote 远程仓库URL
git remote -v 远程仓库对应的URL,以及简写
git remote add 简洁名称 远程仓库URL
git remote rename 名称 重命名名称
git remote remove 仓库 移除远程仓库
git fetch origin 与服务器同步。从服务器取得所有本地尚未包含的数据,然后更新本地数据库,最后把origin/master指针移动到最新的位置上
git checkout 分支名称 切换分支
$ git log --oneline --decorate --graph --all 查看分支历史
git branch -v 查看分支上的最新提交
git branch -u 远程分支名 可以更改当前分支与远程分支绑定
git checkout -b 分支名称 创建并且切换到那个分支上
是下面两句的简写:
git branch 分支名称
git checkout 分支名称
git push origin --delete 远程分支名 删除远程分支
git log --oneline --decorate --graph --all 查看历史分叉情况
git branch -d 分支名 删除分支
git merge 需要合并的分支 分支合并
git mergetool 可视化工具分支合并用
gitlab生成SSH秘钥 ssh-keygen -t rsa -C 账号
暂存区和工作区是各个分支公用的部分
git stash,在当前分支git statsh的内容可以在其他分支git statsh pop出来.
merge分支合并: 实际上是一个三方合并。分别对比C2与C3,C2与C4,C3与C4,这三项都没有冲突时可以直接合并。如果合并时出现了代码冲突(不同的版本修改了同一部分代码),需要手动解决冲突,利用Git中的git mergetool可以解决代码冲突。找到两个分支的末端,将它们合并到一起
rebase分支合并: rebase其实是变基,就是改变了基础节点。
首先将提交到C4的部分提取出来,放到临时区保存,接着将整个dev分支重置为master分支,最后再将临时区中的C4拿回来。
可以用命令git rebase --abort 是无风险的操作,会回到rebase操作之前的状态,2个分支的commits毫发无损。 --abort取消错误的操作
git rebase --skip 是高风险的操作,引起冲突的commits会被丢弃(这部分代码修改会丢失)。 --skip跳过错误的操作
总结: 变基操作是把某条开发分支线上的工作在另一个分支线上按顺序重现。而合并操作是找出两个分支的末端,并把它们合并到一起
版本回退的本质其实就是工作区,暂存区,本地仓库这三者之间的交互。
revert版本回退:
Git的版本就像放书一样一层一层往上放的,比如一开始是A,我们可以看到,当更新到B时,我们就只能在上面看到B,往后同理。已经到版本C时,如果想要退到版本B,revert所做的就相当于在C版本后添加一个与C相反的镜像,这样C-C抵消了,我们就可以看到B了,如果想要在看到A,那就再继续在后面填一个与B相反的镜像,这样就可以看到A。
首先reset版本回退有4中方式:
hard , soft , mixed , keep