1、Github操作
新建github个人仓库
点击newrepsitory按钮---------勾选增加README复选框------------------并增加gitignore和licence(随便选)
Github的sshkey注册
点击settings-----点击左边框的SSHKEY------------打开终端输入ssh-keygen-t rsa -C“8888888888@qq.com”---------------输入密码(88888)再重复输入---------------eval“$(ssh-agent -s)”------------ssh-add~/.ssh/id_rsa-----------输入passwd-----------vim~/.ssh/id_rsa.pub--------将内容复制,并黏贴到github上,起一个名字----------------ssh-Tgit@github.com-------------yes------完成。有的时候还是要要求你输入github的账号这个时候你可以输入在密码日记里的解决方法。
Fork别人的项目
在搜索框中输入需要查找的信息------在左边框中选择是用户还是工程-------点击进入到需要的工程-----点击fork按钮----再使用gitclone 命令就可以了------但此时提交的项目只能到自己的远程仓库中,而不是别人的项目中,使用pullrequest来进行合并
Pullrequest合并贡献者的操作
对于贡献者而言:一般会先创建一个分支来承载修改git checkout -bfeacher----进行修改----add、commit------gitpush origin feacher------点击createpull request-----可以填写一些信息------请求发送成功
对于项目拥有者而言:可以点击查看提交------如果觉得可以,就点击mergepull request------如果不行的话可以写下意见-------点击commenton this commit
2、Git的远程协作
Git clone用来获取远程仓库
在github上获得https的远程仓库地址-------------在终端输入gitcolne https://.......(地址)----再进入到本地的仓库中就可以进行操作了
Git fetch用来获取远程仓库中的所有分支和数据
Gitfetch获取远程终端的更新-------但这个时候head并没有指向更新的版本所以输入git merge origin/master(那个提交的位置)
Git pull git fetch+git merge
Gitpull 更新所以的内容
Gitpull origin feacher只更新某个具体分支
Git push 将本地仓库推送到远程仓库
当本地中没有一些远程服务器上的内容时,直接push会导致内容被覆盖-----要先使用gitpull将没有更新的内容先更新在merge-------此时会出现冲突-----解决冲突-----再使用gitadd 和gitcommit命令进行提交------这时会显示merge信息,输入:q!就可以了------在gitpush
Gitpush origin master 单独push具体分支
Gitpush --delete origin feacher 删除远程分支
Gitpush origin :feacher推送空的分支到feacher分支上,也是删除远程分支
Git remote远程活动
Gitremote add upstreamhttps://............用来获得别人远程仓库的信息,upstream是对别人远程仓库的别名 https是别人远程仓库的地址
Gitremote -v 用来看看每个别名对应的仓库,一般origin指的是自己的远程仓库
用别名来指定对应的远程仓库例如git merge upstream/master
Gitremote rename upstream daydayup 将upstream改名字
Gitremote 用来查看有几个别名
Gitrm upstream 删除远程仓库
Git init 名称创建本地工作库
Git log查看日志
Gitlog 输出完整的历史信息----按q回车表示退出-----按空格向下翻页-----b向下翻页-----上下键进行单行移动
Gitlog -p输出每个commit之间的差异信息
Gitlog -p --test,txt查看单个文件的差异信息
Gitlog --stat输出每个commit差异的统计信息
Gitlog --oneline 每个log只显示一行
Gitlog --oneline --decorate 会打印出tag信息如图:
--graph用图形的形式表示
Gitlog --oneline --decorate --graph --all 查看完整的工作示意图
Gitlog -S常数名--oneline 查看这个常数名是什么时候产出的
Gitlog -G常数名--oneline 查看这个常数名的修改历史
Gitlog -L :函数名:git_log.c查看某个文件中的某个函数的修改记录
Gitlog -L 2.3:test.c查看某个文件2到3行的修改记录
Gitshow查看具体提交的历史记录
Gitshow 16e9e16查看此次提交的情况
Gitshow master^查看master指向的提交的第一个父提交
Gitshow master^2查看master指向的提交的第二个父提交
Gitshow --oneline master^2输出简短的信息
Gitshow --stat master^2输出提交所作出改变的统计信息
以上参数可以组合起来
Gitshow tag可以查看tag的信息
Gitshow --format=%T master^格式化查看
Git add将本地工作区的文件加入到暂存区中
gitadd test.txt 加入的只有test.txt这个文件
Gitadd . 将整个工作区添加到暂存区
Gitadd -A将整个工作区添加到暂存区
Git commit将暂存区中的文件进行提交
Gitcommit -m “the message you want to write” 将文件提交,并写下你要的备注
Git tag用于进行标记,方便分享和还原
Gittag -a v0 -m”tag for v0” 创建一个tag
(git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象。建议使用附注标签。
#创建轻量标签
$git tag v0.1.2-light
# 创建附注标签
$git tag -a v0.1.2 -m “0.1.2版本”
创建轻量标签不需要传递参数,直接指定标签名称即可。
创建附注标签时,参数a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
)
使用gitpush --tags来将tag推送到远程仓库中(默认情况下不推送tag)
Gitcheckout 进行切换版本和创造/切换分支
Gitbranch 对分支进行操作
删除分支:gitcheckout master(先切换到master分支上)---------gitbranch -d feacher删除了本地分支--------------gitpush --delete origin feacher删除远程分支
gitcheckout -b feacher 添加feacher分支
Gitcheckout --master.txt用暂存区的内容覆盖工作区的内容
Gitcheckout 123sdw2 --master.txt用某个版本的master.txt进行覆盖工作区和暂存区
Gitclear清除终端的无用内容
Gitstatus查看区别
Gitstatus 查看工作区与暂存区的区别
Gitrm删除暂存区中不需要的东西
Gitrm a同时将工作区与暂存区中的a删除
Gitrm --cached a 只删除暂存区中的a
Gitmv工作区中移动和重命名文件
Gitmv a c将a重命名为c
Gitdiff查看差异
Gitdiff查看工作区与暂存区之间的差异
Gitdiff --cached查看暂存区与提交的区别
Gitdiff -- master.txt指定文件查看差异
Gitdiff HEAD~2比较当前工作区与其他历史提交的差异
Gitdiff --cached HEAD~2比较暂存区与某一历史提交的差异
Gitdiff HEAD HEAD~2比较指定历史提交之间的差异
Gitdiff --color-words用颜色标记不同
Gitreset还原内容
Gitreset HEAD master.txt(如果当前指向head可以不写head)将历史提交还原暂存区
Gitreset 231sdws master.txt
Gitclean移除没有跟踪的文件
Gitclean -n查看会帮忙移除的内容
Gitclean -f 强制删除
如果在.gitignore中有信息的话在gitclean -n就不会显示要删除这个此时:
Gitclean -n -X查看将要移除.gitignore中默认不清理的文件
Gitclean -X -f 移除.gitignore中默认不清理的文件
Gitclean -x -f移除.gitignore与其他要清理的文件
Gitrevert还原操作
Gitrevert 231siwd还原此次提交所做的操作
Gitblame定位代码责任人
Gitblame test.c查看文件每一行的责任人
Gitblame -L 1,3 test.c查看第一到第三行的责任人
Gitblame -L 5,+3 test.c 查看5,6,7行责任人
Gitbisect查找问题引入版本(采用二分法查找)
Gitbisect start开始bisect---------gitbisect bad表明当前历史记录有问题------gitbisect good34235we表明此次提交是没有问题的-----自动进入到中间的版本------重复标记good或者bad---------找到问题版本-----gitbisect reset结束bitsect这一过程
如果标记错误:
Gitbisect log>bisect.log查看log信息,并将其写入到bisect.log文件中-------------vimbisect.log-------------把错误的信息去掉--------------gitbisect reset退bisect------------git bisect replay bisect.log重复log的流程重新执行一遍