专栏首页mojocnGit常见的命令集合

Git常见的命令集合

Git常见的命令集合

  1. MojoTech
  2. Git
  3. Git常见的命令集合

4 Eric Zhou Git 2019-08-02

库管理

克隆库

git clone https://github.com/golang/golang-src.git
git clone --depth=1 https://github.com/golang/golang-src.git # 只抓取最近的一次 commit

创建已有新的repo

echo "# ss" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin git@github.com:mojocn/ss.git
git push -u origin master

推送已有的repo

git remote add origin git@github.com:mojocn/ss.git
git push -u origin master

历史管理

查看历史

git log --pretty=oneline filename # 一行显示
git show xxxx # 查看某次修改

标签功能

git tag # 显示所有标签
git tag -l 'v1.4.2.*' # 显示 1.4.2 开头标签
git tag v1.3 # 简单打标签   
git tag -a v1.2 9fceb02 # 后期加注标签
git tag -a v1.4 -m 'my version 1.4' # 增加标签并注释, -a 为 annotated 缩写
git show v1.4 # 看某一标签详情
git push origin v1.5 # 分享某个标签
git push origin --tags # 分享所有标签

回滚操作

git reset 9fceb02 # 保留修改
git reset 9fceb02 --hard # 删除之后的修改

取消文件的修改

git checkout -- a.golang #  取消单个文件
git checkout -- # 取消所有文件的修改

删除文件

git rm a.golang  # 直接删除文件
git rm --cached a.golang # 删除文件暂存状态

移动文件

git mv a.golang ./test/a.golang

查看文件修改

git diff          # 查看未暂存的文件更新 
git diff --cached # 查看已暂存文件的更新 

暂存和恢复当前staging

git stash # 暂存当前分支的修改
git stash apply # 恢复最近一次暂存
git stash list # 查看暂存内容
git stash apply stash@{2} # 指定恢复某次暂存内容
git stash drop stash@{0} # 删除某次暂存内容

修改 commit 历史纪录

git rebase -i 0580eab8

分支管理

创建分支

git branch develop # 只创建分支
git checkout -b master develop # 创建并切换到 develop 分支

合并分支

git checkout master # 切换到 master 分支
git merge --no-ff develop # 把 develop 合并到 master 分支,no-ff 选项的作用是保留原分支记录
git rebase develop # rebase 当前分支到 develop
git branch -d develop # 删除 develop 分支

Stash 当前分支中未提交的修改移动到其他分支:

git stash
git checkout branch2
git stash pop

将 stashed changes 应用到当前分支: git stash apply 删除最新一次的 stashed changes: git stash drop

克隆远程分支

git branch -r # 显示所有分支,包含远程分支
git checkout origin/android

修复develop上的合并错误

  1. 将merge前的commit创建一个分之,保留merge后代码
  2. 将develop reset --force到merge前,然后push --force
  3. 在分支中rebase develop
  4. 将分支push到服务器上重新merge

强制更新到远程分支最新版本

git reset --hard origin/master
git submodule update --remote -f

Submodule使用

克隆带submodule的库

git clone --recursive https://github.com/chaconinc/MainProject

clone主库后再去clone submodule

git clone https://github.com/chaconinc/MainProject
git submodule init
git submodule update

Git设置

Git的全局设置在~/.gitconfig中,单独设置在project/.git/config下.

忽略设置全局在~/.gitignore_global中,单独设置在project/.gitignore下.

设置 commit 的用户和邮箱

git config user.name "xx"
git config user.email "xx@xx.com"

或者直接修改config文件

[user]
    name = xxx
    email = xxx@xxx.com

查看设置项

git config --list

设置git终端颜色

git config --global color.diff auto
git config --global color.status auto
git config --global color.branch auto

更新与发布

列出当前配置的远程端:

$ git remote -v

显示远程端的信息:

$ git remote show <remote>

添加新的远程端:

$ git remote add <remote> <url>

下载远程端版本,但不合并到HEAD中:

$ git fetch <remote>

下载远程端版本,并自动与HEAD版本合并:

$ git remote pull <remote> <url>

将远程端版本合并到本地版本中:

$ git pull origin master

以rebase方式将远端分支与本地合并:

git pull --rebase <remote> <branch>

将本地版本发布到远程端:

$ git push remote <remote> <branch>

删除远程端分支:

$ git push <remote> :<branch> (since Git v1.5.0)
or
git push <remote> --delete <branch> (since Git v1.7.0)

发布标签:

$ git push --tags

合并与重置(Rebase)

将分支合并到当前HEAD中:

$ git merge <branch>

将当前HEAD版本重置到分支中:

请勿重置已发布的提交!

$ git rebase <branch>

退出重置:

$ git rebase --abort

解决冲突后继续重置:

$ git rebase --continue

使用配置好的merge tool 解决冲突:

$ git mergetool

在编辑器中手动解决冲突后,标记文件为已解决冲突

$ git add <resolved-file>
$ git rm <resolved-file>

合并提交:

$ git rebase -i <commit-just-before-first>

把上面的内容替换为下面的内容:

原内容:

pick <commit_id>
pick <commit_id2>
pick <commit_id3>

替换为:

pick <commit_id>
squash <commit_id2>
squash <commit_id3>

撤销

放弃工作目录下的所有修改:

$ git reset --hard HEAD

移除缓存区的所有文件(i.e. 撤销上次git add):

$ git reset HEAD

放弃某个文件的所有本地修改:

$ git checkout HEAD <file>

重置一个提交(通过创建一个截然不同的新提交)

$ git revert <commit>

将HEAD重置到指定的版本,并抛弃该版本之后的所有修改:

$ git reset --hard <commit>

用远端分支强制覆盖本地分支:

git reset --hard <remote/branch> e.g., upstream/master, origin/my-feature

将HEAD重置到上一次提交的版本,并将之后的修改标记为未添加到缓存区的修改:

$ git reset <commit>

将HEAD重置到上一次提交的版本,并保留未提交的本地修改:

$ git reset --keep <commit>

删除添加.gitignore文件前错误提交的文件:

$ git rm -r --cached .
$ git add .
$ git commit -m "remove xyz file"

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Gogs代码自动部署

    mojocn
  • Go进阶03:怎么使用viper管理配置

    viper 是以个完善的go语言配置包.开发它的目的是来处理各种格式的配置文件信息.

    mojocn
  • 网络协议:HTTP2详解

    要想深刻的了解 HTTP/2,那么我们必须对 HTTP/1.x 本身以及它的缺点有一定程度的熟悉,而这一节,我们对 HTTP/1.x 的请求 形式以及其缺点进行...

    mojocn
  • 搭建 GIT 服务器

    下载安装 git Git 是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 此实验以 CentOS 7.2 x64 的系统为环境,搭...

    老七Linux
  • Git 使用记录 - 基础

    命令行直接输入git提示应用没有安装的情况下 安装git,[图形化 gitk, 差异比较工具 meld]

    orientlu
  • Git 常用命令清单,掌握这些,轻松驾驭版本管理

    注意: 1、HEAD 指向的版本是当前版本,^ 表示上一个版本,~N 表示上N个版本,<commit id>可简写 2、git log 可以查看<commit ...

    前端博客 : alili.tech
  • linux上搭建私有Git服务器的详细教程

    远程仓库实际上和本地仓库没啥不同,纯粹为了7×24小时开机并交换大家的修改。GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司...

    砸漏
  • 上传本地代码及更新代码到GitHub教程

    转自 :https://www.cnblogs.com/zlxbky/p/7727895.html

    用户1518699
  • 源码管理工具之git的使用

    git是目前世界上被最广泛使用的现代软件版本管理系统。git本身亦是一个成熟并处于活跃开发状态的开源项目,它最初是由Linux操作系统内核的创造者Linus T...

    s_在路上
  • Git全方位指南,即用即查就可

    Lemon黄

扫码关注云+社区

领取腾讯云代金券