Git常见命令
Published in:2024-01-16 | category: 兴趣 工具

Git 常用命令

核心概念

  • 工作区(Working Directory):包含当前代码的本地目录。

  • 暂存区(Staging Area 或 Index):一个保存下次将提交的文件列表的区域。

  • 仓库(Repository)Git 维护的项目的历史记录和版本数据。

基本命令

  1. 安装 Git
    访问 Git 官方网站下载安装程序,并按照指引完成安装。

  2. 配置 Git
    首次安装 Git 后,需要设置用户信息:

    1
    2
    git config --global user.name "Your Name"  
    git config --global user.email "your_email@example.com"
  3. 初始化新仓库
    创建一个新目录,打开终端,切换到该目录下,并输入:

    1
    git init  

    这将创建一个新的 .git 目录,包含所有必须的仓库文件。

  4. 克隆现有仓库
    如果要拷贝一个已经存在的Git仓库,例如从GitHub,使用:

    1
    git clone <repository_url>  
  5. 跟踪新文件
    使用 git add 命令来跟踪新文件或变更:

    1
    2
    git add <file_or_directory>  
    git add . # 添加当前目录下的所有变更
  6. 查看状态
    要查看哪些文件在暂存区,哪些有变更等,使用:

    1
    git status  
  7. 提交更改
    将暂存区的更改提交到仓库历史中:

    1
    git commit -m "A message describing the commit"  
  8. 查看提交历史
    要看你的提交历史,包括每个提交的详细信息:

    1
    2
    git log  
    git log --oneline # 简化的提交历史
  9. 撤销更改
    可以使用以下命令撤销更改:

    1
    2
    3
    git checkout -- <file> # 撤销工作目录中的更改  
    git reset HEAD <file> # 从暂存区中移除文件
    git reset --hard # 撤销自上次提交后的所有更改
  10. 分支

    分支是独立进行更改的工作流程。常用分支命令包括:

    1
    2
    3
    4
    git branch # 列出分支 
    git branch <new_branch> # 创建新分支
    git checkout <branch_name> # 切换分支
    git merge <branch_name> # 合并分支到当前分支
  11. 远程仓库

    远程仓库是托管在因特网或网络中的仓库。常用命令包括:

    1
    2
    3
    4
    git remote add <remote_name> <remote_url> # 添加远程仓库  
    git fetch <remote_name> # 从远程获取代码库
    git pull <remote_name> <branch_name> # 获取远程仓库的更改并合并到当前分支
    git push <remote_name> <branch_name> # 将代码的更改发送到远程仓库
  12. 解决合并冲突

    当不同的分支对同一文件的同一部分做出更改时,合并这些分支可能会出现冲突。Git 会标记出冲突的文件,需要人工解决这些冲突,然后重新提交。

    1
    2
    3
    # Git标记出的冲突文件需要手动编辑解决冲突,然后:  
    git add <resolved_file>
    git commit -m "Resolved merge conflict by incorporating both suggestions."
  13. 标签

    标签用于为特定的提交打上固定的标记,通常用于版本发布。

    1
    2
    3
    4
    git tag # 列出所有标签  
    git tag <tagname> # 轻量标签
    git tag -a <tagname> -m "version 1.0" # 带注释的标签
    git push --tags # 推送标签到远程仓库
  14. .gitignore文件

    .gitignore 文件用于指定不应提交到 Git 仓库中的无需跟踪的文件和目录。在该文件中可以添加规则来排除特定的文件或模式。

    1
    2
    3
    4
    # .gitignore example  
    *.log
    node_modules/
    .DS_Store
  15. 比较仓库

    git diff 用于比较文件或仓库之间的差异。通过比较两个仓库之间的不同。

    1
    git diff <repo1> <repo2>

高级使用

  1. 交互式暂存(Interactive Staging)
    可以使用交互式添加功能来部分暂存文件。

    1
    git add -p  
  2. 撤销提交(Amending Commits)
    如果需要修改最后一次提交,可以使用 --amend 选项。

    1
    git commit --amend  
  3. 衍合提交(Squashing Commits)
    使用 rebase 命令的交互模式可以合并多个提交。

    1
    git rebase -i HEAD~<number_of_commits>  
  4. 子模块(Submodules)
    当项目中包含外部仓库时,可以使用子模块来管理这些依赖。

    1
    git submodule add <repository> <path>  
  5. 回滚到特定的提交(Reverting Commits)
    如果需要撤销之前的提交,并将这次撤销作为新的提交,可以使用revert命令。

    1
    git revert <commit_hash>  
  6. Cherry-picking
    从其他分支拾取一个特定的提交到当前分支。

    1
    git cherry-pick <commit_hash>  
  7. stash(暂存工作)
    当你需要临时切换分支,但当前分支上的工作尚未完成时,可以使用 stash 来保存当前的工作进度,稍后再恢复。

    1
    2
    3
    4
    5
    git stash # 暂存当前的更改  
    git stash list # 列出所有的stash
    git stash apply # 应用最近的stash
    git stash drop # 删除最近的stash
    git stash pop # 应用最近的stash并删除
  8. Git Hooks
    Git 钩子(hooks)是在特定的重要动作发生时触发的脚本,如在提交前运行测试,或在推送后通知CI/CD系统。钩子脚本通常位于.git/hooks目录下,并且可以自定义。

  9. 配置别名(Aliases)
    如果某个Git命令你使用得非常频繁,可以配置一个别名来缩短命令。

    1
    2
    3
    4
    git config --global alias.co checkout  
    git config --global alias.br branch
    git config --global alias.ci commit
    git config --global alias.st status
  10. 交互式Rebase
    通过交互式Rebase可以编辑多个提交,如改变提交的顺序,合并提交,修改提交信息等。

    1
    git rebase -i <commit_hash_or_HEAD>
  11. 查找问题(Blame and Bisect)

    使用 git blame 可以查看文件的每一行是谁在什么时候添加的。

    1
    git blame <file>

    使用git bisect可以通过二分查找的方式快速定位引入bug的提交。

    1
    2
    3
    4
    5
    git bisect start 
    git bisect bad # 标记当前版本是坏的
    git bisect good <commit_hash> # 标记某个提交之前的版本是好的
    # Git会自动检出一个新的提交供你测试,直到找到引入bug的提交
    git bisect reset # 结束bisect会话
  12. 大文件存储(Git LFS)

    对于大文件,如视频、图片和其他二进制文件,可以使用Git Large File Storage(LFS)来更有效地管理。

    1
    2
    git lfs install # 首先安装Git LFS 
    git lfs track "*.psd" git add .gitattributes # 跟踪大文件
  13. 工作流(Workflows)

    了解并选择合适的工作流程对于团队协作来说非常重要。常见的Git工作流包括:

    • Feature Branch Workflow

    • Gitflow Workflow

    • Forking Workflow

    • Centralized Workflow

Prev:
Docker常见用法
Next:
PyTorch常见用法