前端git常用命令

149 阅读7分钟
  1. 仓库设置和配置

    • git init: 初始化一个新的Git仓库。
    • git clone [url]: 克隆(下载)一个项目和它的整个版本历史。
  2. 工作流基本操作

    • git add [file]: 添加一个文件或更改作为即将提交的内容。
    • git commit -m "[commit message]": 提交你的更改和对做出这些更改的解释。 在Git中,如果需要修改最近一次提交的信息,可以使用 git commit --amend 命令。如果你想要修改更早之前的提交,可以使用交互式的rebase命令。
      • 修改最近的一次提交信息 如果只是想要更改最后一次提交的信息,可以使用下面的命令:

        git commit --amend -m "新的提交信息"
        

        如果想要修改提交信息并同时在默认的文本编辑器中修改其他细节,可以省略 -m 参数:

        git commit --amend
        

        这会打开文本编辑器(通常是 Vim 或者 Git 配置中指定的),在这里可以修改提交信息。保存并关闭编辑器后,提交就会被更新。

      • 修改较早以前的提交信息,如果要修改较早期的提交信息,可以使用交互式rebase。首先,需要知道要修改的提交在HEAD之前的位置。比如,如果想要修改前3次提交,可以这样执行:

        git rebase -i HEAD~3
        

        这会打开一个列表,在默认文本编辑器中,列出了这3次提交。每行前面都有一个命令(默认是 pick)和提交的哈希值。 找到想要修改信息的提交,并把该行开始的 pick 改成 reword 或者简写为 r。然后保存并关闭编辑器。Git会逐个打开你想要修改的提交,让你更改提交信息。

        请注意 这会改变那些提交的哈希值,所以只应该在尚未推送到远程仓库的提交上执行这些操作,或者在确定没有其他人基于那些提交的工作的情况下。如果已经把提交推送到了远程仓库,需要强制推送(使用 git push --force)。在团队环境中,这可能会导致问题,因为它会覆盖远程仓库中的历史记录,所以推荐在这之前和团队成员沟通。修改提交的信息是一种改变项目历史的操作。进行这类操作时一定要谨慎,以避免潜在的合并问题和数据丢失。

    • git status: 显示工作目录和暂存区的状态。
    • git log: 显示提交历史。
    • git diff: 显示工作目录和暂存区的差异。
  3. 分支与合并

    • git branch: 列出你的所有本地分支。
    • git branch [branch-name]: 创建新分支。
    • git checkout [branch-name]: 切换到指定分支并更新工作目录。
    • git merge [branch]: 将指定分支的历史合并到当前分支。
    • git branch -d [branch-name]: 删除指定分支。
    • 切换到指定的远程分支
      • 在 Git 中,如果你想要切换到一个远程分支,你需要先了解远程分支在本地的引用情况。通常,远程分支会以 origin/branch-name 的形式存在,其中 origin 是远程仓库的默认名称,branch-name 是远程分支的名称。

    以下是切换到指定远程分支的步骤: 1. 获取最新的远程分支列表: sh git fetch origin 2. 检查远程分支列表,确认你要切换的分支是否存在: git branch -r 3. 如果你还没有创建一个跟踪远程分支的本地分支,你可以使用 git checkout 命令来创建并切换到该分支: sh git checkout -b branch-name origin/branch-name 上面的命令会创建一个名为 branch-name 的新的本地分支,这个本地分支会自动跟踪对应的 origin/branch-name 远程分支。

         4. 如果你已经有了一个本地分支并且希望它跟踪一个远程分支,你可以使用 `git branch` 命令来设置上游(跟踪)关系:
            ```sh
            git branch --set-upstream-to=origin/branch-name branch-name
            ```
         5. 一旦设置了跟踪关系,你可以简单地使用 `git checkout` 命令来切换到本地分支:
            ```sh
            git checkout branch-name
            ```
         6. 要想拉取远程分支的最新改动并合并到当前分支,可以使用 `git pull`:
            ```sh
            git pull
            ```
     - 注意:在执行这些操作之前,确认你的工作区是干净的,即没有未提交的改动,避免在切换分支时产生冲突。如果有未提交的改动,你可能需要先提交或者暂存这些改动。
         从 Git 2.23 开始,你还可以使用 `git switch` 命令来更直观地切换分支:
         ```sh
         git switch -c branch-name --track origin/branch-name
         ```
         这里的 `-c` 选项表示创建新分支,`--track` 表示设置为跟踪远程分支。如果本地分支已经存在,并设置了正确的上游分支,你可以直接切换:
         ```sh
         git switch branch-name
         ```
    
  4. 更新和发布

    • git remote add [alias] [url]: 添加一个新的远程Git仓库。
    • git fetch [alias]: 下载远程分支和数据。
    • git merge [alias]/[branch]: 合并远程分支到当前分支。
    • git push [alias] [branch]: 上传分支到远程仓库。
    • git pull: 获取并合并远程服务器到当前分支。
  5. 回溯错误

    • git reset [file]: 取消暂存文件。
    • git reset --hard [commit]: 回滚到指定提交。
    • git revert [commit]: 取消指定提交的更改并创建一个新的提交。
    • git log --oneline: 简洁显示提交历史,易于浏览。
    • git checkout -- [file]: 丢弃工作目录中的改动。
  6. 查看历史和状态

    • git log --stat: 显示每次提交的文件修改统计信息。
    • git log --graph: 在日志输出中包含ASCII图形表示的分支合并历史。
    • git log -p: 通过补丁显示每次提交引入的差异。
  7. 暂存/储藏

    • git stash: 暂时存储所有已修改的跟踪文件。
    • git stash pop: 应用最近一次储藏的内容。
  8. 标签

    • git tag: 列出所有标签。
    • git tag [name][commit]: 给特定提交打上标签。
  9. 日志查看 git log

    git log --name-status

    查看提交作者和修改的文件
    使用此命令时,Git 会按照提交时间顺序显示每个提交的哈希值、作者、日期和提交信息,以及受到更改的文件列表和这些文件的状态(如添加(A)、修改(M)或删除(D))。
    如果想要查看特定提交或特定时间范围、特定作者的更改,可以增加额外的选项到 `git log` 命令中。例如,查看过去一周的更改:
    
    ``` bash
    git log --name-status --since="1 week ago"
    

    或者查看特定作者的更改:

    git log --name-status --author="Your Name"
    
    
  10. 操作记录查看 git reflog

Git reflog是一个命令,它显示了本地仓库的引用日志(reflog)。引用日志记录了HEAD指针在不同提交上的移动情况。这可以帮助你查看和恢复你的工作的历史,即使那些没有被任何分支或标签指向的提交。
使用git reflog的基本命令是:

```
git reflog
```

这将显示HEAD在最近一些操作中的移动。例如:

```
1c002dd (HEAD -> master, origin/master, origin/HEAD) HEAD@{0}: commit: Add new feature
abcd123 HEAD@{1}: merge feature-branch: Fast-forward
1234abc HEAD@{2}: checkout: moving from feature-branch to master
```
每一行显示了引用日志的一个条目,包括提交的哈希值,任何相关引用的名称,HEAD的位置(例如HEAD@{0}),操作类型以及操作的描述。

如果你想查看特定分支的引用日志,可以使用:

```
git reflog show <branch-name>
```

例如:

```
git reflog show feature-branch
```
这将显示feature-branch分支的引用日志。

如果你想查看在一定时间范围内的引用日志,你可以使用:

```
git reflog --since=<date> --until=<date>
```

例如,查看过去一周内的引用日志:

```
git reflog --since="1 week ago"
```

git reflog是恢复丢失的工作的极其有用的命令,例如当你误删了一个分支或者使用rebase做了一些改动时。通过查看引用日志,你可以找到丢失的提交并用git checkout或git reset命令恢复它们。

举例来说,如果你意外地删除了一个分支,可以通过以下步骤恢复:

1. 使用git reflog找到删除分支的最后一个提交。

2. 使用git checkout -b <new-branch-name> <commit-hash>来创建一个新分支并切换到那个提交处。

3. 现在你有了一个指向那个丢失的提交的新分支。

git reflog只跟踪你本地仓库的引用移动.

如果你不熟悉这些命令,请使用 git help <command> 来获取更详细的帮助信息