整理git相关操作

博客介绍了Git的一系列操作,包括获取用户信息、克隆项目、查看提交记录等。还涉及分支管理,如本地创建新分支并推送到远程、删除分支、合并提交、添加分支描述等,适用于快速迭代开发场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

获取用户信息

git config user.name
git config user.email

git config --global user.name "your name"
git config --global user.email "your email"

克隆项目


# clone with SSH
git clone git@git.dev.sh.ctripcorp.com:ottd/***.git

# clone with HTTP
git clone http://git.dev.sh.ctripcorp.com/ottd/***.git

# clone with SSH
git clone git@git.dev.sh.ctripcorp.com:ottd/ottd-smart-business-component.git

# clone with SSH
git clone git@git.dev.sh.ctripcorp.com:ottd/ottd-smart-business-component.git

查看提交记录

git log --author=“author”
git log --pretty=oneline 	# short,full 和 fuller
git log --pretty=format:"%h - %an, %ar : %s"  # 自定义格式

选项说明
%H提交对象(commit)的完整哈希字串
%h提交对象的简短哈希字串
%T树对象(tree)的完整哈希字串
%t树对象的简短哈希字串
%P父对象(parent)的完整哈希字串
%p父对象的简短哈希字串
%an作者(author)的名字
%ae作者的电子邮件地址
%ad作者修订日期(可以用 --date= 选项定制格式)
%ar作者修订日期,按多久以前的方式显示
%cn提交者(committer)的名字
%ce提交者的电子邮件地址
%cd提交日期
%cr提交日期,按多久以前的方式显示
%s提交说明

从另一个分支上抽取另一个分支上的commit


# master 的commit有:commit1, commit2, commit3, commit4
# master-other 的commit有: commit5, commit6, commit7
# 仅仅将commit5拉出来放到master中,可以使用一下命令,后面的六位数,是commit5的hash码

# 在master分支上做以下命令

git cherry-pick 4589b6c

本地创建新分支并推送到远程


git checkout -b dev_new
git push 

## 控制台提示
## fatal: The current branch 8.3.1_fix_additional_choose_copies has no upstream branch.
## To push the current branch and set the remote as upstream, use
## git push --set-upstream origin dev_new

git push --set-upstream origin dev_new
git push -u origin dev_new

删除本地分支/远程分支

git branch -a / git branch -all # 查看所有分支

git branch -l # 查看本地分支
git branch -d branchname / git branch --delete branchname # 删除本地分支,未合并的会报错
git branch -D branchname # 删除本地分支,哪怕没有被合并到其他分支
# 控制台输出
# Deleted branch 8.3.1_order_option_price_error (was 1a85a6f63a).


git branch -r # 查看远程分支
git push --delete origin branchname / git push -d origin branchname # 删除远程分支
git push origin :branchname # 删除远程分支
# 控制台输出
# To git.dev.sh.ctripcorp.com:ttd/ttd-mobile-activity.git
# - [deleted]               8.3.1_for_testuat

对远程分支源的增删,提交,追踪

# git remote -h 该命令会显示git remote 大多数操作项,可以优先从这获取。

# 查看当前源
git remote -v 

# 添加新的源
git remote add originnew git@github.com:woden0415/woden0415.github.io.git # git remote add 源的名字 源的地址

# 删除之前创建的源
git remote remove originnew 

# 提交
git push originnew branchname # 推到新的源地址,需要指定源和分支名

# 如果我们需要重新设置默认追送该怎么做呢?
# 首先查看当前的追踪情况

# 查看当前追踪,
git branch -vv
# 控制台输出
#   master     3104634 [origin/master: behind 85] Merge branch 'dev-0320' into 'master'
# * master0413 c12d899 [origin/master0413] update
# *[是否为当前分支] 本地分支名 commit哈希 默认追踪的远程分支:追踪现状(还没有更新等等) commit说明

# 设置默认提交到新的源分支上
git branch --set-upstream-to=originold/master0413 master0413
#git branch --set-upstream-to=origin/<branch> master
# 控制台输出
# Branch 'master0413' set up to track remote branch 'master0413' from 'originold'.

# 通过git branch -vv查看
#   master     3104634 [origin/master: behind 85] Merge branch 'dev-0320' into 'master'
# * master0413 c12d899 [originold/master0413] update

# 删除源
git remote remove originold
# 通过git branch -v查看是否删除掉
# 之前本地分支master0413 => originold/master0413,删除后,需要重新指定远程分支

合并多个提交为1个提交

# https://www.jianshu.com/p/964de879904a 具体内容看着篇

给分支添加描述信息

背景:快速迭代开发时,通常好几个分支共同进行。这时候规范的分支命名往往无法第一时间了解这个分支的内容。下面了解一下,如何给分支添加描述。

# git config branch.{branch_name}.description 《这里添加注释》
git config branch.feature/0520.description "5月20号新建的功能"

# 接下来就是查看描述了,自带的功能比较麻烦
# git config branch.{branch_name}.description
git config branch.feature/0520.description

# 添加一个git工具,在命令行里执行。
npm i -g git-br
# 执行完之后,在项目里输入git br,会显示当前所有的分支和对应的描述
git br
# 控制台显示内容如下:
# feature/0520 5月20号新建的功能

将分支的某一个提交合并到另一个分支上

# 将分支A的提交`fa6add49079e45bd20284e885ff19768bfce0aa2`提交合并到分支B上
git checkout B
git cherry-pick  fa6add49079e45bd20284e885ff19768bfce0aa2
# https://blog.youkuaiyun.com/Dream_Weave/article/details/106046769

将分支的多个提交合并到另一个分支上

# 方法一
# 将分支A的commit (76cada,62ecb3](前开后闭,所以需要多往前写一个提交)合并到分支B上

git checkout A
git rebase --onto B 76cada 62ecb3 # 将76cada和62ecb3之间的提交合并到B上,不包括76cada
# 此时会创建一个备份 c1e1169,这个备份包括B所有和新增的(76cada,62ecb3]提交
git checkout B
git merge c1e1169


##  方法二
# commit1 oikdj1
# commit2 8kiju1
# commit3 7jujuh
# 将a分支的连续三个提交commit1~commit3合并到b分支上

# 在b分支上执行
git cherry-pick oikdj1..7jujuh  # 表示 (oikdj1, 7jujuh]
git cherry-pick oikdj1^..7jujuh  # 表示 [oikdj1, 7jujuh]

修改当前remote 的名称

git remote -v
# originnew  git@git.aa.com:bb/cc.git (fetch)
# originnew  git@git.aa.com:bb/cc.git (push)

# 如果我想修改此处的originnew为origin
git remote rename originnew origin

本地仓库关联远程地址

git remote add origin git@server-name:path/repo-name.git
git push -u origin master # 第一次推送master
git push # 之后可以只使用git push,默认追踪远程仓库和对应名字的分之

删除中间某几次提交

# 比如有一下几个提交 (上面的是最近的)
#
# 58211e7a5da5e74171e90d8b90b2f00881a48d3a   
# 0fb295fe0e0276f0c81df61c4fd853b7a000bb5c
# 7753f40d892a8e0d14176a42f6e12ae0179a3210
# as6df7asd7fa7sdf7asdfasdf7afb7bcgfasd9a6

# 想要删掉 [0fb295fe0e0276f0c81df61c4fd853b7a000bb5c, 7753f40d892a8e0d14176a42f6e12ae0179a3210]

git rebase -i as6df7asd7fa7sdf7asdfasdf7afb7bcgfasd9a6

# 然后在控制台提示里,将
# [0fb295fe0e0276f0c81df61c4fd853b7a000bb5c, 7753f40d892a8e0d14176a42f6e12ae0179a3210]
# 前面的值改为 drop,然后保存提交
# git push -f 强推上去

# 其他人更新时,先回滚到最初节点 [as6df7asd7fa7sdf7asdfasdf7afb7bcgfasd9a6]
git reset --hard as6df7asd7fa7sdf7asdfasdf7afb7bcgfasd9a6
# 此时远程分支比本地要多一个commit [58211e7a5da5e74171e90d8b90b2f00881a48d3a] git pull就好了
git pull

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值