git命令
第一步要进入目标文件鼠标右键Git Bash Here
git init
git有管理这个文件的权限
git status
检测当前文件夹的文件
git add xxx(xxx为文件名)
增加管理文件xxx
git add .
增加所有文件的管理
git commit -m "版本信息描述"
生成版本
如果报错
写上
- git config --global user.email "you@example.com"
- git config --global user.name "Your Name" "前有空格
git中文件三种状态的变化
- 红色(工作区): 新增的文件/修改了的原文件 => git add 文件名
- 绿色(暂存区): git已经管理起来 => git commit -m "描述信息"
- 生成版本(版本库)
git log
git log --graph 打印版本图
git log --graph --pretty=format:'%h %s' 简略版 %h表示提交版本 %s表示提交信息
打印过往版本
git reset --hard 版本号(log打印出版本的版本号)
回滚到之前版本
git reflog
可以打印出回滚操作之前的版本(git log)打印不出
git checkout -- 文件名
用于刚修改完的文件 (红色状态) 输入完命令后 文件会回到修改之前的上个版本
git reset HEAD 文件名
让暂存区的文件退回到工作区(红=>绿)
git branch
查看当前所处的分支
git branch 分支名
创建分支
git checkout 分支名
跳到目标分支
git checkout -b 分支名
创建分支并切换到分支
git branch -d 分支名
删除分支
如何合并分支
- 切换回master分支
- git merge 分支名 合并分支
- git branch -d 分支名 删除分支
如果是两个分支跟master合并会得到一个冲突文件,需要自己手动修改
git merge 分支名
合并分支
git barnch -d 分支名
删除分支
git tag -a -tag名 -m '详细信息'
给当前版本加标签
github部分
git remote add origin githubn仓库地址
将origin代替你的仓库地址
PS:如果仓库地址是https的 每次都要输入账号密码,如果是ssh的要设置ssh秘钥 操作可自行百度
git remote set-url origin 仓库地址
切换https与ssh地址
git push -u origin 分支名
将目标分支推到仓库(要输入github账号密码)
git clone 仓库地址
把仓库里的所有代码拿下来(虽然git branch不会显示分支 但是可以通过git checkout 直接切换仓库里有的分支)
git pull origin 分支名
这个命令相当于
git fetch origin 分支名(github到版本库) + git merge origin/dev(版本库到工作区)
更新分支代码
git push origin --tags
把tag标签推送到github
Rebase(变基)(使git记录简洁)
rebase的使用准则
如果提交存在于你的仓库之外,而别人可能基于这些提交进行开发,那么不要执行变基。
git rebase -i 两种写法
- 第一个是版本号 如果最新版本v4 写了 v2的版本号 就等于是要操作v4-v2版本记录
- 第二个是 HEAD~数字 如果写的是3 就等于操作最新版本开始往下数到第三个 如最新版本v4 写了 git ebase -i HEAD~3 就表示要操作v4-v2
-
操作之后会进入vim模式 按i编辑 (根据指示 一般合并的记录将pick改成s) 按esc退出 然后:wq保存
-
保存之后弹出的界面可以修改合并后的详细描述 同样是vim模式
ps:合并记录不要合并已提交到github上的记录
合并分支信息
它的原理是首先找到这两个分支(即当前分支 experiment、变基操作的目标基底分支 master) 的最近共同祖先 C2,然后对比当前分支相对于该祖先的历次提交,提取相应的修改并存为临时文件, 然后将当前分支指向目标基底 C3, 最后以此将之前另存为临时文件的修改依序应用。将 C4 中的修改变基到 C3 上现在回到 master 分支,进行一次快进合并。
更多详细例子可参考下面链接
- 切换到分支
- git rebase master
- 切换回master 合并分支 还有一种写法可以直接包括第一二步,但还是要写第三步
$ git rebase 目标分支 要变基的分支 上图分别是experience master
打印的信息不会出现分支
情况:假设有个v1版本 在a地写到了v2没上传到github 到b地写了v3功能 这时候再回到a地 从github拿代码下来 如果用pull 会产生分支记录
这时候需要 git fetch origin 目标分支 然后再 git rebase origin/目标分支
简而言之就是 git pull origin 目标分支 写成 git fetch origin 目标分支 + git rebase origin/目标分支
如果rebase操作发生错误 根据指令操作 最后git rebase --continue
快速解决冲突
-
安装beyond compare 打开 Beyond Compare -> Beyond Compare Menu ->*** Install Command Line Tools***
-
git中配置
$ git config --local merge.tool bc3
$ git config --local mergetool.path 'E:\git文件\Beyond Compare\Beyond Compare 4'
$ git config --local mergetool.keepBackup false
- git mergetool用
给开源项目贡献代码
-
fork代码
copy源代码到自己仓库
-
在自己仓库修改代码
-
给源代码作者提交修复 bug申请