Git结构

交互

  • push: 本地库 -> 远程库
  • pull: 远程库 -> 本地库 修改的部分下载到本地
  • clone: 远程库 -> 本地库 整个项目
  • fork: 远程库1 -> 远程库2
  • pull request: 远程库1 -> 审核
  • merge: 审核 -> 远程库2

本地库

本地库初始化

git init

设置签名

项目/仓库级别

git config --global user.name MyName
git config --global user.email myEmail

系统用户级别

git config --global

  • 优先级:优先使用项目级别签名

添加提交/查询状态

查询工作区/暂存区的状态 git status
文件添加到暂存区 git add test

warning: LF will be replaced by CRLF in test.
The file will have its original line endings in your working directory

文件移出暂存区 git rm --cached test
暂存区添加到本地库 git commit test同时输入提交信息
git commit -m "MyComment" test

历史版本

查看历史提交

git loggit log --pretty=oneline按指定格式显示
git log --onelinegit reflog显示HEAD移动到当前版本的步数

前进后退版本

  • 基于索引值 git reset --hard 索引值
  • 使用 ^符号:只能后退(1 ^ one time)git reset --hard HEAD^^^
  • 使用 ~符号:后退3步
    git reset --hard HEAD~3

reset三个参数

  • --soft:仅在本地库移动指针
  • --mixed:在本地库移动指针,重置暂存区
  • --hard:在本地库移动指针,重置暂存区和工作区

找回删除文件

  • 永久删除回退:git reset --hard[指针位置]
  • 删除后未提交到本地库:git reset --hard HEAD

比较文件

  • 将工作区的文件和暂存区文件进行比较 git diff [文件名]
  • 将工作区的文件和本地库历史文件进行比较 git diff [本地库中的历史版本] [文件名]
  • 比较文件夹所有文件
    git diff

分支(branch)

  • 同时并行推进多个feature的开发
git branch -v #查看分支
git branch hot_fix #创建分支
git checkout hot_fix #切换分支
#合并分支 先切换到接收修改的分支
git merge hot_fix
  • 合并冲突文件
    MERGING状态


人工修改文件后 git add [file],git commit -m "msg"(不带文件名)

Git版本管理机制

  • SVN基于增量,Git基于快照

远程库

连接

git remote add [别名] [远程库地址]git remote -v

推送到远程库

git push [别名] [分支名]
如果不是基于远程库最新版,则不能推送。pull后如果进入冲突状态解决即可。

clone远程库

git clone [远程库地址]

  • 完整的将远程库下载到本地
  • 创建origin别名
  • 初始化本地库

拉取

git pull是拉取远程分支更新到本地仓库的操作。比如远程仓库里的学习资料有了新内容,需要把新内容下载下来的时候,就可以使用 git pull命令。事实上,git pull是相当于从远程仓库获取最新版本,然后再与本地分支merge(合并)。
即:git pull = git fetch + git merge

git fetch origin master #[远程库地址别名][远程分支名]
git merge origin/master #[远程库地址别名/远程分支名]远程库合并到本地

git pull origin master

rebase

https://blog.csdn.net/wh_19910525/article/details/7554489

跨团队协作

pull request
是否merge

SSH

ssh-keygen -t rsa -C "youremail@example.com"

-rw-r--r-- 1 LOLLIPOP 197609 2602  4月 26 18:33 id_rsa
-rw-r--r-- 1 LOLLIPOP 197609  572  4月 26 18:33 id_rsa.pub

添加 ~/.ssh/id_rsa.pub到Github
给ssh创建别名然后push

Git工作流

  1. 集中式工作流
  2. GitFlow工作流
  3. Forking工作流

一般流程

添加远程库(只执行一次)
git remote add origin git@github.com:xxxxxxxxxxxxxxxxx

写代码之前:
从远程库拉取最新的代码。
git pull --rebase origin master

写代码之后:
git add .
git commit -m '填写提交信息'

提交到远程库
git push -u origin master

参考链接:




扫一扫在手机打开当前页