Git积累

1.git配置信息
  (1).配置用户和邮箱
    git config --global user.name 'your_name'
    git config --global user.email 'your_email@domail.com'
  (2).config
    只对某个仓库有效:git config --local
    对当前用户所有仓库有效: git config --global
    对系统所有登陆的用户有效: git config --system
    显示config的配置,加--list:
      git config --list --local
      git config --list --global
      git config --list --system
2.创建git仓库:
  (1).把已有的项目代码纳入git管理
    cd项目代码所在的文件夹
    git init
  (2).新建的项目直接使用git管理
    cd某个文件夹
    git init your_project #会在当前路径下创建和项目名称同名的文件夹
    cd your_project
  (3).提交文件:需要把文件先提交到暂存区再提交或直接使用 git commit 文件名 -m'提交备注' 直接提交
    git add 文件名 添加到暂存区 git add 后可以加多个文件
    git commit -m'提交备注' 提交文件
    git status 查看当前提交状态
    git log 查看日志
3.工作区和暂存区
  工作目录 添加到暂存区 再提交到版本历史
  git add -u 把git管理的所修改的所有文件添加到暂存区
4.给文件重命名 git mv 文件名 更并的文件名 然后 git commit -m'提交理由'
  重命名文件 mv
  将重命名后的文件添加到git的暂存区 git add
  删除git中之前的文件 git rm 文件修改之前的名字
5.通过git log查看版本演变历史
  git log --oneline /git log --oneline --all
  git log -n4 --online. 查看最近4次提交记录. git -n4 --online --graph
  查看git分支:git branch -av
  查看所有日志:git log --all
  图形化查看日志:git log --all --graph
  查看git log所有指令:git help --web log
6.通过图形界面工具来查看版本历史:gitk
  Patth. 是每次变更提交的文件集
  Tree 文件的所有内容
  Author 作者
  Committer 提交人
7. .git目录
  HEAD 文本文件 内容 git当前仓库的分支名称 切换分支的时候HEAD会发生变化
  Config :存储的user信息 修改后会影响用户的变化
  Refs :git 仓库的标签、里程碑(tags)、分支信息(heads)
8.commit、tree和bolb三个对象之间的关系
  commit中包含 tree parent author committer
  tree包含 tree blob
  blob包含文件内容
  Git cat-file -p ID 查看当前信息
9.分离头指针:指的是变更没有指定分支
10.HEAD和branch
  创建新分支:git checkout -b 新分支名称
  HEAD可以指向分支或是某一个commit
  git dff ID1 ID2 比较差异
11.删除不需要的分支:git branch -D/d 分支名 (D 会直接删除 d 删除分支时会有提示)
  查看分支:git branch -av
12.修改最新的commit的message:git commit --amend 会弹出一个界面 然后修改message保存
  修改旧的commit的message:git rebase -i 选择当前commit的父亲的ID 会弹出一个界面 根据界面提示的命令修改
  reword 要修改的commitID 保存退出 会再进入另一个界面 然后修改commit的message保存
  只适合本地分支,不建议修改团队分支
13. 把多个连续commit整理成一个:git rebase -i 选择要合并的最后一个commit ID 会进入一个界面 选择最第二早的commit的ID在前边加上 s(squash) 保存然后会进入另一个界面 会提示哪些commit要合并然后添加合并的理由保存即可
14.把间隔几个commit整理成一个:git rebase -i 选择最后一个commit ID 会进入一个页面 然后把最古老的commitID添加在第一行 pick commit ID,然后把合并的commit合在一起 s 要合并的commit ID 放在要合并的commit下边 保存
  git rebase --continue 编写要合并的原因
15.比较暂存区和HEAD所含文件的差异:git diff --cached (暂存区和HEAD之间的差异)
16.比较工作区和暂存区所含文件的差异:比较所有文件的差异:git diff
  比较指定文件的差异:git diff -- 文件名 (可以是多个文件名)
17.让暂存区恢复成HEAD一样:git reset HEAD (会把暂存区所有文件取消掉)
18.让工作区的文件恢复为和暂存区一样:git checkout -- 要恢复的文件名
19.取消暂存区部分文件的更改:git reset HEAD -- 要恢复的文件名
20.消除最近的几次提交:git reset --hard commit ID
21.不同提交的指定文件的差异:git diff 分支名1 分支名2 比较两个分支差异
  比较两个分支中指定文件的差异:git diff 分支名1 分支名2 -- 文件名
22.删除文件:git rm 文件名
23.开发中临时添加了临时任务:git stash(暂时存放)
  git stash apply(把之前暂存的内容放到工作区 暂存区的内容还在)
  git stash pop 把之前暂存的内容放到工作区 清理掉暂存区的内容
  git stash list 查看暂时存放区
24.指定不需要Git管理的文件:创建一个 .gitignore 文件夹/文件 在里面添加git不需要管理的文件 保存即可。可以参考GitHub 提供的gitignore 的各种编程语言的配置
25.将git仓库备份到本地:
  常用协议 语法格式 说明
    本地协议(1) /path/to/repo.git 哑协议
    本地协议(2) file:///path/to/repo.git 智能协议
    Http/https 协议 http://git-server.com:port/path/to/repo.git 平时接触的都是
    https://git-server.com:port/path/to/repo.git 智能协议
    ssh协议 user@git-server.com:path/to/repo.git 智能协议
  哑协议与智能协议
    区别:哑协议传输进度不可见;智能协议传输可见
    传输速度:智能协议比哑协议传输速度快

  git clone -- bare 仓库地址 本地仓库名称 :克隆不带工作区的仓库
  把变更同步到远端:git remote -v
  git remote add 仓库名 远端仓库地址
  git push 仓库名

原文地址:https://www.cnblogs.com/qinxu/p/13976319.html