一. 配置
在下载安装完git之后要正常的使用配置是必不可少的。
配置根据git使用的范围分为三种级别:
- system 系统级别
- global 用户全局
- local 单独的项目
配置用户名和邮件地址
git config --global user.name "lixiaoming" //用户名
git config --global user.email "[email protected]" //邮箱
git config --global core.editor vim //编辑器
如果想查看所有配置可用下面命令:
git config -l //列举所有配置
从服务器更行代码的时候发现每次git pull 都要输入用户名和密码, 这是很烦人的,怎么避免每次都输入呢? 配置好git后,打开 .gitconfig 的文件,在最后加入需在下面两行设置:
[credential]
helper = store
另一种方法是:
打开.netrc, 如果没有新建一个 ~/.netrc 文件, 将 git 服务器, 用户名以及密码记录在这个文件, 如下所示:
machine your-git-server
login your-username
password your-password
普通用户的 git-server 填 github.com 就可以了.
如果有多个 server 就重复上面的三行, 分别输入对应的服务器、 用户名和密码即可.
二. 使用方法
先附上一张图
git大致使用流程一般分为三步:
1. 创建远程库
//clone的时候,将其创建成远程创库
git clone --bare
//远程主分支的一个子分支
git clone -b
// 查看远程服务器地址和仓库名称
git remote -v
//下载一个项目和它的整个代码历史
git clone
//在当前目录新建一个Git代码库
git init
//新建一个目录,将其初始化为Git代码库
git init
2. 从远程拉取内容
git fetch //下载远程仓库的所有变动
git merge //合并
git pull //效果类似于先git fetch,然后git merge
//取回远程仓库的变化,并与本地分支合并
git pull
//显示所有远程仓库
git remote -v
//显示某个远程仓库的信息
git remote show
//增加一个新的远程仓库,并命名
git remote add
3. 将改动添加到暂存区(工作区的修改提交到暂存区)
//将具体改动文件添加到暂存区
git add
//删除工作区文件,并且将这次删除放入暂存区
git rm ...
//添加指定目录到暂存区,包括子目录
git add
//将当前目录的改动添加到暂存区
git add .
//停止追踪指定文件,但该文件会保留在工作区
git rm --cached
4. 将暂存区的内容提交到版本库
//提交暂存区的单个指定文件到仓库区(会弹出添加提交信息页面)
git commit
//提交暂存区的多个指定文件到仓库区,直接在后面添加提交信息
git commit ... -m "message"
//提交暂存所有文件区到仓库区
git commit -m "message"
//提交暂存区该目录下所有的文件到仓库区
git commit .
//修改最后一次提交的信息
git commit -amend
//重做上一次commit,并包括指定文件的新变化
git commit --amend ...
//使用一次新的commit,替代上一次提交
//如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend -m [message]
//提交工作区自上次commit之后的变化,直接到仓库区
git commit -a
//提交时显示所有diff信息
git commit -v
5. 上传修改到远程分支
就是将自己的改动上床到服务器
//push所有分支
git push
git push
//将本地主分支推到远程主分支
git push origin master
//上传本地指定分支到远程仓库
git push
//强行推送当前分支到远程仓库,即使有冲突
git push --force
//推送所有分支到远程仓库
git push --all
在实际开发过程中只通过以上三步是不够的,下面介绍一些其他经常用到的命令。
三. 常用命令
1. 抛弃工作区修改
(用暂存区的内容状态去覆盖工作区,所以这样做就可以抛弃工作区修改
git checkout
git checkout .
git reset //从暂存区恢复到工作区
git reset . //从暂存区恢复到工作区
git reset //恢复到指定的提交版本,该id之后的版本提交都恢复到工作区
git reset --hard //恢复到指定的提交版本,该id之后的版本提交全部会被抛弃,将不出现在工作区
2. 恢复某次提交
git revert
git revert HEAD
revert与reset的区别:git reset 是把HEAD向后移动,而git revert是HEAD向前移动。
3. 文件比较差异
git diff
git diff //比较工作区与暂存区文件的差异
git diff --cached //比较暂存区和版本库差异
git diff //比较两次提交之间的差异
git diff //在两个分支之间比较
4. 创建,切换和删除分支
(1) . 查看分支
git branch //列出所有本地分支
git branch -r //列出所有远程分支
git branch -a //列出所有本地分支和远程分支
(2) .创建分支
git branch //新建一个分支
git branch --merged //查看已经被合并到当前分支的分支
git branch --no-merged //查看未被合并到当前分支的分支
//新建一个分支,并切换到该分支
git checkout -b
//新建一个分支,指向指定commit
git branch
//新建一个分支,与指定的远程分支建立追踪关系
git branch --track
//建立追踪关系,在现有分支与指定的远程分支之间
git branch --set-upstream
//合并指定分支到当前分支
git merge
//选择一个commit,合并进当前分支
git cherry-pick
(3).切换分支
//切换到指定分支,并更新工作区
git checkout
//创建分支并切换
git checkout -b
(4). 删除分支
//删除分支
git branch -d
//强制删除分支
git branch -D
//删除远程分支
git push origin --delete
git branch -dr
5. 删除文件的几种方法
rm //直接在工作区删除文件对暂存区、版本库没有任何的改变,文件依旧存在
git rm //删除会影响到工作区以及暂存区,不仅在工作区将文件删除,同时将该删除操作提交到暂存区
6. 撤销修改
//恢复暂存区的指定文件到工作区
git checkout
//恢复某个commit的指定文件到工作区
git checkout
//恢复上一个commit的所有文件到工作区
git checkout .
//重置暂存区的指定文件,与上一次commit保持一致,但工作区不变
git reset [file]
//重置暂存区与工作区,与上一次commit保持一致
git reset --hard
//重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
git reset
//重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
git reset --hard
//重置当前HEAD为指定commit,但保持暂存区和工作区不变
git reset --keep
//新建一个commit,用来撤销指定commit
//后者的所有变化都将被前者抵消,并且应用到当前分支
$ git revert
7. 查看当前信息
//显示有变更的文件
git status
//显示当前分支的版本历史
git log
//显示commit历史,以及每次commit发生变更的文件
git log --stat
//显示某个文件的版本历史,包括文件改名
git log --follow
git whatchanged
//显示指定文件相关的每一次diff
$ git log -p
//显示指定文件是什么人在什么时间修改过
git blame
//显示暂存区和工作区的差异
git diff
//显示暂存区和上一个commit的差异
git diff --cached
//显示工作区与当前分支最新commit之间的差异
git diff HEAD
//显示两次提交之间的差异
git diff ...
//显示某次提交的元数据和内容变化
git show
//显示某次提交发生变化的文件
git show --name-only
//显示某次提交时,某个文件的内容
git show :
//显示当前分支的最近几次提交
$ git reflog