找回密码
 立即注册
首页 业界区 业界 Git 操作进阶

Git 操作进阶

蒲善思 2025-9-24 17:06:00
1. git基本操作

1.1  查看文件

还未被add的更改

  • 使用git status命令,它会显示哪些文件已经被修改并添加到暂存区,以及那些还未被添加的修改。
  1. git status -uno       //不显示未追踪的文件,推荐使用
  2. git status            //可以显示未被追踪的文件。很慢!!
复制代码
查看某一次commit的更改
  1. git show <commit-hash>
复制代码
查看某一次commit的某个具体文件的更改
  1. git show <commit-hash> -- git show <commit-hash>-p :
复制代码
1.2 查看分支
  1. git branch -vv
复制代码
这将列出所有本地分支,并在每个分支旁边显示它们各自追踪的远程分支。当前分支会用星号 (*) 标记。
1.3 git stash 命令

git stash 命令在 Git 这个广泛使用的版本控制系统中被用来临时搁置(或称之为“贮藏”)工作目录中的更改,使您可以切换到其他任务。这在您需要快速切换上下文并处理别的事情,但还没准备好提交当前更改时非常有用。下面是一些常用的 git stash 使用方法和选项的快速概览:
1. 临时搁置您的更改

这个命令临时搁置更改,以便您可以处理不同的任务。默认情况下,贮藏的更改包括修改过的跟踪文件和暂存区的更改,但不包括未跟踪的文件或被忽略的文件。
  1. git stash
复制代码
  1. git stash pop
复制代码
git stash pop可以应用第一个贮藏 相当于是git stash apply stash@{0}  + git stash drop stash@{0}
2. 列出贮藏


  • 要查看您贮藏的更改列表,使用:git stash list
3. 应用贮藏


  • 要重新应用最近创建的贮藏的更改,可以运行:
  1. git stash apply
复制代码

  • 这个命令重新应用更改但保留它们在贮藏列表中。如果您想要应用特定贮藏的更改,可以像这样指定:
  1. git stash apply stash@{n}
复制代码
4. 删除贮藏


  • 如果在应用之后或决定不再需要某个贮藏,您可以用以下命令将其删除:git stash drop stash@{n}
5. 清除所有贮藏


  • 要移除所有存储的贮藏,使用:git stash clear
1.4 git log查看

下面的命令可以查看每次提交修改的文件
  1. git log --stat
复制代码
2. 开发新的模块

要拉取远程分支到本地且该分支在本地尚未存在,你可以通过以下步骤来完成:

  • 执行git fetch以获取远程仓库的最新信息,这个命令会将远程的所有更改(包含新创建的分支)下载到本地,但不会自动合并到你的工作目录中。
  • 选择你想要拉取的远程分支,并使用以下命令创建一个新的本地分支来跟踪远程分支。在这个例子中,假设要拉取的远程分支名为feature-x。
  1. git checkout -b feature-x origin/feature-x
复制代码
这个命令实际上做了两件事:创建了一个与远程分支同名的新本地分支,并将其设置为跟踪远程分支。
3. 同步main分支的提交

你从 main 分支签出了 feature-branch 分支。
main 分支有了新的提交,现在你想将这些提交同步到 feature-branch。
  1. git rebase main
复制代码
4. git pull 时遇到冲突


  • 使用 git pull --rebase  强制同步
  • 使用 git reset 强制同步
  1. git fetch origin
  2. git reset --hard origin/<远程分支名>
复制代码
5. 撤销文件更改

5.1 未add的文件(工作目录

使用以下命令将工作目录中的所有更改恢复到上一次提交的状态:
  1. # 高本版使用(推荐
  2. git restore .
  3. # 或者针对单个文件:
  4. git restore <filename>
  5. # 低版本使用
  6. git checkout -- .
  7. # 或者针对单个文件:
  8. git checkout -- <filename>
复制代码
5.2 已经add的文件
  1. git restore --staged .    //将已经add的文件变为非add 暂存区->工作区,保留更改
复制代码
5.3 git reset


  • 更改暂存状态:git reset  可以用于将文件从暂存区移回工作区,相当于“取消 git add”。
  • 回退提交:git reset 也可以回退当前分支到某个特定的提交。

    • git reset --soft :回退到某个提交,保留所有更改在暂存区。
    • git reset --mixed (默认):回退到某个提交,保留更改在工作区,但不在暂存区。
    • git reset --hard :回退到某个提交,丢弃所有的工作区和暂存区更改。

5.4 后悔药

Git提供了一个命令git reflog用来记录你的每一次命令,然后再通过git reset返回该版本
6. 修改提交记录

6.1 把文件提交到上一次的提交:


  • 添加修改:使用git add .将修改添加到暂存区
  • 修正上次提交:使用git commit --amend将这些修改添加到上次提交中
  • 这会打开你的默认文本编辑器,允许你修改提交消息。如果不需要修改提交消息,直接保存并关闭编辑器即可。
7. 修改追踪的远程分支

修改追踪的远程分支:如果你想要更改本地分支对应的远程分支,可以使用 git branch 命令的 --set-upstream-to 选项。假设你的本地分支是 my-branch,你想要让它追踪远程的 origin/new-branch:
  1. git branch --set-upstream-to=origin/new-branch my-branch
复制代码
验证设置:使用 git branch -vv 来确认你的本地分支是否已经追踪到新的远程分支。
8. cherry-pick 其他目录的提交


  • 添加另一个本地仓库为 remote:
  1. git remote add otherrepo /path/to/other/repo
复制代码

  • Fetch 另一个仓库:
  1. git fetch otherrepo       //必须这个名字,不能全局
复制代码

  • 查看提交:
  1. git log otherrepo/main
复制代码
将 main 换成另一个仓库实际的分支名。

  • Cherry-pick 提交:
  1. git cherry-pick abc1234
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册