Linux之git命令

git命令小结


概论

Git的发展历史可以追溯到2005年,由Linux内核开发者Linus Torvalds创建。以下是Git的发展历程和其作用的简介:

  1. 诞生和发展: Git是作为解决Linux内核开发中遇到的问题而诞生的。由于Linux内核是一个大型开源项目,需要协调成千上万个开发者的工作。传统的集中式版本控制系统在处理大规模分布式开发时遇到了性能和可扩展性的问题。Git以分布式的方式管理代码,具有高效、灵活和强大的特性,因此逐渐受到了广泛的关注和采用。

  2. 分布式版本控制: Git是一种分布式版本控制系统,与传统的集中式版本控制系统不同。在Git中,每个开发者都可以拥有完整的代码存储库的副本,包括完整的历史记录。这使得开发者可以在本地进行快速的代码提交、分支操作和版本回退等操作,而无需依赖网络连接。每个开发者可以在本地独立工作,然后将更改推送到其他开发者的仓库中。

  3. 分支和合并: Git的一个重要特性是分支管理。通过创建分支,开发者可以在独立的代码环境中进行实验、添加新功能或修复错误,而不会影响主代码线。开发者可以轻松地创建、切换、合并和删除分支,使得团队协作更加灵活高效

  4. 版本控制和历史记录: Git跟踪文件和项目的变化,并记录每次提交的详细信息,包括作者、时间戳和提交消息等。这使得开发者可以轻松地查看项目的完整历史记录,了解每个提交的内容和目的。Git还提供了强大的比较工具,可以查看不同版本之间的差异,并进行代码审查和问题排查。

  5. 协作和远程仓库: Git支持远程仓库的创建和管理,开发者可以将本地仓库与远程仓库进行同步。这使得多个开发者可以共享代码、协同工作和解决冲突。通过推送(push)和拉取(pull)操作,开发者可以将本地的更改上传到远程仓库或获取远程仓库的最新更新。

Git的发展和普及使得它成为当今最流行的版本控制系统之一,广泛应用于各种软件开发项目和团队协作中。它的分布式特性、强大的分支管理和版本控制能力,以及开放的生态系统,使得开发者能够更高效、可靠地管理和协作开发项目。


一些代码托管平台

  1. AC git
    AC git 是一个与算法竞赛相关的代码托管平台。它提供了一个方便的环境,供竞赛选手分享、管理和讨论他们的代码。竞赛选手可以在 AC git 上创建自己的代码仓库,并与其他选手分享解决方案和经验。AC git 还提供了在线编译和评测功能,可以帮助竞赛选手测试他们的代码在不同输入情况下的表现(真的非常好用)
    http://git.acwing.com/
  2. Github
    GitHub 是一个广泛使用的代码托管平台,提供了版本控制、代码协作和项目管理的功能。它是基于 Git 的,并且提供了易于使用的界面和工具,方便开发者进行代码的共享、协作和追踪。GitHub 上托管的项目可以被其他开发者浏览、克隆和贡献,也可以用于团队协作和开源项目的管理(可能会有一点慢)
    https://github.com/
  3. Gitcode
    Gitcode 是一个面向开发者的代码托管平台,类似于 GitHub。开发者可以使用 Gitcode 创建和管理代码仓库,进行版本控制,并与其他开发者进行协作。Gitcode 提供了一系列的工具和功能,如代码审查、问题跟踪和持续集成,帮助开发者更好地组织和管理他们的项目。与其他平台相比,Gitcode 的特色之一是强调对代码质量和工程实践的关注,鼓励开发者共同提高代码的可维护性和可靠性(没用过,用过的可以评论说一下)
    https://gitcode.net/

git基本概念

  • ** 工作区(Working Directory)**: 工作区是指项目所在的目录,在该目录中进行代码编辑和修改。工作区包含了项目的所有文件和文件夹,但并不包括 Git 的版本控制信息。工作区是开发者直接进行操作和修改的区域。

  • 暂存区(Staging Area): 暂存区是位于 Git 仓库中的一个区域,用于暂时存放即将提交的文件变化。在进行代码提交之前,开发者可以选择将工作区的修改添加到暂存区。通过将文件添加到暂存区,开发者可以对将要提交的内容进行选择和精细控制。

  • 版本库(Repository): 版本库是 Git 仓库中存放所有已经提交的代码版本的地方。它包含了项目的完整历史记录,包括所有的提交、分支和标签信息。版本库存储在项目目录的 .git 文件夹中,它是 Git 进行版本控制的核心。

  • 版本结构(Version Tree): 版本结构是指 Git 中所有提交的代码版本形成的树状结构。每个提交(commit)都可以看作是版本树中的一个节点,它记录了该提交的父节点(上一个提交)和子节点(后续的提交)。通过版本结构,开发者可以清楚地看到每个提交的历史关系,以及分支和合并操作的变化。

  • 版本控制系统(Version Control System,VCS): Git 是一种版本控制系统,它记录和管理文件在不同时间点的变化。通过使用 Git,开发者可以追踪文件的修改、恢复旧版本、协同工作和合并不同的改动。

  • 仓库(Repository): Git 仓库是用于存储项目代码和历史记录的地方。它可以位于本地计算机或远程服务器上。每个仓库都包含完整的项目历史和所有文件的快照。

  • 提交(Commit): 提交是指将文件的变化保存到 Git 仓库中的操作。每次提交都包含一个唯一的标识符(commit ID)和提交者的信息。提交记录了文件的修改、添加或删除,并可以附带一条描述性的消息。

  • 分支(Branch): 分支是指在 Git 中创建的独立开发线,用于实现不同的功能或修复 bug。通过创建分支,开发者可以在不影响主线开发的情况下进行实验和修改。分支可以合并回主线或与其他分支进行合并。

  • 合并(Merge): 合并是指将一个分支的修改合并到另一个分支中。当开发者完成某个功能或修复一个 bug 时,可以将其所在分支的修改合并到主线或其他目标分支上,以确保代码的一致性。

  • 远程仓库(Remote Repository): 远程仓库是位于网络上的 Git 仓库,用于多人协同开发和备份代码。开发者可以将本地仓库的改动推送到远程仓库,或从远程仓库获取最新的更新。

  • 拉取(Pull)和推送(Push): 拉取是指从远程仓库获取最新的修改并合并到本地仓库中,以保持代码的同步。推送是指将本地仓库的修改推送到远程仓库,使其他开发者可以获取最新的代码。

git常用命令

全局设置

  1. git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中
  2. git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在~/.gitconfig文件中
  3. git init:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中
    常用命令
  4. git add XX :将XX文件添加到暂存区
    2. git commit -m "给自己看的备注信息":将暂存区的内容提交到当前分支
  5. git status:查看仓库状态
  6. git log:查看当前分支的所有版本
  7. git push -u (第一次需要-u以后不需要) :将当前分支推送到远程仓库
  8. git clone git@git.acwing.com:xxx/XXX.git:将远程仓库XXX下载到当前目录下
  9. git branch:查看所有分支和当前所处分支
    查看命令
  10. git diff XX:查看XX文件相对于暂存区修改了哪些内容
  11. git status:查看仓库状态
  12. git log:查看当前分支的所有版本
  13. git log --pretty=oneline:用一行来显示
  14. git reflog:查看HEAD指针的移动历史(包括被回滚的版本)
  15. git branch:查看所有分支和当前所处分支
  16. git pull :将远程仓库的当前分支与本地仓库的当前分支合并
    删除命令
  17. git rm --cached XX:将文件从仓库索引目录中删掉,不希望管理这个文件
  18. git restore --staged xx将xx从暂存区里移除
  19. git checkout — XX或git restore XX将XX文件尚未加入暂存区的修改全部撤销
    代码回滚
  20. git reset --hard HEAD^ 或git reset --hard HEAD~ :将代码库回滚到上一个版本
  21. git reset --hard HEAD^^:往上回滚两次,以此类推
  22. git reset --hard HEAD~100:往上回滚100个版本
  23. git reset --hard 版本号:回滚到某一特定版本
    远程仓库
  24. git remote add origin git@git.acwing.com:xxx/XXX.git:将本地仓库关联到远程仓库
  25. git push -u (第一次需要-u以后不需要) :将当前分支推送到远程仓库
  26. git push origin branch_name:将本地的某个分支推送到远程仓库
    4. git clone git@git.acwing.com:xxx/XXX.git:将远程仓库XXX下载到当前目录下
  27. git push --set-upstream origin branch_name:设置本地的branch_name分支对应远程仓库的branch_name分支
    6. git push -d origin branch_name:删除远程仓库的branch_name分支
  28. git checkout -t origin/branch_name 将远程的branch_name分支拉取到本地
  29. git pull :将远程仓库的当前分支与本地仓库的当前分支合并
  30. git pull origin branch_name:将远程仓库的branch_name分支与本地仓库的当前分支合并
  31. git branch --set-upstream-to=origin/branch_name1branch_name2:将远程的branch_name1分支与本地的branch_name2分支对应
    分支命令
  32. git branch branch_name:创建新分支
  33. git branch:查看所有分支和当前所处分支
  34. git checkout -b branch_name:创建并切换到branch_name这个分支
  35. git checkout branch_name:切换到branch_name这个分支
  36. git merge branch_name:将分支branch_name合并到当前分支上
  37. git branch -d branch_name:删除本地仓库的branch_name分支
  38. git push --set-upstream origin branch_name:设置本地的branch_name分支对应远程仓库的branch_name分支
  39. git push -d origin branch_name:删除远程仓库的branch_name分支
  40. git checkout -t origin/branch_name:将远程的branch_name分支拉取到本地
  41. git pull :将远程仓库的当前分支与本地仓库的当前分支合并
  42. git pull origin branch_name:将远程仓库的branch_name分支与本地仓库的当前分支合并
  43. git branch --set-upstream-to=origin/branch_name1branch_name2:将远程的branch_name1分支与本地的branch_name2分支对应
    stash暂存
  44. git stash:将工作区和暂存区中尚未提交的修改存入栈中
  45. git stash apply:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素
  46. git stash drop:删除栈顶存储的修改
  47. git stash pop:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素
  48. git stash list:查看栈中所有元素
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pigwantofly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值