文章目录
git简介
Linus->linux->no svn->bitKeeper->git
集中式版本控制工具SVN与分布式版本控制工具GIT的差异:
git命令:
1, git init
(初始化git,在文件夹里面会生成隐藏文件.git,初始化本地仓库)
2,远程仓库github
- 1,注册github账号
- 2,在github创建上创建一个项目(仓库)
- 3,秘钥的配置,创建SSH Key。
在用户主目录下,看看有没有.ssh目录,
如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。
如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"
,你需要把邮件地址换成你自己的邮件地址,然后一路回车,使用默认值即可,无需设置密码。
在C:\Users\Administrator\.ssh
-
4,本地环境的配置
5,本地分支与远程分支建立联系 -
git remote add origin https://github.com/StickInsect2/blog.git
, 添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。 -
git push -u origin master
: 把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。 -
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。
-
git pull origin master
: 就是把远程仓库的master分支的资源pull到的本地的目录上
3, git日常操作流
4,本地仓库和远程仓库的关联
- 查看远程仓库:
git remote -v
- 添加源仓库地址为远程仓库:
git remote add <name> <remote>
- 远程仓库重命名:
git remote rename old new
5,基础工作流
- 克隆仓库:
git clone <respository>
- 提交内容到远程仓库:
gti push <remote> <branch>
- 查看当前文件 的状态:
git status
- 提交到缓存区:
git add <pathspec>
、git add .
就是把工作目录上的所有文件提交到缓存区 - 提交到本地仓库:
git commit -m "注释"
6,花式撤销
- 撤销工作区的修改:
git checkout--<file>
,(注意:这里的--
要加上,如果不加就是下面 的切换分支的概念)
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
- 缓存区文件撤销(不覆盖工作区):
git reset HEAD <file>
用命令git reset HEAD 可以把暂存区的修改撤销掉(unstage),重新放回工作区。
git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。
- 版本回退:
git reset --(hard | mixed | soft) <HEAD~(num)>|<commit ID>
hard
就是回退到上一个版本(回退全部,包括HEAD,index,working tree)mixed
就是回退到add到缓存区之前(回退部分,包括HEAD,index)soft
就是回退到commit到本地仓库之前(只回退HEAD)<HEAD~(num)>
表示回退的次数git reset --head HEAD~1
表示一次撤销,<commit ID>
表示版本号
首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交1094adb…(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。
- HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
- 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
- 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
7,状态查询
- 查看状态:
git status
- 查看历史操作记录:
git reflog
- 查看日志:
git log <fileName>
,如果嫌输出信息太多,看得眼花缭乱的,可以试试加上–pretty=oneline参数:git log --pretty=oneline
8,差异比较
- 比较工作区与缓存区:
git diff
- 比较工作区与本地版本库中最近一次commit的结果
git diff HEAD
- 比较缓存区与本地版本库中最近一次commit的结果
git diff cached
- 比较两个commit之间的差异
git diff <commit-id> <commit-id>
9,管理分支
- 查看分支:
git branch
- 创建新分支:
git branch <name>
- 切换分支:
git checkout <name>
- 创建并切换分支:
git checkout -b <name>
- 删除本地分支:
git branch -d <name>
- 删除远程分支:
git push -d <origin> <branch>
10,分支合并&处理冲突
- 无冲突合并:
git merge <branch>
lcode
操作 - 有冲突合并:
git merge <branch>
解决冲突
11,文件暂存
- 添加改动到stash:
git stash save -a "message"
- 查看stash列表
git stash list
- 删除暂存:
git stash drop <stash@{id}>
- 恢复改动:
git stash pop <stash@{id}>
- 删除全部暂存:
git stash clear
文件暂存(Bug分支)详情