Skip to content
本页内容

下载安装

https://git-scm.com/downloads

设置账户

  • 设置用户名

    bash
    git config --global user.name "yourname"
  • 设置邮箱

    bash
    git config --global user.email "youremail"

初始化仓库

  • 将项目初始化git仓库

    bash
    git init

添加文件到暂存区

  • 添加指定文件,可以多个文件,用空格隔开

    bash
    git add file1 file2
  • 添加全部文件

    bash
    git add .
    bash
    git add -A

    git add .git add -A 的区别

    • git add .:这个命令会将当前目录及其子目录下的所有改动(包括修改过的和新添加的文件)添加到暂存区。但是它不会处理那些已经被 Git 跟踪但在工作树中被删除的文件。换句话说,如果你删除了一个已经被跟踪的文件,这个删除操作不会被 git add . 自动记录到暂存区中。
    • git add -A:这是更全面的选项,它等同于同时使用了 git add .git add -u。也就是说,它不仅会添加新的和修改过的文件到暂存区,还会标记那些在工作树中被删除的已被跟踪的文件。因此,它能够确保所有类型的更改(新增、修改、删除)都被考虑并添加到了暂存区。

    为了确保涵盖所有情况,使用 git add -A 是一个更为保险的选择

提交文件

  • 提交文件到版本库

    bash
    git commit -m '提交说明'
  • 修改 commit 备注

    bash
    git commit --amend

查看状态

bash
git status

比较差异

bash
git diff filename

查看日志

  • 查看日志

    bash
    git log
  • 显示一行的简略信息

    bash
    git log --pretty=oneline
  • 显示每次提交的差异信息,按 ctrl + f 进行翻页查看差异

    bash
    git log -p
  • 自定义显示格式

    • bash
      git log --pretty=format:"%h - %an, %ar : %s"
    • bash
      git log --pretty=oneline
  • 查看某次提交修改了哪些文件

    bash
    git show --name-only [commit]
  • 查看文件列表而不需要其他详细信息,可以使用 --name-only 参数

    bash
    git diff-tree --no-commit-id --name-only -r [commit]
  • 将git输出保存到txt文件

    bash
    git log --encoding=GB2312 --pretty=format:"%h - %an, %ad : %s" --date=format:'%Y-%m-%d %H:%M:%S' >> C:\Users\admin\Desktop\temp_log.txt

撤销更改

  • 撤销最近的一次提交,并将该提交的更改放回暂存区

    bash
    git reset --soft HEAD^

    这里,HEAD^ 表示当前提交的前一个提交。执行这条命令后,Git 会将你的头指针移动到 HEAD^ 这个提交,但是不会改变工作目录和暂存区,所以你最近一次提交的所有更改将会被保留在暂存区中。

  • 完全撤销最后一次提交,并让所有更改都回到未暂存的状态:

    可以使用 --mixed 选项(这是 git reset 的默认选项):

    bash
    git reset HEAD^
    # 或者明确指定:
    git reset --mixed HEAD^

    更改将会被保留在工作目录中,但会被取消暂存,意味着你需要重新选择哪些更改需要再次被添加到暂存区

  • 取消之前通过 git add 命令对特定文件所做的“添加到暂存区”的操作

    bash
    git reset HEAD 文件名
  • 丢弃工作目录中对指定文件的未提交更改,将该文件恢复到最近一次提交,不会影响 add 添加到暂存区的文件

    bash
    git checkout -- filename

版本回退

  • 退回到上个版本

    bash
    git reset --hard HEAD^
  • 退回到上上个版本

    bash
    git reset --hard HEAD^^
  • 退回到之前100个版本

    bash
    git reset --hard HEAD~100
  • 退回指定版本,版本号不需要写全,写前面几位即可

    bash
    git reset --hard 版本号
    
    # 例如
    git reset --hard 1094a

移除版本库中文件的追踪

  • 移除 .env 文件的git追踪

    1. 停止追踪文件但不删除文件

      使用 git rm --cached 命令来停止对指定文件的追踪。这个命令会将文件从索引(即暂存区)中移除,但是保留工作目录中的文件。对于 .env 文件,可以这样做:

      bash
      git rm --cached .env

      如果是整个目录下的所有 .env 文件,可以使用以下命令:

      bash
      git rm -r --cached path/to/env/files/
    2. 更新.gitignore文件

      为了确保 .env 文件不会在未来被意外地添加到版本库中,你应该在项目的 .gitignore 文件中加入相应的忽略规则。比如,在 .gitignore 文件中添加一行:

      .env

      或者如果你想忽略特定目录下的所有 .env 文件,可以添加类似如下的一行:

      path/to/env/files/*.env
    3. 提交更改:完成以上两步之后,你需要提交这些更改

      bash
      git commit -m "停止追踪.env文件"
    4. 通知团队成员

      确保让你的团队知道 .env 文件已经被移除了版本控制并且应该被添加到各自的 .gitignore 文件中,这样他们就不会意外地将其重新添加到仓库中

远程仓库

查看远程仓库

bash
git remote

查看远程仓库及对应地址

bash
git remote -v

添加远程仓库

bash
git remote add <shortname> <url>

从远程仓库中抓取与拉取

  • git fetch

    bash
    git fetch <remote>
    • 作用git fetch 命令会访问远程仓库,并将远程仓库中的更新拉取到本地仓库的远程分支(比如 origin/master),但不会自动合并这些更新到当前所在的分支。
    • 使用场景:当你想要查看远程仓库中有哪些更新,但是暂时不想把这些更新合并到你的工作中时,可以使用这个命令。它允许你在合并之前先审查这些变化。
    • 优点:由于它不会自动进行合并,因此给了你更多的控制权来决定如何处理这些更新,例如你可以选择性地合并某些变更或在合并前解决可能的冲突。
  • git pull

    • 作用git pull 实际上是一个组合命令,相当于先执行了 git fetch 然后再执行 git merge(或者在配置了 rebase 的情况下执行 git rebase)。也就是说,它不仅会下载远程仓库的最新数据,还会尝试将那些更新合并到你的当前分支中。
    • 使用场景:当你确定想要将自己的工作与远程仓库的最新状态同步,并且愿意接受合并带来的任何潜在冲突时,可以使用 git pull
    • 优点:简化了获取并集成远程更改的过程,适合于希望快速同步最新代码而不介意立即处理合并冲突的情况。

推送到远程仓库

bash
git push <remote> <branch>

# 示例
git push origin master

查看远程仓库

bash
git remote show <remote>

# 示例
git remote show origin

远程仓库的重命名与移除

  • 修改一个远程仓库的简写名

    bash
    git remote rename <old name> <new name>
  • 移除一个远程仓库

    bash
    git remote remove <name>
    
    # 或者
    git remote rm <name>

修改本地 git 仓库的 remote 地址

bash
git remote set-url origin <remote_url>

# 示例
git remote set-url origin https://github.com/username/demo.git