Git安装配置以及常用命令整理

nebulali 2020-06-10

学而时习之,不亦说乎

Git安装配置以及常用命令整理

Ubuntu安装

sudo apt-get install git

配置

git config --global user.name "Your Name"
git config --global user.email ""

创建仓库(初始化)

在当前指定目录下创建

git init

指定目录新建一个仓库

git init [project-name]

添加文件到缓存区

# 添加所有
git add .

# 添加指定文件
git add xx/xx/xx

提交

# 提交暂存区到仓库区
git commit -m "描述(方便日后查看回忆此次提交内容)"

# 提交时显示所有diff信息
git commit -v

# 使用一次新的commit,替代上一次提交
# 如果代码没有任何新变化,则用来改写上一次commit的提交信息
git commit --amend -m [message]

分支

  • 查看分支:git branch
  • 创建分支:git branch <name>
  • 切换分支:git checkout <name>
  • 创建+切换分支:git checkout -b <name>
  • 合并某分支到当前分支:git merge <name>
  • 删除分支:git branch -d <name>

创建分支并且换到分支

git checkout -b xxx

命令来查看所有的分支

git branch -a

切换分支

git checkout xxx

合并分支

# 把dev分支的工作成果合并到master分支上
git merge dev

删除分支

git branch -d xxx

删除远程分支

git push origin --delete xxx

查看

显示有变更的文件

git status

显示当前分支的版本历史

git log

显示commit历史,以及每次commit发生变更的文件

git log --stat

搜索提交历史,根据关键词

git log -S [keyword]

显示所有提交过的用户,按提交次数排序

git shortlog -sn

显示指定文件是什么人在什么时间修改过

git blame [file]

显示暂存区和工作区的差异

git diff

显示暂存区和上一个commit的差异

git diff --cached [file]

显示工作区与当前分支最新commit之间的差异

git diff HEAD

显示两次提交之间的差异

git diff [first-branch]...[second-branch]

显示今天你写了多少行代码

git diff --shortstat "@{0 day ago}"

显示某次提交的元数据和内容变化

git show [commit]

显示某次提交发生变化的文件

git show --name-only [commit]

显示某次提交时,某个文件的内容

git show [commit]:[filename]

显示当前分支的最近几次提交

git reflog

远程

列出已经存在的远程分支

git remote

列出详细信息,

在每一个名字后面列出其远程url,此时, -v 选项(译注:此为 –verbose 的简写,取首字母),显示对应的克隆地址。

git remote -v | --verbose

添加一个远程仓库

git remote add [shortname] [url]

git remote add dev git://github.com/CnPeng/test.git ,这样,就可以用字符串 dev 来代指该仓库地址。在使用 git remote -v 查看仓库列表的时候,就会有一个 dev 的仓库列表。

查看远程仓库信息

git remote show [shortname]

重命名远程仓库

git remote rename [old-name] [new-name]

删除远程仓库(解除与远程仓库的关系)

git remote rm [shortname]

推送

上传本地指定分支到远程仓库

git push [remote] [branch]

强行推送当前分支到远程仓库,即使有冲突

git push [remote] --force

推送所有分支到远程仓库

git push [remote] --all

拉取

git pull 取回远程主机某个分支的更新,再与本地的指定分支合并

git pull <远程主机名> <远程分支名>:<本地分支名>

# 取回origin主机的next分支,与本地的master分支合并,需要写成下面这样。
git pull origin next:master

# 如果远程分支是与当前分支合并,则冒号后面的部分可以省略。
git pull origin next

# 上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再做git merge。

git fetch origin
git merge origin/next

在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。

手动建立追踪关系。

# 指定master分支追踪origin/next分支。
git branch --set-upstream master origin/next

# 如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名
git pull origin

暂存

  • 将当前分支存起来
git stash
  • 查看我们“存储”的列表
git stash list
  • 恢复现场
# 恢复后,stash内容并不删除
git stash apply

# 删除
git stash drop

# 恢复的同时把 stash 存储列表的内容也删了
git stash pop

如果有一个分支上多个 stash,如果需要恢复指定的 stash ,可以在命令尾部加id,如 $ git stash apply {0},同样删除指定 stash 项目则执行如 $ git stash drop {1}

标签

列出标签

git tag

创建标签

  • 附注标签
git tag -a v1.4 -m "my version 1.4"
git show
  • 轻量标签
git tag v1.4-lw
  • 后期打标签
git reflog
git tag -a v1.2 9fceb02
  • 共享标签

默认情况下,git push 并不会把标签传送到远端服务器上,只有通过显式命令才能分享标签到远端仓库

# 推送一个标签
git push origin v1.5

# 推送所有本地新增的标签上去(检出标签)
git push origin --tags

跳转到指定标签

git checkout v0.0.1

删除标签

# 删除本地指定标签
git tag -d v0.0.1

# 删除远程标签
git push origin -d tag <tagname>

其他

# 中文乱码
git config --global core.quotepath false

相关参考:
https://git.apachecn.org/
https://www.liaoxuefeng.com/wiki/896043488029600

Git在线练习闯关:
https://learngitbranching.js.org/?locale=zh_CN

相关推荐