C++ 在项目中使用Git

目录

一:配置邮箱和姓名

[二:生成SSH Key](#二:生成SSH Key)

[三:git 工作区和状态](#三:git 工作区和状态)

[四:git log 常用法](#四:git log 常用法)

[五:git diff 常用法](#五:git diff 常用法)

[六:git 分支操作](#六:git 分支操作)

[七:git 回溯分支](#七:git 回溯分支)

[八:git rebase -i 压缩历史提交记录](#八:git rebase -i 压缩历史提交记录)

九:推送到远程仓库

[十:提交 Pull Request 流程](#十:提交 Pull Request 流程)

[十一 接受 pull request](#十一 接受 pull request)


一:配置邮箱和姓名

cpp 复制代码
$ git config --global user.name "Firstname Lastname"
$ git config --global user.email "your_email@example.com"
cpp 复制代码
//让输出更具可读性
$ git config --global color.ui auto

二:生成SSH Key

cpp 复制代码
ssh-keygen -t rsa -C "your_email@example.com"
cpp 复制代码
//将生成的ssh-key配置到github上,然后测试 
ssh -T git@github.com

三:git 工作区和状态

四:git log 常用法

cpp 复制代码
//提交信息只显示一行
$ git log --pretty=short
$ git log --pretty=oneline 

//显示文件改动
$ git log -p

//过滤提交内容
$ git log --grep 

//按作者过滤
$ git log --author

//行数统计
git log --stat 

五:git diff 常用法

cpp 复制代码
//显示工作区与暂存区的差异
$ git diff

//显示工作区与本地仓库的差异
git diff HEAD

//显示暂存区与上次提交时的差异
git diff --cached 
git diff --staged 

//从工作目录删除文件
rm  xxxx
git rm xxxx

//将文件从仓库中删除,但保留在工作区
git rm --cached xxxx

六:git 分支操作

cpp 复制代码
//新建分支
git checkout -b feature-A

//合并分支,将feature-A 分支合并到当前分支
git merge feature-A

//以图表形式查看分支
git log --graph

//以图形界面形式查看分支
gitk

七:git 回溯分支

cpp 复制代码
//让仓库的 HEAD、暂存区、当前工作树回溯到指定状态
git reset --hard

//撤销上一次提交,重新提交
git commit --amend
cpp 复制代码
//查看当前仓库执行过的操作的日志
git reflog

八:git rebase 用法

cpp 复制代码
//用于压缩历史提交记录
git rebase -i

//用于合并分支,如下图(C3变化的补丁重新在C4的基础上打一遍),注意与merge的区别
git checkout experiment 
git rebase master 

//永远不要rebase那些已经推送到公共仓库的commit。

九:推送到远程仓库

cpp 复制代码
//添加远程仓库
git remote add origin git@github.com:github-book/git-tutorial.git

//到远程仓库拉取比你低仓库中还没有的数据
git fetch xxxx
cpp 复制代码
//推送到远程分支,-u参数可以在推送的同时,将 origin 仓库的 master 分
支设置为本地仓库当前分支的 upstream(上游)
git push -u origin master

1 git push origin master:refs/heads/master
 是将本地的master分支推送到远程主机origin上的对应master分支, origin 是远程主机名,
 第一个master是本地分支名,
 第二个master是远程分支名。

 简写为: git push origin master


2 git push origin HEAD:refs/for/master

 origin : 是远程的库的名字
 HEAD: 是一个特别的指针,它是一个指向你正在工作的本地分支的指针, 
 可以把它当做本地分支的别名,git这样就可以知道你工作在哪个分支
 refs/for :意义在于我们提交代码到服务器之后是需要经过 code review 之后才能进行merge的
 refs/heads: 不需要

3. 删除远程分支
 git push origin :serverbranch
cpp 复制代码
//我们试着将 feature-D 分支获取至本地仓库
git checkout -b feature-D origin/feature-D
cpp 复制代码
//将本地的 feature-D 分支更新到最新状态(远程仓库的 feature-D) 
git pull origin feature-D

十:提交 Pull Request 流程

cpp 复制代码
1. 先fork仓库

2. 克隆仓库
  git clone git@github.com:hirocastest/first-pr.git

3. 给原仓库设置 upstream 的名称,将其作为远程仓库 
  git remote add upstream git://github.com/octocat/Spoon-Knife.git
  git fetch upstream

4. 查看分支
  git branch -a

5. 创建分支
  git checkout -b work gh-pages

6. 推送到远程分支 
  git push origin work

7. 提交pull request

十一 接受 pull request

cpp 复制代码
1. 克隆仓库
    git clone git@github.com:ituring/first-pr.git

2. 获取发送方远程仓库
    git remote add PR发送者 git@github.com:PR发送者/first-pr.git

3. 新建分支 
    git checkout -b pr1

4. 合并分支
    git merge PR发送者/work

5. 合并到主分支
    git checkout gh-pages
    git merge PR送信者/work
相关推荐
oort12314 分钟前
VLStream:全开源决策式AI视频平台,赋能企业构建自主可控、降本增效的智能视觉应用介绍
大数据·开发语言·人工智能·开源·音视频·数据库架构
王老师青少年编程27 分钟前
信奥赛C++提高组csp-s之搜索进阶(搜索剪枝案例实践2)
c++·信奥赛·csp-s·提高组·搜索剪枝·生日蛋糕·最优性剪枝
c++之路39 分钟前
C++ 设计模式全总结
java·c++·设计模式
c238561 小时前
c/c++中的多态(上)
开发语言·c++
彷徨而立1 小时前
【C++】介绍 std::ifstream 输入文件流
开发语言·c++
罗超驿1 小时前
13.JavaScript 新手入门指南:语法、变量、流程控制全解析
开发语言·javascript
MC皮蛋侠客1 小时前
C++17 多线程系列(十):多线程性能优化——从测量到调优
c++·多线程
yingjie1101 小时前
Scanpy vs Seurat 深度对比:Python 与 R 的单细胞分析框架谁更强?
开发语言·python·r语言·生物信息学·单细胞转录组·seurat·scanpy
程序大视界1 小时前
【C++ 从基础到项目实战】C++(六):拷贝控制——浅拷贝与深拷贝,兼谈智能指针
开发语言·c++·cpp
luck_bor1 小时前
IO流知识点笔记
java·开发语言·笔记