Git常用操作
基本概念
从远端拉取项目
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