Loading

git常用操作

git

git init

# git init 命令用于在目录中创建新的 Git 仓库.
# 例如我们在当前目录下创建一个名为 runoob 的项目.
$ mkdir runoob
$ cd runoob/
$ git init
Initialized empty Git repository in /Users/tianqixin/www/runoob/.git/
$ ls -a
.    ..    .git

git配置

# git 的设置使用 git config 命令。
# 显示当前的 git 配置信息:
$ git config --list
credential.helper=osxkeychain
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
core.ignorecase=true
core.precomposeunicode=true

# 编辑 git 配置文件:
$ git config -e    # 针对当前仓库.
# 或者:
$ git config -e --global   # 针对系统上所有仓库.

# 设置全局提交代码时的用户信息,如果去掉 --global 参数只对当前仓库有效.
$ git config --global user.name "runoob"
$ git config --global user.email test@runoob.com

远程仓库

# 添加一个远程仓库,别名为origin
$ git remote add origin git@github.com:cicd/auto_sys.git

# 查看当前配置有哪些远程仓库
git remote -v
origin	git@github.com:cicd/auto_sys.git (fetch)
origin	git@github.com:cicd/auto_sys.git (push)

# 删除一个远程仓库
git remote rm [别名] # 例:git remote rm origin

git commit

# 添加某个已做修改的文件
$ git add file
# 添加所有修改文件
$ git add .
# 提交并声明。在gitlab中,为避免触发执行ci,可以添加-m "[skip ci]"来跳过。
$ git commit -m "注释"
# 不需要执行 git add 命令,直接来提交
$ git commit -a -m "注释"
# 查看最近提交的一次记录
$ git log -n 1 --stat   
# 查看提交的详情
git show commit-id 
# 如果commit注释写错了,只是想改一下注释,只需要:
$ git commit --amend # 此时会进入默认vim编辑器,修改注释完毕后保存就好了。

分支操作

# 创建新分支并切换到该分支 
$ git checkout -b branch

# 修改分支的名字
$ git branch -m 旧名 新名

# 切换不同的分支,首先切换到master,在切换到目的分支
$ git checkout master;git checkout branch

# 列出当前分支
$ git branch -a 
$ git branch -vvv

# 提交当前分支到远端
# git push origin branch

# # 删除远端分支
git push --delete origin branch

# 设置本地创建branch分支同步到远端
$ git push --set-upstream origin branch
$ git push

# 设置远程分支同步到本地branch分支
$ git branch --set-upstream-to origin branch
$ git pull

合并分支

# 一、开发分支(dev)上的代码达到上线的标准后,要合并到 master 分支
# 切换到dev分支
$ git checkout dev
# 拉取最新的dev分支代码
$ git pull
# 切换到master分支
$ git checkout master
# 合并最新dev分支代码到master
$ git merge dev
# 上传最新的master分支代码到远程仓库
$ git push -u origin master

二、当master代码改动了,需要更新开发分支(dev)上的代码
$ git checkout master
$ git pull
$ git checkout dev
$ git merge master
$ git push -u origin dev

git tag

# 创建 tag 是基于本地分支的 commit,而且与分支的推送是两回事,就是说分支已经推送到远程了,但是你的 tag 并没有,如果把 tag 推送到远程分支上,需要另外执行 tag 的推送命令。
$ git tag <tagName> //创建本地tag
$ git push origin <tagName> //推送到远程仓库
# 若存在很多未推送的本地标签,你想一次全部推送的话:
$ git push origin --tags

# 以上是基于本地当前分支的最后的一个commit 创建的 tag ,但是如果不想以最后一个,只想以某一个特定的提交为tag ,也是可以的,只要你知道commit 的id。
$ git log --pretty=oneline //查看当前分支的提交历史 里面包含 commit id
$ git tag -a <tagName> <commitId>


#  查看本地某个 tag 的详细信息:
$ git show <tagName>
#  查看本地所有 tag:
$ git tag 或者 git tag -l
# 查看远程所有 tag:
$ git ls-remote --tags origin

# 本地 tag 的删除:
$ git tag -d <tagName>
# 远程tag的删除方式:
$ git push --delete origin <tagName>

commit 后的回滚操作

# 回滚上一次提交
$ git reset --hard HEAD^
# HEAD^的意思是上一个版本,也可以写成HEAD~1,如果你进行了2次commit,想都撤回,可以使用HEAD~2
  # --soft 不删除工作空间改动代码,撤销commit,不撤销git add .
  # --hard 删除工作空间改动代码,撤销commit,撤销git add .

# 对指定某个文件进行撤销
$ git reset HEAD XXX/XXX/XXX.java 

# 当需要删除最新的提交、或最最近的几个提交。比如删除 1 或者 1~3 的提交,使用 git reset命令。
  # 我们需要关注一下 git reset的 --hard 和 --soft 参数。
  # 举个例子删除最近两个提交看看:
  $ git reset --soft commit~3,然后 git status

git diff

# Git中的diff主要用于比较差异,查看差异
# 可以比较不同分支差异、不同区域(Git的分区)差异、不同提交记录之间差异

# 工作区和暂存区(Stage/index)之间的差异
$ git diff
# 这个命令显示的是详细的差异,比如是哪个文件中的哪行有变化。有时候会很多很杂乱,可以使用下面的命令直接显示哪个文件有了多少变化
$ git  diff --stat

#  工作区和版本库之间差异
$  git diff HEAD 或者 git diff cimmit-id
# 同时也可以加上--stat指令,用于查看简易的差异

# 暂存区和版本库之间的差异
# 如果需要比较暂存区和版本库之间的差异,需要添加–cahced ,其他的指令类似,包括–stat 
$ git diff --cached HEAD 或者git diff --cached commit-id

# 版本库之间提交记录的比较
git diff commit-id  commit-id
# 也可以使用HEAD来比较:
$ git diff HEAD^ HEAD

# 不同分支之间的比较
# 假设现在有分支test-1和master分支,需要比较这两个之间的差异,可以使用一下命令
$ git diff test-1 master
posted @ 2023-01-06 11:02  一介布衣·GZ  阅读(30)  评论(0编辑  收藏  举报