GIT版本控制器常用命令!

GIT版本控制器常用命令!

git 使用和常用命令

git是一个强大的分布式代码版本管理工具,一般来说只要日常使用也就是 add commit checkout fetch/clone pull/push 这几个命令,但要想把git的真正功能利用起来要记住60-100个命令。

local

git分为本地操作和远程仓库操作

git 使用和常用命令

git是一个强大的分布式代码版本管理工具,一般来说只要日常使用也就是 add commit checkout fetch/clone pull/push 这几个命令,但要想把git的真正功能利用起来要记住60-100个命令。
local

git分为本地操作和远程仓库操作
1.初始化

  # 显示当前的git配置
  git config --list
  # 定义用户名
  git config --global user.name 'luowei'
  # 用户邮箱
  git config --global user.email '335301022@qq.com'
  # 生产ssh key,在.ssh/目录下把生成的id_rsa.pub 公钥 复制到github或者gitlab
  ssh-keygen -t rsa -C '335301022@qq.com'
  # 初始化版本仓库 空的新仓库,在项目根目录下生成一个.git文件夹
  git init  [project name]
- 设置忽略文件:在项目根目录下创建一个名为`.gitignore`的文本文件,把需要忽略的文件类型加入该文件里。设置只有自己需要忽略的文件:修改`.git/info/exclude`文件,添加文件类型,也可正则表达式。
添加文件到版本库:

# 添加指定名称的单个文件
git add some file
# 添加所有txt类型的文件
git add *.txt
# 添加所有新增的文件,包括子目录,但不包括空目录
git add .
# 添加每一个变化前,都会要求确认
# 对于同一个文件的多处修改,可以实现分次提交
git add -p
# 删除工作区文件,并且将这次删除放入暂存区
git rm [file1] [file2] ...
# 停止追踪指定文件,但该文件会保存在工作区
git rm --cached [file] ...
# 文件改名,并将改名操作放进暂存区
git mv [file] [file renamed]
git commit -m 'commit here' # 把添加进暂存区里的文件提交到版本库 -m 后跟提交的注释信息
2.日常操作

提交:

  # 提交所有修改
  git commit -m 'message' -a
  # 提交指定的单个文件
  git commit -m 'message' readme.txt
  # 提交暂存区单个文件到仓库
  git commit [file1] [file2] ...
  # 提交工作区自上次commit之后的变化,直接提交到仓库区
  git commit -a
  # 使用一次新的commit,替代上一次提交
  # 如果代码没有任何新变化,则用来改写上一次commit的提交信息
  git commit --amend -m [message]
  # 重做上一次commit,并包括指定文件的新变化
  git commit --amend [file1] [file2] ...
分支:

# 列出所有的本地分支
git branch
# 列出所有的远程分支
git branch -r
# 同时列出本地和远程分支
git branch -a
# 建立一个新分支,但保留在当前分支上
git branch [new branch name]
# 建立一个新分支并切换到新分支
git checkout -b [new branch name]
# 切换到指定分支,并显示新工作区代码
git checkout [branch name]
# 切换到上一个分支
git checkout -
# 新建一个分支,指向指定commit
git branch [new branch name] [commit]
# 新建一个分支,与指定的远程分支建立追踪关系
git branch --track [new branch name] [remote-branch]
# 由标签创建分支
git checkout [new branch name] [tag name]
git checkout -b [new branch name] [tag name]
# 合并指定分支到当前分支
# 合并分支并提交到仓库,如果发生了冲突,就不会自动提交
# 如果冲突太多又不想立即解决,可以直接使用git checkout head . 撤销
git merge [branch name]
# 选择一个commit合并进当前分支
git merge [branch name]
# 压合合并后,直接提交
git merge --squash [branch name]
# 压合合并但不提交
# 当两个人合作开发一个新功能时,需要在一个分支上提交多次,开发完成之后再压合一次提交
git merge --squash --no-commit [branch name]
# 重命名分支
git branch -m [branch name] [new branch name] //不会覆盖已存在的同名分支
git branch -M [branch name] [new branch name] //会覆盖已存在的同名分支
# 删除分支
git branch -d [branch name] //如果当前要删除的分支暂存区有内容,无法删除
git branch -D [branch name] //强制删除指定分支
# 创建一个全新的分支,不包含原分支的提交历史
git checkout --orphan gh-pages
冲突解决:

# 冲突很少时,直接编辑有冲突的文件然后提交
git checkout --theirs . // 直接使用远程代码
git checkout --ours . // 直接使用本地的代码
# 冲突比较复杂时
git merge tool
1. 会生成 .backup, .base, .local, .remote 4个文件
2. 然后自动调用冲突解决工具,如果安装了TortosieSVN就会自动调用TortosieMerge
3. 解决之后手动删除 .orig文件(冲突解决之前的备份文件)
4. 提交
标签:

# 标签列表
git tag
# 创建一个当前分支最近一次提交的标签,注意标签无法重命名
git tag [tag name]
# 指定分支创建标签
git tag [tag name] [banrch name]
# 指定commit创建标签
git tag [tag name] [commit]
# 删除本地标签
git tag -d [tag name]
# 删除远程标签
git push origin :refs/tags/[tag name]
# 查看标签信息
git show [tag name]
# 提交指定标签
git push [remote] [tag name]
# 提交所有标签
git push [remote] --tags
查看信息:

# 显示所有变更文件
git status
# 显示当前分支的版本历史
git log
# 显示commit历史,以及每次commit发生变更的文件
git log --stat
# 搜索提交历史,根据关键词
git log -s [keyword]
# 显示某个commit之后的所有变动,每个commit占一行
git log [tag name] HEAD --pretty=format:%s
# 显示某个commit之后的所有变动,其提交说明必须符合搜索条件
git log [tag name] HEAD --grep feature
# 显示某个文件的历史版本,包括文件改名
git log --follow [file name]
git whatchanged [file name]
# 显示指定文件相关的每一次diff
git log -p [file name]
# 显示过去5次提交
git log -5 --pretty --online
# 显示所有提交过的用户,按提交次数排序
git shortlog -sn
# 显示指定文件是什么人在什么时间修改过
git blame [file name]
# 显示暂存区和工作区的差异
git diff
# 显示暂存区和上一个commit的区别
git diff --cached [fiel name]
# 显示两次提交之间的区别
git diff [first-commit] [second-commit]
# 显示你今天写了多少行代码
git diff --shortstat "@{0 day ago}"
# 显示某次提交的元数据和内容变化
git show [commit]
# 显示某次提交发生变化的文件
git show --name-only [commit]
# 显示某次提交时,某个文件的内容
git show [commit]:[file name]
# 显示当前分支的最近几次提交
git reflog
撤销

# 恢复暂存区的指定文件到工作区
git checkout [file name]
# 恢复某个commit的指定文件到暂存区和工作区
git checkout [commit] [file name]
# 恢复暂存区的所有文件到工作区
git checkout .
# 重置暂存区的指定文件,与上一次commit保持一致,但工作区不变。
git reset [file name]
# 重置暂存区与工作区,与上一次commit保持一致
git reset --hard
# 重置当前分支的指针为指定commit,同时重置暂存区,但工作区不变
git reset [commit]
# 重置当前分支的HEAD为指定commit,同时重置暂存区和工作区,与指定commit一致
git reset --hard [commit]
# 重置当前HEAD为指定commit,但保持暂存区和工作区不变
git reset --keep [commit]
# 新建一个commit用来撤销指定commit,并应用到当前分支
git revert [commit]
# 暂停当前分支,不提交任何代码到暂存区和工作区前提下能切换分支
git stash
git stash pop //恢复暂停时的状态,并删除暂停保存的内容
远程同步

# 下载远程仓库的所有变动
git fetch [remote]
# 显示所有远程仓库
git remote -v
# 显示某个远程仓库的信息
git remote show [remote]
# 增加一个新的远程仓库,并命名
git remote add [short name] [url]
# 取回远程仓库变化,并与本地分支合并
git pull [remote] [branch name]
# 上传本地指定分支到远程仓库指定分支
git push [remote] [local branch name] : [origin branch name]
# 强行推送本地分支到远程仓库 即使有冲突
git push [remote] --force
# 推送所有本地分支到远程仓库
git push [remote] --all
点赞
  1. 评论人说道:

    一针见血的发了一条品论

  2. skfiy说道:

    站不错呢

    1. 晔璇说道:

      .谢谢

    2. 小七说道:

      还可以吧

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据