git常用命令

发布于:2025-08-13 ⋅ 阅读:(17) ⋅ 点赞:(0)

git branch

git branch

查看当前代码仓的本地分支

git branch -a

查看当前代码仓的所有分支(包括本地和远程仓库的)

git branch -D your_branch

删除本地的一个分支

git checkout

git checkout your_branch

切换到your_branch分支(如果本地存在your_branch,否则从远程仓库拉取。如果本地和远程仓库均不存在则提示错误)

git checkout -b your_branch

在当前分支的基础上,新建一个分支

git pull 命令详解

git pull 是 Git 版本控制系统中一个常用的命令,用于从远程仓库获取最新更改并合并到当前分支。它是 git fetchgit merge 两个命令的组合操作。

基本语法

git pull [options] [<repository> [<refspec>...]]

工作原理

  1. 获取远程变更:首先执行 git fetch 从远程仓库下载最新的提交和引用
  2. 合并变更:然后执行 git merge 将这些变更合并到当前分支

常用选项

  • --rebase:使用 rebase 而不是 merge 来整合变更

典型工作流程

  1. 在开始工作前执行 git pull 获取最新代码
  2. 解决可能出现的合并冲突
  3. 进行本地开发
  4. 提交更改前再次 git pull 确保代码是最新的

与远程分支的关系

默认情况下,git pull 会从与当前分支关联的远程跟踪分支获取变更。例如,如果你在本地 main 分支工作,它通常会跟踪 origin/main 远程分支。

配置选项

可以通过以下方式配置默认行为:

git config --global pull.rebase true  # 默认使用 rebase
git config --global pull.ff only     # 只允许快进合并

常见问题

  1. 合并冲突:当远程更改与本地更改冲突时,需要手动解决
  2. 拒绝非快进合并:当远程历史与本地历史分叉且无法简单合并时
  3. 权限问题:如果没有访问远程仓库的权限,pull 操作会失败

使用示例

# 从默认远程仓库拉取当前分支的更新
git pull

# 从特定远程仓库拉取特定分支的更新
git pull origin feature-branch

# 使用 rebase 方式拉取更新
git pull --rebase

# 拉取更新但不自动合并
git pull --no-commit

git pull 是团队协作开发中最常用的命令之一,确保开发者始终基于最新代码进行工作。

git push 命令详解

git push 是 Git 版本控制系统中用于将本地仓库的提交推送到远程仓库的核心命令。以下是关于 git push 的详细说明:

基本语法

git push <远程仓库名称> <本地分支名称>:<远程分支名称>

常用简化形式

  1. 将当前分支推送到远程同名分支

    git push
    

    等同于:

    git push origin HEAD
    
  2. 将指定分支推送到远程同名分支

    git push origin feature-branch
    
  3. 将本地分支推送到远程不同名分支

    git push origin local-branch:remote-branch
    

常用选项

  • -u--set-upstream:设置上游分支,后续可以直接使用 git push 而不需要指定远程仓库和分支

    git push -u origin main
    
  • -f--force:强制推送(慎用,会覆盖远程历史记录)

    git push -f origin main
    
  • --all:推送所有分支

    git push --all origin
    
  • --tags:推送所有标签

    git push --tags
    

工作流程示例

  1. 首次推送新分支

    git checkout -b new-feature  # 创建并切换到新分支
    git add .                   # 添加更改
    git commit -m "实现新功能"   # 提交更改
    git push -u origin new-feature  # 推送到远程并设置上游跟踪
    
  2. 后续推送更新

    git add .                   # 添加新更改
    git commit -m "修复bug"      # 提交新更改
    git push                    # 推送到已设置的上游分支
    

常见问题解决

  1. 远程分支已更新

    git pull origin main        # 先拉取远程更改
    git push origin main        # 再推送本地更改
    
  2. 拒绝非快进推送

    git fetch origin            # 获取远程最新状态
    git rebase origin/main      # 变基到远程分支
    git push origin main        # 再次尝试推送
    
  3. 删除远程分支

    git push origin --delete old-branch
    

最佳实践

  1. 推送前先拉取远程更改,避免冲突
  2. 为功能开发创建特性分支,而非直接在主分支上工作
  3. 谨慎使用强制推送,特别是在团队协作环境中
  4. 定期推送更改,避免本地积累过多未推送提交

通过正确使用 git push 命令,可以有效地与团队成员共享代码变更,保持代码库的同步和一致性。

git diff

显示本次修改没有保存的内容

git status

查看当前有修改的文件

git log

git reset

git reset --hard commitId

分支回退到指定的位置

git rebase

多个commit 合成一个

在git中可以使用rebase命令结合交互式选项(-i)将最近的几次提交合并成一个提交。详细步骤如下:

  1. 打开终端
  2. cd到对应的git代码仓目录下
  3. 运行以下命令:
git  rebase -i HEAD~3

这将会打开一个文本编辑器,并显示最近的三次提交。(HEAD指向当前分支的最新提交,HEAD~3表示当前提交的前三个提交)。
4. 在文本编辑器中,你将会看到类似这样的列表

pick aghsdf1b 第三次提交的内容
pick asdfsknl 第二次提交的内容
pick fdlwebdf 第一次提交的内容
  1. 要将这三个提交合并成一个,你需要把列表中的第二个和第三个提交前面的pick改为fixup。fixup会合并提交但会丢弃初第三个提交外的所有提交信息。
pick aghsdf1b 第三次提交的内容
fixup asdfsknl 第二次提交的内容
fixup fdlwebdf 第一次提交的内容
  1. 保存并关闭编辑器(ctrl+O, Enter, ctrl+X)

  2. 现在git会重新应用这些提交,并将他们合并为一个新的提交。
    注意:这种合并并提交的操作会改变你的提交历史。如果这些提交已经推送到远程仓库,并且其他人也在这些提交上进行了工作,使用rebase可能会导致问题。在这种情况下,需要确保所有相关人员都了解你的操作,并准备好处理可能出现的冲突。

  3. 把你的修改推到远程仓库

git commit --amend
git push origin your_branch --force

git cherry-pick

将commit合入到另一个分支上

git checkout target_branch # 切换到目标分支
git pull # 确保当前分支是最新的
git cherry-pick commitId # 将一个commit的修改内容合并到目标分支
git push origin target_branch # 将目标分支推到远程仓库

将多个commit通过cherry-pick合入到另一个分支变成一个commit

# 首先执行cherry-pick但不自动提交
git checkout target_branch # 切换到目标分支
git cherry-pick --no-commit commitID1 commitID2 commitID3
# 然后手动创建一个新的提交
git commit -m "合并多个commit的更改"
git push origin target_branch # 将目标分支推到远程仓库

彩蛋

安装git可视化工具
cd 到对应的代码仓文件夹下
打开可视化工具: git gui


网站公告

今日签到

点亮在社区的每一天
去签到