Git 常用操作命令

Git常用操作命令,方便自己查询和记录成长路上的每一步

作为一名开发者Git是你绕不过去的,git是一款优秀的代码管理的工具。学会使用git是每个程序员的必修课。

初始化配置

  • 生成本地公钥:ssh-keygen
  • 配置本地global信息:
    1.git config --global --list查看global配置, git config -l查看所有config
    2.git config --global user.name "Your Name Comes Here" 配置用户名
    3.git config --global user.email you@yourdomain.example.com 配置邮箱

本地生成仓库分支

  • git init 本地初始化一个git仓库
  • git remote add origin git@github.com:XXX/XXX.git 将本地初始化的仓库交给远程仓库管理
  • git clone -b xxx git@github.com:XXX/XXX.git 将远程库的代码clone 到本地
  • 如果遇到Filename too long,在bash运行git config --global core.longpaths true
  • git remote -v 查看远程仓库地址
  • git remote rm origin 删除远程仓库
  • git branch 查看此时所在分支
  • git branch -a 查看所有远程分支
  • git checkout -b xxx 创建本地分支,并切换到此分支,git checkout commitId -b xxx 以某次commit创建分支
  • git checkout -b <branch> origin/<branch>创建分支,并将远程分支同步
  • git checkout --orphan xxx 创建一个空白分支
  • git push origin HEAD:xxx将本地分支推送到远端库,git push origin --delete xxx 删除远端分支
  • git branch -d xxx删除本地分支

添加提交

  • git add xxx添加具体文件,git add -A 添加所有修改 到缓存区
  • git commit -m "xxx" 将修改添加到HEAD
  • git commit --amend 追加提交
  • git push origin xxx 将修改推送到远程分支

本地修改操作

  • git status 查看本地修改状态
  • git checkout – XXX 撤销本地某个文件的修改,git checkout .撤销本地所有文件的修改
  • git reset HEAD XXX 撤销暂存区回到工作区,git reset HEAD . 撤销所有暂存区修改
  • git reset -- . 将暂存区的数据放回工作区
  • git reset -- hard HEAD^ 本地仓回退到上次提交之前,工作区不变
  • 本地提交回退:git reflog查看commitId,然后git reset --hard XXX
  • 公共分支版本回退:revert 操作会产生新的commitId,提交到分支
    1. git revert HEAD 撤销最近一次提交
    2. git revert HEAD~1 撤销上上次的提交,注意:数字从0开始
    3. git reset --soft HEAD~1 软重置,让提交回归暂存区
    4. git revert 0ffaacc 撤销0ffaacc这次提交

放弃本地修改,强制和远程同步

有些时候我们只想要git服务器中的最新版本的项目,对于本地的项目中修改不做任何理会,就需要用到Git pull的强制覆盖,具体代码如下

git fetch --all
git reset --hard origin/master
git pull

对比操作 git diff

  • git diff xxx 比较工作区与暂存区文件
  • git diff --cached xxx 比较暂存区与最新版本库文件
  • git diff HEAD xxx 比较工作区与最新版本库文件
  • git diff commit-id xxx 比较工作区与指定commit-id 文件
  • git diff --cached commit-id xxx 比较暂存区与指定commit-id 文件
  • git diff commit-id commit-id 比较两个 commit -id 的差异

日志操作 git log

  • git log 显示所有历史提交,git log --oneline 将每条日志输出为一行
  • git log -n 显示前n条提交
  • git log --author=xxx 显示作者为xxx的提交
  • git log --grep=xxx 显示指定为xxx关键词的提交
  • git log --committer=xxx 显示指定提交者的提交
  • git log -p -- xxx 查看某个文件的修改记录,xxx为完整路径
  • git show commit-id查看某次commit 的修改
  • git show --name-only HEAD 仅查看某次提交修改的文件列表

标签操作 git tag

  • git tag 显示当前版本库所有标签列表
  • git tag xxx 创建一个tag
  • git tag xxx - m "xxx" 创建一个带描述的tag
  • git push origin tag 把本地标签推送到远端
  • git tag -d xxx 删除本地tag
  • git push origin :refs/tags/xxx 本地删除tag,执行此命令删除远端tag

git fetch 理解

  • git fetch 更新git remote 中所有的远程repo 所包含分支的最新commit-id, 将其记录到.git/FETCH_HEAD文件中
  • git fetch git@github.com:XXX/XXX.git更新远程repo上的所有branch的最新commit-id,将其记录
  • git fetch git@github.com:XXX/XXX.gitremote_branch_name:local_branch_name
  • git pull相当于git fetch之后git merge 更新本地与远端数据一致,如果有冲突,则在本分支解决冲突。
  • git pull --rebase 用在合并代码的时候其作用就是在一个随机创建的分支上处理冲突,避免了直接污染原来的分区,在出现冲突之后,git自动帮你创建一个新的分支,在这新的分支上处理完冲突之后,运行git rebase --continue即可

git reset 回退

git reset的作用是修改HEAD的位置,即将HEAD指向位置改变为之前存在的某个版本。

适用场景,恢复到之前的某个版本,且那个版本之后的提交我们都不要了,就可以用这个方法。

  1. git reset --hard 目标版本号 将版本回退到之前的版本
  2. git log 查看版本信息,此时本地HEAD已经指向之前版本
  3. git push -f 提交更改,此处用git push 会报错,原因我们本地HEAD之前比远程库要旧

git revert 理解

git revert是用于“反做”某一个版本,以达到撤销该版本的修改的目的。比如,我们commit了三个版本(版本一、版本二、 版本三),突然发现版本二不行(如:有bug),想要撤销版本二,但又不想影响撤销版本三的提交,就可以用 git revert 命令来反做版本二,生成新的版本四,这个版本四里会保留版本三的东西,但撤销了版本二的东西

适用场景: 如果我们想撤销之前的某一版本,但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。

比如我们现在有三次提交,commit id 分别为:
commit d04a033afa5ad71eff8c44a5583ff1cbc8228552 (HEAD -> master) 版本三

commit c6bad8938ddea2bb808de7919c5177e3f51d6290 版本二

commit 6d7469211b9c1104c2275c74a0734e8179f5088a 版本一

我们不想要版本二的提交信息了。我们可以这么做:

  1. git revert -n 版本号 反做 。这里如果有冲突,处理冲突 git add 文件名
  2. 提交,使用git commit -m 版本名
  3. git push 推上远程库 ,这时会生成一个版本四

git cherry-pick 理解

git cherry-pick命令的作用,就是将指定的提交应用于其他分支。
比如我们需要在master分支和另外一个feature分支同时提交相同的代码,我们就可以用git cherry-pick
我们切换到feature分支. master 同步到feature分支

  1. git checkout feature
  2. git cherry-pick [commitId]
    cherry-pick 也支持一次转移多个提交
    git cherry-pick A, B
  3. git push origin feature

未完待续。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值