基本概念

pic

(摘自掘金)

从远端拉取项目

git clone +项目地址 [指定文件名] (两种方式ssh与http方式,ssh方式需要将公钥设置到git上进行验证,http方式通过用户名+密码进行验证,同时也可以指定存放的文件名)

添加修改到暂存区(stage/index)

  • a、git add 的形式把我们添加到索引库中,可以是文件也可以是目录。
  • b、git add -u []: 把中所有tracked文件中被修改过或已删除文件的信息添加到索引库。它不会处理untracted的文件。省略表示.,即当前目录。
  • c、git add -i []命令查看中被所有修改过或已删除文件但没有提交的文件,

提交到本地版本库

  • a、git commit -m “提交的描述信息”
  • b、git commit -a -m “提交的描述信息” git commit 命令的-a 选项可只将所有被修改或者已删除的且已经被git管理的文档提交倒仓库中
  • c、git commit –amend 对于已经修改提交过的注释,如果需要修改,可以借助 git commit –amend 来进行

提交到远程分支:

a、git push <远程主机名> <本地分支名>:<远程分支名> 将本地的master分支推送到origin主机的master分支。如果后者不存在,则会被新建。

git查看提交日志

  • a、git log git日志会按照最新的日期从上往下显示
  • b、git log –since="5 hours” 显示最近5小时内的提交
  • c、git log –pretty=oneline 将log显示在一行,–pretty 美化显示
  • d、git log –graph 以图表的形式显示提交记录
  • e、git log –stat 会详细显示每次提交的修改点
  • f、git log –author=xxx –pretty=oneline 查看日志时组合使用相关条件,author表示作者,pretty表示格式化方式

git查看版本差异

  • git diff: 显示您的工作目录和index之间的差异.
  • git diff –cached: 显示index和最近的commit之间的差异.
  • git diff HEAD: 显示您的工作目录和最新的commit之间的差异.

reset与revert

#撤销指定版本提交

  • a、git reset 撤销最近一次的add操作,也可以指定文件:git reset HEAD aaa.txt
  • b、git revert HEAD 撤销前一次 commit
  • c、git revert HEAD^ 撤销前前一次 commit
  • d、git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
    注:git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。

版本回退

从本地仓库拉取覆盖

git checkout xxx

从远程仓库拉取覆盖

git reset --hard origin/branchname 
git reset ---hard  [commit_id] 恢复之后,对应版本之后的版本信息都清除,此时只是本地恢复
git push -f

一个项目提交到两个仓库

  • 1,拉取私有git库: git clone ***

  • 2,增加github远程库: git remote add upstream https://github.com/Kong/kong.git | https://github.com/Kong/kubernetes-ingress-controller.git git fetch upstream

  • 3,拉取GITHUB原始分支,并重命名为upstream_master: git pull upstream master:upstream_master

  • 4,更新到本地分支: git checkout dev git merge –allow-unrelated-histories upstream_master

  • 5,推送到私有GIT: git push origin dev

git迁移

#!/bin/sh
oldURL="https://xxx.git"
newURL="https://yyy.git"
project=training
git clone --bare ${oldURL} -s ${project}
cd ${project}/
echo "该项目从 $oldURL 已经迁移到 $newURL" >> readme.md
git add readme.md
git commit -a -m "该项目从 ${oldURL} 已经迁移到 ${newURL}"
git push --mirror ${newURL}
git push -u origin --all
git push -u origin --tags