git常用命令

config

# 配置用户名
git config --global user.name username
# 配置邮箱
git config --global user.email username@gmail.com

# 查看配置列表
git config --list

# 配置默认master分支远程主机(很少用)
git config branch.master.remote origin
git config branch.master.merge refs/heads/master

获取代码

git pull <远程主机名> <远程分支名>:<本地分支名>

# 将远程项目克隆到本地
git clone https://gitee.com/dtstack_dev_0/taier.git

# origin是远程主机名,可以通过git branch -a或者git remote -v查看
# master远程分支,localbranch是指定本地分支
git pull origin master:localbranch
# 如果不指定分支,默认远程分支是master,默认本地分支是当前分支
git pull origin
# 如果不指定远程主机名,默认使用的远程主机名是origin
git pull

git pull执行了2个命令:

  1. git fetch从远程主机获取代码
  2. git merge FETCH_HEAD将获取到的代码合并到当前分支

基本操作

# 添加到缓存区
git add filename

# 提交代码
git commit -m '提交内容注释'

git commit -a -m '从新提交代码注释'

# 回退版本,reset比较复杂和危险,使用请了解更多知识,知道自己是在执行什么操作
git reset head^

# 丢弃文件修改
git restore filename

# 暂存代码
git stash

push

git push 远程主机 本地分支:远程分支


git push origin master:master

# 远程分支和本地分支相同可以省略
git push origin master

# 如果远程主机是origin,可以省略
git push master

# 默认推送当前分支,所以master也可以省略
# 前提是有相关联的远程分支
git push

# 使用git clone会自动关联
# 如果没有关联,例如本地创建分支要推送到远程,可以使用--set-upstream参数来关联
# 下面的命令就是创建远程分支b1与将本地当前分支关联(远程分支和本地分支最好同名,方便管理)
git push origin --set-upstream b1


# 推送到远程分支,如果没有远程分支则创建
git push origin feature/newbusiness

git push

分支管理

# 切换到dev分支,如果dev分支不存在则创建
git checkout -b dev 
# 拉取dev的最新代码,要先关联分支
git pull

# 推送分支
git push

# 如果远程没有分支,通过--set-upstream创建关联
git branch --set-upstream-to=origin/dev dev

删除分支

# 删除本地分支
git branch -d branchName

# -D是强制删除,即使分支还没有合并,所以尽量使用-d参数
git branch -D branchName

# 删除远程分支,--delete等价于-d
git push origin --delete <BranchName>
git push origin --delete  dev


# 删除远程端关联
git branch -r -d origin/branch1

# 删除所有分支
git branch | xargs git branch -d
# 删除包含指定字符的分支
git branch | grep 'dev*' | xargs git branch -d

merge

# 先同步代码
git pull
# 切换到dev分支,如果不存在则创建
git checkout -b dev

# 在dev上开发代码完成,切换回master
git checkout master
# 将dev分支代码合并到master
git merge dev

merge基本操作比较简单,稍微麻烦的点的是解决冲突问题。

merge的基本原理:找出dev分支和master分支的最近共同祖先commit点CA,将dev最新一次commit CB和master最新一次commit CC合并后生成一个新的commit CD,有冲突的话需要解决冲突。将以上两个分支dev和master上的所有提交点CA以后的按照提交时间的先后顺序进行依次放到master分支上。

merge

上面的命令就是最常用最基本的命令了,下面是一些其他常见的命令

remote

# 关联两个仓库: github 和码云
git remote add origin github-url 
git remote add gitee gitee-url

# 查看远程仓库的数量(简单信息)
git remote -v
 
# 查看某个远程仓库的具体信息
git remote show origin

help

git help <verb>  
git <verb> --help  
man git-<verb>  

tag

tag的主要作用是快速定位到对应的版本,一般是release的时候时有,有点像书签。

# 查看所有tag
git tag

# 创建tag
git tag v1.2.3

# 查看标签信息
git show v1.2.3

# tagName指定标签名字,-m参数添加标签说明
git tag -a tagName  -m "优化登录版本"

# 可以为指定的commit打tag
git tag -a v1.2 3146215f -m "复杂注册页面"

# 将tag推送到远程
git push origin v1.2.3

# 删除分支
git tag -d v1.2.3 

rebase

  1. rebase只是为了使提交历史干净整洁,你完全可以只使用merge
  2. 不要用rebase对任何已经提交到公共仓库中的commit进行修改

rebase有人叫它重放,某种程度上很贴切,因为这是rebase的一个重要功能,但是,我更喜欢rebase的本意,重建,就是对commit的重建。

rebase最常用也最实用的功能:

  1. 合并提交(commit),虽然rebase能重新编辑commit但是更多常用的是合并commit
  2. 重放提交

rebase很强大、很灵活,但是最常用的方式,可以按下面的流程操作;

# 切换到master分支
git checkout master
# 拉取代码
git pull
# 创建并切换到dev分支
git checkout -b dev

# 进行开发提交
git commit -m ''
git commit -m ''

# 合并提交-i进入交互模式,这一步非必须
# 执行这一步可以避免git rebase master解决多次冲突,并且可以将多次提交合并为一次
# rebase很灵活,不一定非要合并为一次,一些关键commit也可以保留
git rebase -i HEAD~n

# 将其他人这段时间提交的commit重放到dev分支(或者说将dev的commit重放到master?)
# dev上的commitId会改变
# git rebase upstream(默认当前分支上游分支) branch(默认head)
# 等价于:git rebase master dev
# 有冲突解决冲突,然后git add,再git rebase --continue
git rebase master

# 切换到master
git checkout master
# 将dev合并到master,肯定是ff(fast foward,快进模式)
git merge dev
# 将修改推送到远程仓库
git push

简单的来说,就是先使用git rebase -i 精简提交信息,然后使用git branch upstream head找到分支开始分叉(diverged)的位置,然后把分叉的部分重新放在上游分支的最后。

git merge是按commit时间顺序排列合并,git rebase都放在最后。

git-scm-rebase

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值