赞
踩
Git的发展历史可以追溯到2005年,由Linux内核开发者Linus Torvalds创建。以下是Git的发展历程和其作用的简介:
诞生和发展: Git是作为解决Linux内核开发中遇到的问题而诞生的。由于Linux内核是一个大型开源项目,需要协调成千上万个开发者的工作。传统的集中式版本控制系统在处理大规模分布式开发时遇到了性能和可扩展性的问题。Git以分布式的方式管理代码,具有高效、灵活和强大的特性,因此逐渐受到了广泛的关注和采用。
分布式版本控制: Git是一种分布式版本控制系统,与传统的集中式版本控制系统不同。在Git中,每个开发者都可以拥有完整的代码存储库的副本,包括完整的历史记录。这使得开发者可以在本地进行快速的代码提交、分支操作和版本回退等操作,而无需依赖网络连接。每个开发者可以在本地独立工作,然后将更改推送到其他开发者的仓库中。
分支和合并: Git的一个重要特性是分支管理。通过创建分支,开发者可以在独立的代码环境中进行实验、添加新功能或修复错误,而不会影响主代码线。开发者可以轻松地创建、切换、合并和删除分支,使得团队协作更加灵活高效。
版本控制和历史记录: Git跟踪文件和项目的变化,并记录每次提交的详细信息,包括作者、时间戳和提交消息等。这使得开发者可以轻松地查看项目的完整历史记录,了解每个提交的内容和目的。Git还提供了强大的比较工具,可以查看不同版本之间的差异,并进行代码审查和问题排查。
协作和远程仓库: Git支持远程仓库的创建和管理,开发者可以将本地仓库与远程仓库进行同步。这使得多个开发者可以共享代码、协同工作和解决冲突。通过推送(push)和拉取(pull)操作,开发者可以将本地的更改上传到远程仓库或获取远程仓库的最新更新。
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 config --global user.name xxx
:设置全局用户名,信息记录在~/.gitconfig文件中git config --global user.email xxx@xxx.com
:设置全局邮箱地址,信息记录在~/.gitconfig文件中git init
:将当前目录配置成git仓库,信息记录在隐藏的.git文件夹中git add XX
:将XX文件添加到暂存区 git commit -m "给自己看的备注信息"
:将暂存区的内容提交到当前分支git status
:查看仓库状态git log
:查看当前分支的所有版本git push -u (第一次需要-u以后不需要)
:将当前分支推送到远程仓库git clone git@git.acwing.com:xxx/XXX.git
:将远程仓库XXX下载到当前目录下git branch
:查看所有分支和当前所处分支git diff XX
:查看XX文件相对于暂存区修改了哪些内容git status
:查看仓库状态git log
:查看当前分支的所有版本git log --pretty=oneline
:用一行来显示git reflog
:查看HEAD指针的移动历史(包括被回滚的版本)git branch
:查看所有分支和当前所处分支git pull
:将远程仓库的当前分支与本地仓库的当前分支合并git rm --cached XX
:将文件从仓库索引目录中删掉,不希望管理这个文件git restore --staged xx
:将xx从暂存区里移除git checkout — XX或git restore XX
:将XX文件尚未加入暂存区的修改全部撤销git reset --hard HEAD^ 或git reset --hard HEAD~
:将代码库回滚到上一个版本git reset --hard HEAD^^
:往上回滚两次,以此类推git reset --hard HEAD~100
:往上回滚100个版本git reset --hard 版本号
:回滚到某一特定版本git remote add origin git@git.acwing.com:xxx/XXX.git
:将本地仓库关联到远程仓库git push -u (第一次需要-u以后不需要)
:将当前分支推送到远程仓库git push origin branch_name
:将本地的某个分支推送到远程仓库 git clone git@git.acwing.com:xxx/XXX.git
:将远程仓库XXX下载到当前目录下git push --set-upstream origin branch_name
:设置本地的branch_name分支对应远程仓库的branch_name分支 git push -d origin branch_name
:删除远程仓库的branch_name分支git checkout -t origin/branch_name
将远程的branch_name分支拉取到本地git pull
:将远程仓库的当前分支与本地仓库的当前分支合并git pull origin branch_name
:将远程仓库的branch_name分支与本地仓库的当前分支合并git branch --set-upstream-to=origin/branch_name1branch_name2
:将远程的branch_name1分支与本地的branch_name2分支对应git branch branch_name
:创建新分支git branch
:查看所有分支和当前所处分支git checkout -b branch_name
:创建并切换到branch_name这个分支git checkout branch_name
:切换到branch_name这个分支git merge branch_name
:将分支branch_name合并到当前分支上git branch -d branch_name
:删除本地仓库的branch_name分支git push --set-upstream origin branch_name
:设置本地的branch_name分支对应远程仓库的branch_name分支git push -d origin branch_name
:删除远程仓库的branch_name分支git checkout -t origin/branch_name
:将远程的branch_name分支拉取到本地git pull
:将远程仓库的当前分支与本地仓库的当前分支合并git pull origin branch_name
:将远程仓库的branch_name分支与本地仓库的当前分支合并git branch --set-upstream-to=origin/branch_name1branch_name2
:将远程的branch_name1分支与本地的branch_name2分支对应git stash
:将工作区和暂存区中尚未提交的修改存入栈中git stash apply
:将栈顶存储的修改恢复到当前分支,但不删除栈顶元素git stash drop
:删除栈顶存储的修改git stash pop
:将栈顶存储的修改恢复到当前分支,同时删除栈顶元素git stash list
:查看栈中所有元素Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。