git常用命令

  目录

工作中常用的git命令小总结

git常用命令
git在我们工作中使用的很多,还有想github这样牛逼的代码托管网站,所以,git这个版本管理工具越来越多的被使用,其实git使用起来还是很复杂的,但是,我平时只是提交代码,所以就用到了几个命令而已,在这里做一下记录。
这里,推荐一个git学习网站,点这里

先来个简单点的

首先就是把现有的项目clone到本地。

1
git clone https://github.com/jixoba/jQuery-Seat-Charts.git

之后就是我常用的几个提交命令

1
2
3
4
5
git status  // 查看更改的文件有哪些
git add . // add后边.的话,就是把所有改动的文件添加进去
git commit -m "提交log信息" // 提交信息
git pull // 拉取远程仓库的内容
git push // 最后把更改内容推到远程仓库中

以上就是我经常用到的简单命令,如果有分支的话可能会复杂点,根据提示就可以了

说点复杂的

查看已经add到暂存区的文件

1
git ls-files

查看提交日志

1
2
3
4
5
6
7
8
git log // 显示从最近到最远的提交日志
git log --pretty=oneline // 信息简化的日志
git log --graph --pretty=oneline --abbrev-commit // 查看分支合并信息
git reflog // 记录你操作的每一次命令
git log -p // 显示文件更改的内容
git log --name-only // 查看都有哪些文件发生了改动
git log --name-status // 查看都有哪些文件发生了改动并且显示是添加,修改,还是删除操作
git log --oneline --decorate --all --graph // 以分支图的形式展示提交信息

版本回退

1
2
3
4
5
6
7
8
git reset --hard commit_id
// 具体步骤
1) git log // 查看所有的提交历史记录
2) git reset --hard commit_id // 回退到指定的commit_id
3) git push --force // 这里加上--force是强制更新远程库,如果不使用--force的话,会提示需要先拉取远程库,这样的话又回到了reset之前的commit版本了
4) // 回退之后进行了相应处理,如果再想恢复到最新代码的版本的话
git reflog // reflog命令能够查看所有的commit版本信息,log的话只能查看当前版本之前的版本
5) git reset --hard commit_id // 再使用这个命令进行版本切换

撤销修改(只能撤销工作区的修改)

1
git checkout -- readme.txt // 就是让这个文件回到最近一次git commit或git add时的状态

撤销修改(已经add到暂存区,但是没有commit到版本库)

1
2
git reset HEAD readme.txt
// 可以将暂存区文件修改恢复到工作区,再使用git checkout -- readme.txt,撤销工作区的修改

查看分支

1
2
git branch -a  //查看所有分支
git branch -r //查看远程分支

新建分支

1
2
git branch branchname // branchname就是分支名
git switch -c branchname // 新版本git命令,创建并切换

本地切换分支

1
2
git checkout branchname
git switch branchname // 新版本git命令,切换分支

删除本地分支

1
2
git branch -d branchname
git branch -D branchname // 强制删除没有被合并的分支

合并分支merge

1
2
3
// 假设当前在master分支上,想合并bugFix分支的内容
git merge bugFix
git merge --no-ff -m "merge with no-ff" bugFix // merge的时候不是Fast forward模式,此处会有一个commit提交点

cherry-pick

1
2
3
4
5
// 单个pick
git cherry-pick 4c805e2
// 场景,dev分支超master分支好多个commit,但是,master只想合并4c805e2这个commit,在master分支上使用git cherry-pick 4c805e2
// 多个pick
git cherry-pick 4c805e1 4c805e2 4c805e3 4c805e4 4c805e5

合并分支rebase

1
2
// 假设当前在master分支上,想合并bugFix分支的内容
git rebase bugFix

工作区暂时存储

1
2
3
4
5
6
7
8
9
git stash // 将当前工作区的修改存储起来,这时git status查看是clean的,之后可以新建分支或者切换分支等操作
git stash list // 查看stash暂存列表

git stash apply // 恢复
git stash drop // 删除stash列表中的记录

git stash pop // apply和drop的组合
// 如果有多个stash,可以这样使用
git stash pop stash@{0}

克隆带有分支的项目方法一

1
git clone -b template https://github.com/iview/iview-admin.git  // clone template分支

克隆带有分支的项目方法二

1
2
3
4
5
6
7
git clone https://github.com/iview/iview-admin.git // clone整个项目

git branch -a //列出所有分支名称如下: * 号表示当前分支
* dev
remotes/origin/HEAD -> origin/dev
remotes/origin/desktop
remotes/origin/template

接下来,可以在本地新建分支并与远程仓库的分支进行关联了

1
git checkout -b template origin/template   // 作用是checkout远程仓库origin的分支template,在本地起名为template分支,并切换到本地的template分支

把本地已有的分支推送到远程仓库上

1
git push origin 本地分支名:远程分支名

删除远程仓库的分支

1
git push origin --delete 远程分支名

比较两个版本区别 diff

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
git diff // 比较工作区和暂存区修改
git diff HEAD // 比较工作区和当前分支最新的提交
git diff commitId // 比较工作区和commitId版本的区别
git diff branchName // 比较工作区和branchName分支最新提交的区别

git diff --cached // 比较暂存区和当前分支最新提交区别,跟工作区比较一样,后边也可以接参数

git diff commitId1 commitId2 // 比较两个commit之间的差异
git diff HEAD^ HEAD // 还可以写HEAD来查看差异

git diff branchName1 branchName2
比较两个分支上最新提交之间的差异

以上命令后边都可以接具体的文件夹或文件名,多个中间用空格分开
git diff src1 src2
git diff file1 file2

在命令行查看信息不方便,可以把内容输出到一个文件:
git diff commitId1 commitId2 > difflog.txt

标签tag

tag是相对于分支的,每个分支都有自己tag

1
2
3
4
5
6
7
8
9
10
11
12
git tag // 查看tag列表(查看的是本地tag列表,git pull后就会把远程的tag拉下来)
git tag v1.0 // 当前分支的当前commit创建v1.o名字的tag
git tag v2.0 f52c633 // 给id是f52c633的commit加tag
git show <tagname> // 查看tag的详细信息
git checkout <tagname> // 切换到指定的tag版本

// 默认创建的tag只在本地,如果推送标签到远程库
git push origin <tagname> // 推送单个tag
git push origin --tags // 一次性推送全部尚未推送到远程的本地标签
// 删除tag
git tag -d <tagname> // 删除tag,只删除本地的tag
git push origin :refs/tags/<tagname> // 删除远程的tag

配置

1
2
3
git config --global user.name "myName" // 配置全局用户名
git config --global user.email "123456@qq.com" // 配置全局用户邮箱
git config --global color.ui true // 配置Git显示颜色

git常用命令图片

git常用命令图片