git 基本使用

git工作流程示意图

这里写图片描述

基本概念

3个步骤

这里写图片描述
正常情况下,我们的工作流程就是3个步骤,对应上图中的3个箭头线:

// 把所有文件放入暂存区
git add .
// 把所有文件从暂存区提交进本地仓库
git commit -m "comment"
// 把所有文件从本地仓库推送进远程仓库
git push
4个区
1.工作区(Working Area)
2.暂存区(Stage)
3.本地仓库(Local Repository)
4.远程仓库(Remote Repository)
5种状态

以上4个区,进入每一个区成功之后会产生一个状态,再加上最初始的一个状态,一共是5种状态。以下我们把这5种状态分别命名为:

1.未修改(Origin)
2.已修改(Modified)
3.已暂存(Staged)
4.已提交(Committed)
5.已推送(Pushed)

配置用户信息

// 配置用户名
git config --global user.name 用户名
// 配置邮箱
git config --global user.email 邮箱

创建版本库

1.1、从远程主机克隆一个版本库

git clone https://github.com/xxx/abc.git

1.2、从远程主机克隆一个版本库并重新指定本地目录名(比如改为cdf)

git clone https://github.com/xxx/abc.git cdf

1.3、完整的创建流程(project已存在)
在Git网站上创建git项目的地址,比如最终得到一个如下的git地址:https://github.com/xxx/abc.git,然后通过git命令行,进入该project的所在根目录(如果要忽略一些文件,需要在project根目录下创建一个文件:.gitignore,里面存放要过滤的文件或文件夹,比如:/bin)

// 初始化本地仓库
git init
// 添加到缓存区
git add .
// 提交到本地仓库
git commit -m "first commit"
// 添加远程仓库地址
git remote add origin https://github.com/xxx/abc.git
// 提交到远程仓库的master分支
git push -u origin master

修改和提交

2.1、查看状态

git status

2.2、查看变更的内容
需要注意的是,git diff相关命令对于未跟踪的文件无法查看(比如新添加的文件,但是没有执行过git add),这类文件只能用git status
2.2.1、 查看和工作区的变更(未执行git add .)

git diff

2.2.2、 查看和缓存区的变更(执行git add .)

git diff --cached

2.2.3、 查看和远程分支的变更(比如master分支)

 git diff origin/master

2.2.4、 查看和某一次提交的变更(6b09161f1a4eb6b7cf4b3f1ea0c249009249002d为提交的id)

git diff 6b09161f1a4eb6b7cf4b3f1ea0c249009249002d

2.3、跟踪所有改动过的文件

git add .

2.4、跟踪指定的文件(a.java和b.java)

git add a.java b.java

2.5、删除文件

git rm a.java

2.6、停止跟踪文件但不删除文件(停止跟踪文件夹bin及其所有子文件)

git rm -r --cached bin

2.7、忽略文件(如果文件已经提交过,则先要执行2.6的指令,这里还是以忽略bin文件夹为例)

.gitignore文件中添加/bin并保存

2.8、提交所有更新的文件

git commit -m "描述信息"

查看提交日志

3.1、查看提交日志

git log

3.2、查看提交日志(一行显示)

git log --oneline

3.3、查看包含特定关键字的提交(包含abc或qq)

git log --grep=abc --grep=qq

3.4、查看远程分支(master)的更新日志并合并到本地

// 获取远程分支的master分支
git fetch origin master
// 查看远程分支更新日志
git log -p master..origin/master
// 合并远程分支的master分支到本地
git merge --no-ff origin/master

3.5、查看某次提交(abc)的内容

git show abc

分支与标签

4.1、显示所有分支

git branch -a

4.2、切换到指定的分支或标签(develop分支)

git checkout develop

4.3、回滚到某个历史版本(9b7b412)并创建分支(v1.0.9)

git checkout -b v1.0.9 9b7b412

4.4、创建新分支(develop)

git branch develop

4.5、创建本地新分支并提交到远程分支(develop分支)

// 创建develop分支
git checkout -b develop
// 提交到远程develop分支
git push origin develop

4.6、创建远程分支到本地(dev)

git checkout -b dev origin/dev

4.7、关联本地分支dev到远程的origin/dev分支

git branch --set-upstream dev origin/dev

4.8、删除本地分支(dev分支)

git branch -d dev

4.9、删除远程分支(dev分支)

git push origin --delete dev

4.10、列出本地所有的标签

git tag

4.11、基于最新的提交创建本地标签(v1.0)

git tag v1.0

4.12、删除本地标签(v1.0)

git tag -d v1.0

4.13、推送本地所有标签到远程

git push origin --tags

4.14、推送本地标签(v1.0)到远程

git push origin v1.0

4.15、删除远程标签(v1.0)

git push origin :refs/tags/v1.0

合并

5.1、合并指定分支到当前分支(develop分支)

git merge --no-ff develop

5.2、把develop分支的内容合并到master分支,同时master不复制develop的提交记录,自己创建一个新的提交记录(version 1.0)

// 先切换到develop分支
git checkout master
// 合并develop分支,但是不复制develop的提交记录
git merge --squash --no-commit develop
// 提交到更新到本地
git commit -m "version 1.0"
// 提交到远程仓库
git push

撤消

6.1、撤销已添加到缓存的变更(但是工作区的还存在变更)

git reset

6.2、撤消本地修复,从远程库获取文件覆盖本地

// 撤销本地修复,并且工作去的变更也会清除
git reset --hard
// 从远程库获取文件覆盖本地
git pull

6.3、回退到指定的提交版本(abcdefg)

git reset --hard abcdefg

6.4、撤消指定的提交(abcdefg)

git revert abcdefg

远程操作

7.1、查看远程主机的网址

git remote

7.2、为远程主机改名(将origin改为myOrigin)

 git remote rename origin myOrigin

7.3、从远程库获取文件到本地但不进行合并(master分支)

git fetch origin master

7.4、从远程库获取文件并快速合并(master分支)

git pull origin master

7.5、提交文件到远程并快速合并(master分支)

git push origin master

7.6、清理远程分支,把本地不存在的远程分支删除

git remote prune origin

其它

8.1、保存当前的工作现场

// 执行一个git stash,stash队列中就会增加一个现场
git stash

8.2、查看stash队列

git stash list

8.3、恢复的某个工作现场,恢复的现场会被清除(可通过git stash list查看有几个现场)

// num就是要恢复的工作现场的编号
git stash pop stash@{num}

8.4、恢复stash队列中的stash@{0}即最上层的那个工作现场

git stash pop

8.5、恢复的某个工作现场,但不清除该现场

git stash apply stash@{num}

8.6、清空stash队列

git stash clear

参考

1.Git 的 4 个阶段的撤销更改
2.Git Stash方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值