初始Git

Git是目前世界上最先进的分布式版本控制系统。

Git安装及配置

参考教程:
Git安装与配置

安装完成后,调出 Git Bash窗口进行简单配置:

  1. $ git config --global user.name "Your Name"
  2. $ git config --global user.email "email@example.com"

Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
注意:git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

注:路径C:\Users\Administrator\.gitconfig,打开可以查看配置的信息。此信息是可以被直接读取到的明码。

Git常用命令

git init:把当前的目录变成可以管理的git仓库,生成隐藏的.git文件
git add xx:把xx文件添加到暂存区
git status:查看仓库状态。(红色代表文件在工作区,绿色代表文件在缓存区,灰色working directory clean 说明提交完成)
git commit -m “xxx” a.txt :提交文件 -m后面的是注释

cat xx:查看xx文件内容
vim xx:编辑xx文件内容。出现弹窗口,按键盘”a”进入编辑模式,编辑完成先ESC键退出 输入:wq! 退出编辑窗口

git log:查看历史记录
git reflog:查看历史记录的版本号id

git reset --hard HEAD^:往上回退一个版本(几个^号就回退几个版本)
git reset --hard HEAD~3:往上回退三个版本
git reset --hard 7位版本号:直接穿梭到某版本

git checkout -- xx:把xx文件在工作区的修改全部撤销

git branch xxx:创建分支xxx
git checkout -b dev:创建dev分支 并切换到dev分支上
git branch:查看当前所有的分支
git checkout dev/master:切换回dev/master分支
git checkout:查看所有的分支

git merge dev:在当前分支合并dev分支

git rm xx:删除xx文件,之后要commit。直接git commit -m “xxx”
git branch -d dev:删除dev分支
git branch -D dev:强制删除dev分支

mkdir XX:创建一个空目录 XX指目录名
pwd:显示当前目录的路径
touch xx:新建xx文件文件

git remote add origin[https://github.com/git](https://github.com/git)账号/a.git 关联一个远程库
git push -u origin master:把当前master分支推送到远程库(第一次要用-u以后不用)
git clone [https://github.com/xxxxx](https://github.com/xxxxx):从远程库中克隆
git push origin master:git会把master分支推送到远程库对应的分支上
git pull origin master:git会把远程库的master分支拉到本地上

git remote:查看远程库信息
git remote -v:查看远程库的详细信息

git diff:查看不同
git clean:清屏

补充理解

工作区+版本库+暂存区

工作区(working Directory):就是你电脑本地硬盘目录
版本库(Repository):工作区有个隐藏目录.git,就是Git的本地版本库
暂存区(stage):一般存放在“git目录”下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
Git为我们自动创建的第一个分支master,以及只想master的一个指针叫HEAD

提交行为

我们把文件往Git版本库里添加的时候,是分两步执行的:
第一步是用“git add”把文件纳入Git管理,实际是把本地文件修改添加到暂存区;
第二部使用“git commit”提交更改,实际上是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以commit就是往master分支上提交更改。

可以简单的理解为,需要提交的文件修改统统放到暂存区,然后一次性提交暂存区的所有修改,一旦提交完成后,如果你又没有对工作区做什么修改,那么工作区就是“干净”的。即:nothing to commit(working directory clean)。

$ git diff HEAD -- filename 命令可以查看工作区和暂存区里边 最新版本的区别。
新建过撤销未add:git checkout -- 文件名
撤销已add未commit:先git reset HEAD 文件名,再 git checkout -- 文件名
撤销已add已commit:git reset –hard HEAD^,即回退到上一个版本

关联 GitHub

Github是一个基于Git的代码托管平台。Git并不像SVN那样有一个中心服务器。目前我们使用到的Git命令都是在本地执行,如果你想通过Git分享你的代码或者其他开发人员配合。

关联Github账号

1、注册+检查.ssh秘钥:由于你的本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以我们需要配置验证信息(No such file or directory 表示第一次);
2、创建SSH Key,在Git Bash 窗口输入ssh-keygen -t rsa -C “email@example.com”
成功的话会在~/下生成ssh文件夹,进去打开id_rsa.pub,复制里边的key;
3、测试连通性:在Git Bash 窗口输入:ssh -T git@github.com

本地与 Github远程库

本地和github上的仓库进行关联
$git remote add origin [https://github.com/](https://github.com/)用户名/仓库名.git
克隆Github某仓库到本地
git clone [https://github.com/xxxxx](https://github.com/xxxxx)
把本地库的内容推送到远程Github
git push origin master,实际上是把当前分支master推送到远程

多分支之间的提交

分支操作

  1. git branch --all // 查看所有分支
  2. git branch <分支名test> // 创建分支如test为例
  3. git checkout <分支名test> // 切换到某分支如test为例
  4. // 提交代码
  5. git push origin test:test // 发布test分支,即同步test分支的代码到远程服务器,这样远程仓库也有一个test分支了
  6. // dev分支开发代码
  7. git checkout dev // 切换到dev分支进行开发
  8. # 开发代码之后,我们有两个选择
  9. # 第一个:如果功能开发完成了,可以合并主分支
  10. git checkout master # 切换到主分支
  11. git merge dev # 把dev分支的更改和master合并
  12. git push # 提交主分支代码远程
  13. git checkout dev # 切换到dev远程分支
  14. git push # 提交dev分支到远程
  15. # 第二个:如果功能没有完成,可以直接推送
  16. git push # 提交到dev远程分支
  17. # 注意:在分支切换之前最好先commit全部的改变,除非你真的知道自己在做什么
  18. 6. 删除分支
  19. git push origin :dev # 删除远程dev分支,危险命令哦
  20. # 下面两条是删除本地分支
  21. git checkout master # 切换到master分支
  22. git branch -d dev # 删除本地dev分
  23. # 放弃正在合并中merge,返回上一次的commit
  24. git reset --hard

强制用本地更新远程

  1. git push -u origin master -f

强制用远程分支更新本地

  1. git fetch --all
  2. git reset --hard origin/master // 远程分支名称
  3. git fetch

tags用法

  1. # 创建辅助标签:
  2. git tag -a 标签名称 -m “版本说明”
  3. # 推送到远程仓库
  4. git push origin <tagName>
  5. # 若存在很多未推送的本地标签,一次全部推送
  6. git push origin --tags
  7. # 同步远程分支到本地
  8. git fetch origin --prune --tags

删除git库中untracked files(未监控)的文件

  1. # 删除 untracked files
  2. git clean -f
  3. # 连 untracked 的目录也一起删掉
  4. git clean -fd
  5. # 连 gitignore 的untrack 文件/目录也一起删掉 (慎用,一般这个是用来删掉编译出来的 .o之类的文件用的)
  6. git clean -xfd

删除远程分支

  1. # 删除远程分支
  2. git push origin --delete Chapater6 可以删除远程分支Chapater6
  3. git branch -d Chapater6 # 删除本地Chapater6分支
  4. 同步远程分支
  5. git fetch origin --prune --tags