Git常用命令

git 常用命令

git 命令备忘录(文末有彩蛋!!!)

git 设置

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

初始化仓库

1
$ git init

用 git –bare init 更好?

把文件添加到仓库

1
$ git add readme.txt

把文件提交到仓库

1
$ git commit -m "wrote a readme file"

查看状态

1
$ git status

查看 difference

1
$ git diff readme.txt

查看历史记录(简化)

1
$ git log --pretty=oneline

回退版本

1
2
3
4
$ git reset --hard HEAD^       //上个版本
$ git reset --hard HEAD^^ //上上个版本
$ git reset --hard HEAD~100 //上100个版本
$ git reset --hard 1094a //版本号为 1094axxxxxxx 的版本(前几位即可)

查看命令历史

1
$ git reflog //找不到版本号的时候

查看工作区和版本库里面最新版本的区别

1
$ git diff HEAD -## readme.txt

丢弃工作区的修改

1
$ git checkout -- readme.txt       //把 readme.txt 文件在工作区的修改全部撤销
  • 一种是 readme.txt 自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
  • 一种是 readme.txt 已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
  • 总之,就是让这个文件回到最近一次 git commit 或 git add 时的状态。

可以把暂存区的修改撤销掉(unstage),重新放回工作区

1
$ git reset HEAD readme.txt

在文件管理器中删除文件

1
$ rm test.txt

从版本库中删除该文件

1
$ git rm test.txt

创建 SSH key

1
$ ssh-keygen -t rsa -C "youremail@example.com"

如果一切顺利的话,可以在用户主目录里找到.ssh 目录,里面有 id_rsa 和 id_rsa.pub 两个文件这两个就是 SSH Key 的秘钥对,id_rsa 是私钥,不能泄露出去,id_rsa.pub 是公钥,可以放心地告诉任何人。

关联远程库

1
$ git remote add origin git@xxxx.git

如果有两个以上的远程库就不要用 origin 了,比如用 github 和 gitee

把本地库的所有内容推送到远程库上

1
$ git push -u origin master

我们第一次推送 master 分支时,加上了-u 参数 Git 会把本地的 master 分支和远程的 master 分支关联起来,在以后的推送或者拉取时就可以简化命令。

克隆远程库

1
$ git clone git@xxxx.git

创建分支

1
2
3
$ git branch dev          //创建分支
$ git checkout dev //切换分支
$ git checkout -b dev //创建并切换分支

查看当前分支

1
$ git branch

合并指定分支到当前分支(master)

1
$ git merge dev

用领先的分支去合并落后的分支,是不可行的

删除 dev 分支

1
$ git branch -d dev

看分支合并图(–graph)

1
$ git log --graph --pretty=oneline --abbrev-commit

禁用 Fast forward

(fast forward 指的是直接把 master 指向 dev 的当前提交,删除分支后,会丢掉分支信息)

1
$ git merge --no-ff -m "merge with no-ff" dev

强制禁用 Fast forward 模式,Git 就会在 merge 时生成一个新的 commit 这样,从分支历史上就可以看出分支信息

工作现场

1
2
3
4
5
$ git stash          //"储存"工作现场
$ git stash list //查看工作现场
$ git stash apply //恢复后,stash内容并不删除,你需要用git stash drop来删除
$ git stash pop //恢复的同时把 stash 内容也删了
$ git stash apply stash@{0} //指定

强行删除(用-D)dev

1
$ git branch -D dev

丢弃一个没有被合并过的分支,要用-D

显示远程库详细的信息

1
$ git remote -v

把远程库的 dev 拷贝到本地的 dev

1
$ git checkout -b dev origin/dev

如果 git pull 提示 no tracking information,说明没有创建链接

1
$ git branch --set-upstream-to <branch-name> origin/<branch-name>

把分叉的提交历史“整理”成一条直线,缺点是本地的分叉提交已经被修改过了

1
$ git rebase

切换到分支上,打一个新标签

1
2
3
4
5
$ git tag v1.0
$ git tag v0.9 f52c633 //对 commit id 是 f52c633 打标签
$ git show v0.9 //查看标签信息
$ git tag -a v0.1 -m "version 0.1 released" 1094adb //用-a 指定标签名,-m 指定说明文字
$ git tag //可以看到所有标签

操作标签

1
$ git tag -d v0.1 //删除

推送标签到远程

1
2
$ git push origin v1.0       //一个标签
$ git push origin --tags //一次性推送全部尚未推送到远程的本地标签

删除远程标签

1
2
$ git tag -d v0.9               //先从本地删除
$ git push origin :refs/tags/v0.9 //远程删除

让 Git 显示颜色

1
$ git config --global color.ui true

文件被.gitignore 忽略

1
$ git add -f App.class      //强制添加

彩蛋!(试试就知道啦)

1
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2018-2020 Jee
  • Visitors: | Views:

如果您觉得此文章帮助到了您,请作者喝杯咖啡吧~

支付宝
微信