git常用用法说明

发布于:2024-12-18 ⋅ 阅读:(73) ⋅ 点赞:(0)

Git 是一个功能强大的版本控制工具,提供了许多常用的操作来帮助开发者管理代码。以下是一些常见的 Git 操作及其用法:

  1. Git 配置

    配置用户信息

    首次使用 Git 时,设置全局用户信息(用户名和邮箱):

    git config --global user.name "Your Name"
    git config --global user.email "youremail@example.com"
    
  2. 初始化仓库

    初始化一个新的 Git 仓库

    在一个项目文件夹中初始化一个 Git 仓库:

    git init
    
  3. 克隆仓库

    克隆远程仓库

    将一个远程仓库克隆到本地:

    git clone <repository_url>
    

    例如:

    git clone https://github.com/user/repository.git
    
  4. 查看仓库状态

    查看工作区状态

    查看当前工作区和暂存区的状态,了解哪些文件已修改或新增,哪些文件已暂存:

    git status
    
  5. 文件操作

    添加文件到暂存区

    将修改过的文件添加到暂存区,准备提交:

    git add <file_name>
    # 或者添加所有文件
    git add .
    
    提交更改

    将暂存区的更改提交到本地仓库,并添加提交信息:

    git commit -m "Commit message"
    
    • 没有输入message,直接点击提交按钮

      遇到如下内容时,表明 Git 进入了一个提交消息编辑状态,并且你需要输入提交消息。这里的信息是 Git 自动生成的编辑提示,行以 # 开头的是注释内容,不会影响提交。你需要在其中删除注释,并输入你的提交信息。

      步骤
      1. 输入提交消息:在这个界面中,你应该在顶部的空白区域输入你的提交消息。例如:

        Fix bug in store index.js
        
      2. 保存并退出编辑器

        • 如果你在 VSCode 中,应该在编辑器中看到一个文本文件,输入完提交信息后,按 Ctrl + S(或 Cmd + S 如果你在 macOS 上)保存文件。
        • 然后,关闭编辑器窗口,Git 会自动使用该消息进行提交。
      3. 如果提交信息为空:如果你没有输入任何信息,或者编辑窗口被关闭且没有任何提交消息,Git 会中止提交并显示一个错误提示,要求你输入有效的提交信息。

      也可以使用 Git 的命令行参数 -m 来直接提供提交信息,例如:

      git commit -m "Fix bug in store index.js"
      

      这样,Git 会跳过编辑器,直接提交并使用提供的消息。

    • 命令行输入git add .后,git commit中没有添加信息,终端进入如下内容:

      
      # Please enter the commit message for your changes. Lines starting
      # with '#' will be ignored, and an empty message aborts the commit.
      #
      # On branch main
      # Your branch is up to date with 'origin/main'.
      #
      # Changes to be committed:
      #	modified:   src/store/index.js
      #
      
      步骤:
      1. 可以按下 i 键进入输入模式
      2. 输入编辑信息
      3. 编辑完成后按下 esc 键,输入 :wq 保存并退出
  6. 查看提交历史

    查看提交日志

    查看提交历史记录,显示所有提交的详细信息:

    git log
    

    常用的 git log 选项:

    • git log --oneline:简洁模式,每个提交仅显示一行。
    • git log --graph:图形化显示提交历史。
    • git log --author="Author Name":查看某个作者的提交。
  7. 分支操作

    查看所有分支

    查看当前仓库中的所有分支:

    git branch
    
    创建新分支

    在当前分支的基础上创建一个新分支并切换到该分支:

    git checkout -b <branch_name>
    
    切换分支

    切换到已有的分支:

    git checkout <branch_name>
    
    删除分支

    删除本地分支(仅删除分支,不删除工作区的文件):

    git branch -d <branch_name>
    
    合并分支

    将一个分支合并到当前分支:

    git merge <branch_name>
    
  8. 远程仓库操作

    查看远程仓库

    查看当前配置的远程仓库:

    git remote -v
    
    添加远程仓库

    添加一个新的远程仓库(如 GitHub):

    git remote add origin <repository_url>
    
    推送更改到远程仓库

    将本地分支的更改推送到远程仓库:

    git push origin <branch_name>
    
    从远程仓库拉取更新

    从远程仓库拉取最新的代码并与本地合并:

    git pull origin <branch_name>
    
    克隆远程仓库

    将远程仓库克隆到本地:

    git clone <repository_url>
    
    删除远程分支

    删除远程仓库上的分支:

    git push origin --delete <branch_name>
    
  9. 撤销操作

    撤销修改(未暂存的)

    撤销工作区中的未暂存修改:

    git checkout -- <file_name> // 旧的命令,但仍然可以使用
    git restore -- <file> // 较新的 Git 命令,推荐使用该命令,因为它更具语义性
        
    // 例如:修改了 vue-demo/src/store/index.js 文件
    // 撤销工作区中的未暂存修改:git restore src/store/index.js 当前终端是在vue-demo文件夹下
    
    撤销已经暂存但未提交的修改

    将文件从暂存区移除,但保持工作区的修改:

    git reset <file_name>
    

    撤销本地已提交,但未同送到远端(Outgoing:当前本地分支上有待推送的提交,即本地提交但还未推送到远程仓库的提交)

    撤销最近一次提交(保留文件更改)
    1. 撤销最近一次提交,并保留文件更改(放回暂存区):

      git reset --soft HEAD~1
      
      • 这个命令会撤销最近一次提交(HEAD~1),并将修改回到暂存区(也就是放回 git add 状态)。你可以再次修改这些文件,或者重新提交。
    2. 撤销最近一次提交,并将修改放回工作区(不放回暂存区):

      git reset --mixed HEAD~1
      
      • 这个命令不仅撤销了提交,还会将修改回到工作区,但不保留暂存区的状态。即文件会被修改为未暂存的状态(git status 会显示“Changes not staged for commit”)。
    3. 完全撤销最近一次提交(删除提交的修改):

      git reset --hard HEAD~1
      
      • 这个命令会撤销提交并丢弃所有相关的修改,包括暂存区和工作区的文件变动。警告:使用 --hard 会丢失所有的本地更改,请确保你不再需要这些修改。
    各个选项的作用:
    • --soft:只撤销提交,保留文件更改,并将更改放回暂存区。
    • --mixed:撤销提交,并将更改放回工作区,不保留暂存区的状态。
    • --hard:撤销提交并丢弃所有文件更改(工作区和暂存区)。
    注意:
    • HEAD~1 表示你要撤销的是最近一次提交。如果你要撤销多个提交,可以使用 HEAD~n(例如,HEAD~2 表示撤销最近的两次提交)。
    • 如果已经推送到远端仓库,撤销提交时需要额外小心,避免影响远端仓库的历史。
  10. 标签操作

    创建标签

    在当前提交上创建一个标签:

    git tag <tag_name>
    
    推送标签

    将本地标签推送到远程仓库:

    git push origin <tag_name>
    
    查看标签

    查看当前仓库中的所有标签:

    git tag
    
    删除标签

    删除本地标签:

    git tag -d <tag_name>
    

    删除远程标签:

    git push origin --delete <tag_name>
    
  11. 查看和管理冲突

    查看文件冲突

    如果在合并或拉取时发生冲突,Git 会标记冲突文件,你可以通过 git status 查看冲突文件,并手动解决冲突。

    标记冲突已解决

    解决冲突后,添加冲突解决后的文件到暂存区:

    git add <file_name>
    
  12. 其他常用操作

    查看当前 Git 配置信息

    查看本地、全局和系统级别的 Git 配置:

    git config --list
    
    退出 Git 编辑器

    如果在编辑 commit 信息时想退出编辑器,可以使用以下命令:

    • vivim 中按下 :wq 保存并退出。
    • nano 中按下 Ctrl + X,然后选择 Y 保存。
    查找文件内容

    在仓库中查找特定内容:

    git grep "search_term"
    
样例
  1. 将仓库1的dev1分支合并到仓库2的dev2分支
    // 要将 仓库1 的 dev1 分支合并到 仓库2 的 dev2 分支,可以按照以下步骤进行操作。请注意,Git 本身是针对单个仓库进行管理的,因此需要将 仓库1 的内容拉取到 仓库2 中,然后执行合并操作。
    
    // 1.在仓库2中添加仓库1为远程仓库
    // 首先,在 仓库2 中添加 仓库1 作为远程仓库,这样才能从 仓库1 拉取 dev1 分支的代码。
    
    # 在仓库2中,添加仓库1作为远程仓库
    git remote add repo1 <仓库1URL>
        
    // 例如,如果 仓库1 是 GitHub 上的一个仓库,URL 可能是类似这样的:
    // git remote add repo1 https://github.com/user/repository1.git
    
    // 2.拉取仓库1的dev1分支
    // 拉取 仓库1 中的 dev1 分支到本地,并将其跟踪为一个远程分支。
    
    # 拉取仓库1的dev1分支
    git fetch repo1 dev1
    
    // 3.切换到仓库2的dev2分支
    // 确保当前所在分支是 仓库2 的 dev2 分支。
    
    # 切换到仓库2的dev2分支
    git checkout dev2
    
    // 4.将dev1分支合并到dev2分支
    // 将 仓库1 的 dev1 分支合并到 仓库2 的 dev2 分支。
    
    # 将仓库1的dev1分支合并到仓库2的dev2分支
    git merge repo1/dev1
    
    // 在此过程中,可能会遇到冲突,Git 会提示你进行冲突解决。解决冲突后,继续进行合并操作。
    
    // 5. 提交合并结果
    // 如果合并过程中没有冲突或冲突已解决,那么就可以提交合并结果。
    
    # 如果有冲突,解决冲突后使用git add标记为已解决
    git add <冲突文件>
    
    # 提交合并结果
    git commit -m "Merge dev1 branch from repository1 into dev2"
    
    // 6. 推送合并后的代码到仓库2的远程仓库
    // 合并完成后,你可以将 dev2 分支的最新代码推送到 仓库2 的远程仓库。
    
    # 将仓库2的dev2分支推送到远程仓库
    git push origin dev2
    

网站公告

今日签到

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