Git 常用命令说明()

安装Git

Windows

  安装包下载地址:https://git-scm.com/download/win

  • 在Select Components页,勾选Windows Explorer integration -> Simple context menu (以及其下的两个子选项)
  • 在Adjusting your PATH environment页,勾选Run Git from the Windows Command Prompt
  • 在Configuring the line ending conversions页,勾选Checkout as-is, commit as-is

Linux – Ubuntu

  Linux安装包下载地址:https://git-scm.com/download/linux

sudo apt-get install git-core git-gui git-doc gitk
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

Windows下配置Git

git config --global user.name "张三"
git config --global user.email "zhangsan@test.com"
git config --global push.default simple
git config --global gui.encoding utf-8   # git gui中的中文乱码
git config --global core.quotepath off  # git status显示的中文文件名乱码
git config --global alias.ci commit
git config --global alias.co checkout

设置SSH

ssh-keygen -t rsa -C "yousmail@test.com"
cat ~/.ssh/id_rsa.pub

gitlab备份管理

10 2 * * * /usr/bin/gitlab-rake gitlab:backup:create &> /dev/null

  同步备份到备份服务器

/usr/bin/rsync -avP --bwlimit=50000 /var/opt/gitlab/backups/ root@l-core3.ops.bj2.test.com::techgitlabbak

git概念

  • 工作区:你的一个文件夹路径便是你的工作区
  • 版本库:工作区中的.git 文件夹便是本地的版本库,中间包括了暂存区和分支内容
  • origin :远程仓库,24不关机的服务
  • HEAD:指分支当前版本的指针
    说明:
  • git add : 把修改或新增的文件添加到暂存区,支持模糊匹配、文件夹
  • git reset HEAD file : 把文件file 的修改冲暂存区撤出
  • git reset –hard commit_id : 把工作区的代码回滚到commit_id 版本上^:两次之前的那次提交\HEAD~100:100次之前的那次提交
  • git reflog : 查看commit_id
  • git commit -m ‘comment’ : 把暂存区的文件提交到分支
  • git push origin master/branch : 把分支master/branch 上修改推送到远端,第一次的时候加上 -u 参数,建立本地分支和远程分支之间的关系
  • git checkout file : 从远端上拿到file 文件覆盖工作区的file,会丢失工作区该文件的修改
  • git diff git diff HEAD — file:比较工作区和暂存区里文件的变化
  • git diff HEAD origin/dev : 比较工作区和远端服务器里文件的变化
  • git status:查看工作区的状态
  • git pull:从远端服务器同步内容到工作区,同时merge 【少用】
  • git fetch :从远端服务器同步内容到工作区
  • git merge branch:把分支branch merge到所在的分支上
  • git mv old-filename new-filename : 移动或重命名文件
  • git rm filename: 从工作目录和 Git 代码索引中删除文件
  • git show: 显示最后一次 commit 修改的内容
  • git revert an_old_commit :这个操作,即便是这个提交已经推送到了服务器,也可以。因为这个操作不是修改历史,而是增加了新的提交,新提交反转了过去的某个提交的修改。

分支操作

  • git checkout -b dev :创建dev分支,然后切换到dev分支
  • git co -b qa origin/master : 在远端master的基础上创建一个分支qa并切换到qa分支下
  • git co dev : 切换到分支dev 上

    *git branch :列出当前工作区内的分支,当前分支前面会标一个*号

  • git branch -a : 查看本地和远端的所有分支
  • git co master → git merge dev :切换到分支master 上,merge分支dev上的修改到master上
  • git branch -d dev:删除工作区的dev分支,-D : 直接删除,未合并的代码,将被丢弃!
  • git push -u origin dev : 本地分支推送到远程,首次使用的时候加上-u 参数,建立本地分支和远程分支之间的关系
  • git fetch -p 删除不存在对应远程分支的本地分支
  • git log –graph –pretty=oneline –abbrev-commit:查看分支的合并情况
  • git push origin :qa 删除远端qa 分支

    说明:

    -pretty=oneline : 显示成一行

    – graph:查看分支合并图

    –abbrev-commit : 把要显示SHA码显示成commit_id

  • -pretty=oneline : 显示成一行
  • – graph:查看分支合并图
  • –abbrev-commit : 把要显示SHA码显示成commit_id
  • git push origin br_name^{}:master 合并br_name 到master

Tag小结

  • git tag -a -m “注释” tag_name
  • git push origin tag tagname:可以推送一个本地标签;
  • git push origin –tags:可以推送全部未推送过的本地标签;
  • git tag -d tagname:可以删除一个本地标签;
  • git push origin :refs/tags/tagname:可以删除一个远程标签。

代码回滚

tag管理

用于查找最近的tag
git describe
把--abbrev设为0, 该命令查找最近的tag名,不需要后缀:
git describe --abbrev=0
获取当前分支的tag
git describe --abbrev=0 --tags
获取所有分支的tag
git describe --tags `git rev-list --tags --max-count=1`

撤销一个“已公开”的改变

修正最后一个 commit 消息

撤销“本地的”修改

重置“本地的”修改

在撤销“本地修改”之后再恢复

————————

安装Git

Windows

  安装包下载地址:https://git-scm.com/download/win

  • 在Select Components页,勾选Windows Explorer integration -> Simple context menu (以及其下的两个子选项)
  • 在Adjusting your PATH environment页,勾选Run Git from the Windows Command Prompt
  • 在Configuring the line ending conversions页,勾选Checkout as-is, commit as-is

Linux – Ubuntu

  Linux安装包下载地址:https://git-scm.com/download/linux

sudo apt-get install git-core git-gui git-doc gitk
sudo add-apt-repository ppa:git-core/ppa
sudo apt-get update
sudo apt-get install git

Windows下配置Git

git config --global user.name "张三"
git config --global user.email "zhangsan@test.com"
git config --global push.default simple
git config --global gui.encoding utf-8   # git gui中的中文乱码
git config --global core.quotepath off  # git status显示的中文文件名乱码
git config --global alias.ci commit
git config --global alias.co checkout

设置SSH

ssh-keygen -t rsa -C "yousmail@test.com"
cat ~/.ssh/id_rsa.pub

gitlab备份管理

10 2 * * * /usr/bin/gitlab-rake gitlab:backup:create &> /dev/null

  同步备份到备份服务器

/usr/bin/rsync -avP --bwlimit=50000 /var/opt/gitlab/backups/ root@l-core3.ops.bj2.test.com::techgitlabbak

git概念

  • 工作区:你的一个文件夹路径便是你的工作区
  • 版本库:工作区中的.git 文件夹便是本地的版本库,中间包括了暂存区和分支内容
  • origin :远程仓库,24不关机的服务
  • HEAD:指分支当前版本的指针
    说明:
  • git add : 把修改或新增的文件添加到暂存区,支持模糊匹配、文件夹
  • git reset HEAD file : 把文件file 的修改冲暂存区撤出
  • git reset –hard commit_id : 把工作区的代码回滚到commit_id 版本上^:两次之前的那次提交\HEAD~100:100次之前的那次提交
  • git reflog : 查看commit_id
  • git commit -m ‘comment’ : 把暂存区的文件提交到分支
  • git push origin master/branch : 把分支master/branch 上修改推送到远端,第一次的时候加上 -u 参数,建立本地分支和远程分支之间的关系
  • git checkout file : 从远端上拿到file 文件覆盖工作区的file,会丢失工作区该文件的修改
  • git diff git diff HEAD — file:比较工作区和暂存区里文件的变化
  • git diff HEAD origin/dev : 比较工作区和远端服务器里文件的变化
  • git status:查看工作区的状态
  • git pull:从远端服务器同步内容到工作区,同时merge 【少用】
  • git fetch :从远端服务器同步内容到工作区
  • git merge branch:把分支branch merge到所在的分支上
  • git mv old-filename new-filename : 移动或重命名文件
  • git rm filename: 从工作目录和 Git 代码索引中删除文件
  • git show: 显示最后一次 commit 修改的内容
  • git revert an_old_commit :这个操作,即便是这个提交已经推送到了服务器,也可以。因为这个操作不是修改历史,而是增加了新的提交,新提交反转了过去的某个提交的修改。

分支操作

  • git checkout -b dev :创建dev分支,然后切换到dev分支
  • git co -b qa origin/master : 在远端master的基础上创建一个分支qa并切换到qa分支下
  • git co dev : 切换到分支dev 上

    *git branch :列出当前工作区内的分支,当前分支前面会标一个*号

  • git branch -a : 查看本地和远端的所有分支
  • git co master → git merge dev :切换到分支master 上,merge分支dev上的修改到master上
  • git branch -d dev:删除工作区的dev分支,-D : 直接删除,未合并的代码,将被丢弃!
  • git push -u origin dev : 本地分支推送到远程,首次使用的时候加上-u 参数,建立本地分支和远程分支之间的关系
  • git fetch -p 删除不存在对应远程分支的本地分支
  • git log –graph –pretty=oneline –abbrev-commit:查看分支的合并情况
  • git push origin :qa 删除远端qa 分支

    说明:

    -pretty=oneline : 显示成一行

    – graph:查看分支合并图

    –abbrev-commit : 把要显示SHA码显示成commit_id

  • -pretty=oneline : 显示成一行
  • – graph:查看分支合并图
  • –abbrev-commit : 把要显示SHA码显示成commit_id
  • git push origin br_name^{}:master 合并br_name 到master

Tag小结

  • git tag -a -m “注释” tag_name
  • git push origin tag tagname:可以推送一个本地标签;
  • git push origin –tags:可以推送全部未推送过的本地标签;
  • git tag -d tagname:可以删除一个本地标签;
  • git push origin :refs/tags/tagname:可以删除一个远程标签。

代码回滚

tag管理

用于查找最近的tag
git describe
把--abbrev设为0, 该命令查找最近的tag名,不需要后缀:
git describe --abbrev=0
获取当前分支的tag
git describe --abbrev=0 --tags
获取所有分支的tag
git describe --tags `git rev-list --tags --max-count=1`

撤销一个“已公开”的改变

修正最后一个 commit 消息

撤销“本地的”修改

重置“本地的”修改

在撤销“本地修改”之后再恢复