Git知识整理

本文详细介绍如何使用Git进行版本控制,包括基本操作、分支管理、远程仓库同步等内容。

一、 建库


设置自己的名字及email

<span style="font-size:14px;color:#666666;">$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"</span>

创建一个版本库

<span style="font-size:14px;color:#666666;">$ mkdir learngit
$ cd learngit
$ pwd
/Users/michael/learngit</span>

二、初始化

初始化一个Git仓库,使用git init命令。

添加文件到Git仓库,分两步:

第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件;如:git add readme.txt

第二步,使用命令git commit,完成。如:git commit -m "wrote a readme file"


三、Git操作

1.修改文件,然后把修改提交到Git版本库。如对readme.txt进行修改后:

git status 查看仓库当前的状态。

git diff 查看修改的内容 。如:git diff readme.txt

git add添加文件。如:git add readme.txt

git commit提交修改。如:git commit -m "add another sentence"


2.版本回退

git log查看历史记录,若要使每次修改在一行显示:git log --pretty=oneline

若需是readme.txt回退到上一个版本:

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交3628164...882e1e0(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

回退:git reset --hardHEAD^

查看:cat readme.txt

若要返回到新版本:

  窗口未关闭:git reset --hard 6a85173(这是提交的id)

窗口已关闭:通过git reflog 查看提交id


3.工作区和暂存区

learngit就是一个工作区,有一个隐藏的.git目录,即版本库,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。

你可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性提交暂存区的所有修改。

3.管理修改

4.撤销修改

情况分为三种

1.修改之后未add直接使用git checkout -- readme.txt(撤销工作区的修改)

2.修改之后add了先git reset -- HEAD .txt(撤销暂存区的修改)后git checkout -- readme.txt(撤销工作区的修改)

3.commit之后git reset -- hard HEAD^版本回退

4.删除文件

git rm test.txt

git commit -m "remove test.txt"


四、远程仓库


Git是分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上。

由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置。


1.添加远程库:

1.首先,登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库。

2.添加远程库,库名默认origin

$ git remote add origin git@github.com:yanlingwang/learning.git
3.把本地库的所有内容推送到远程库上:
$ git push -u origin master
把本地库的内容推送到远程,用git push命令,实际上是把当前分支master推送到远程。

从现在起,只要本地作了提交,就可以通过命令:

$ git push origin master

把本地master分支的最新修改推送至GitHub。

在本操作中,我遇到了一个问题,如下:


尝试重新输入后遇到另一个问题:


解决办法:



成功!GitHub页面中看到远程库的内容已经和本地一模一样。


若遇到另一个错误fail to push some rifs to git,解决方案:

       出现错误的主要原因是github中的README.md文件不在本地代码目录中,可以通过如下命令进行代码合并【注:pull=fetch+merge]
  git pull --rebase origin master
  执行上面代码后可以看到本地代码库中多了README.md文件

2.从远程库克隆:

git clone https://github.com/yanlingwang/pagetest

五、分支管理

1.创建和合并分支

首先,创建dev分支,然后切换到dev分支:


<span style="color:#666666;">$ git checkout -b dev
Switched to a new branch 'dev'</span>


git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'
<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; white-space: pre-wrap; background-color: rgb(255, 255, 255);">然后,用</span><code style="font-size: 12px; font-family: Consolas, monospace, serif; white-space: nowrap; padding: 0px 4px; border: 1px solid rgb(221, 221, 221); border-radius: 3px; background: rgb(250, 250, 250);">git branch</code><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; white-space: pre-wrap; background-color: rgb(255, 255, 255);">命令查看当前分支:</span>
<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; white-space: pre-wrap; background-color: rgb(255, 255, 255);"></span><pre name="code" class="plain">$ git branch
* dev
  master
 
  

git branch命令会列出所有分支,当前分支前面会标一个*号。

然后,就可以在dev分支上正常提交,比如对readme.txt做个修改,加上一行,然后提交。

现在,dev分支的工作完成,就可以切换回master分支:

$ git checkout master
切换回master分支后,再查看一个readme.txt文件,刚才添加的内容不见了!因为那个提交是在dev分支上,而master分支此刻的提交点并没有变。应当把dev分支的工作成果合并到master分支上,

$ git merge dev
git merge命令用于合并指定分支到当前分支。合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

合并完成后,就可以删除dev分支了:

$ git branch -d dev
Deleted branch dev (was fec145a).
<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; white-space: pre-wrap; background-color: rgb(255, 255, 255);">删除后,查看</span><code style="font-size: 12px; font-family: Consolas, monospace, serif; color: rgb(221, 0, 85); white-space: nowrap; padding: 0px 4px; border: 1px solid rgb(221, 221, 221); border-radius: 3px; background: rgb(250, 250, 250);">branch</code><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; white-space: pre-wrap; background-color: rgb(255, 255, 255);">,就只剩下</span><code style="font-size: 12px; font-family: Consolas, monospace, serif; color: rgb(221, 0, 85); white-space: nowrap; padding: 0px 4px; border: 1px solid rgb(221, 221, 221); border-radius: 3px; background: rgb(250, 250, 250);">master</code><span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; white-space: pre-wrap; background-color: rgb(255, 255, 255);">分支了:</span>
<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; white-space: pre-wrap; background-color: rgb(255, 255, 255);"></span><pre name="code" class="plain">$ git branch
* master

 
  

因为创建、合并和删除分支非常快,所以Git鼓励你使用分支完成某个任务,合并后再删掉分支,这和直接在master分支上工作效果是一样的,但过程更安全。

$ git push origin test:master         // 提交本地test分支作为远程的master分支
$ git push origin test:test              // 提交本地test分支作为远程的test分支

删除一个远程分支:git push origin --delete 分支名

提交本地分支到另一个远程库分支:git remote add <另一个远程仓库名> <另一个远程仓库url>
                                                      git push <另一个远程仓库名> <本地分支名>:<另一个远程仓库分支名>

合并分支:git checkout <本地分支>
                 git rebase master
                 手动修改冲突后,git add
                 继续下一步冲突显示,git rebase --continue,直到没有冲突
                 git commit -m "xxx"

六、其它

git branch 查看本地分支

git branch -r 查看远程分支

git branch -a 查看所有分支

git log 查看所有的commit

git stash 查看临时文件的变动

git pull 取回远程库某个分支的更新,再与本地的指定分支合并。完整命令如下:
git pull <远程主机> <远程分支>:<本地分支> 如:git pull origin yanling:master 将远程库的yanling分支与本地master分支合并。
若合并的本地的当前分支,则可省略为 git pull <远程主机> <远程分支>, 如git pull origin yanlilng

git push 将本地分支的更新推送到远程库。完整命令如下:
git push <远程主机> <本地分支>:<远程分支>
git push origin master 将本地master分支推送到远程库的master分支,如果后者不存在,将被新建。
git push -u origin master 若当前分支和多个主机存在追踪关系,则使用-u指定一个默认主机,这里指定origin为默认主机。

git remote -v  查看远程库的url

git remote show <remote> 查看远程库的信息,如git remote show origin

git remote add <remote> <url> 添加新的远程库 ,如 git remote add origin xxxx

git remote set-url <remote> <url>这种情况是远程代码仓库更改域名,路径等.导致远程地址变化,我们需要更新git远程仓库地址,如git remote set-url origin xxxx

git push --set-upstream origin master
git中存在upstream和downstream,简言之,当我们把仓库A中某分支x的代码push到仓库B分支y,此时仓库B的这个分支y就叫做A中x

分支的upstream,而x则被称作y的dowgit中存在upstream和downstream,简言之,当我们把仓库A中某分支x的代码push到仓库B分支

y,此时仓库B的这个分支y就叫做A中x分支的upstream,而x则被称作y的downstream,这是一个相对关系,每一个本地分支都相对地

可以有一个远程的upstream分支(注意这个upstream分支可以不同名,但通常我们都会使用同名分支作为upstream)。nstream,这

是一个相对关系,每一个本地分支都相对地可以有一个远程的upstream分支(注意这个upstream分支可以不同名,但通常我们都会

使用同名分支作为upstream)。

初次提交本地分支,例如git push origin develop操作,并不会定义当前本地分支的upstream分支,我们可以通过git push --set-upstream origin develop,关联本地develop分支的upstream分支,另一个更为简洁的方式是初次push时,加入-u参数,例如git push -u origin develop,这个操作在push的同时会指定当前分支的upstream。
(git branch --set-upstream origin master?)


豌豆代理(又称豌豆 IP)是一款一站式国内代理 IP 服务平台,主打高匿名、低延迟、高可用的 IP 资源,支持 HTTP/HTTPS/SOCKS5 协议,适配 Windows、Mac、Android、iOS 多平台。 多类型 IP 资源与高覆盖节点 提供动态住宅 IP、静态独享 IP、数据中心 IP,覆盖全国 200 + 城市,可用率 99%+;支持省市精准选择或全国混拨,适配不同业务合规与稳定性需求。 使用:在客户端 “节点 / 线路” 页,按城市 / 类型筛选,一键连接目标 IP,适合爬虫、电商多账号运营等场景。 秒级 IP 切换与灵活调度 支持手动一键切换、秒级动态切换(切换速度低至 100ms)、定时切换(自定义时长),并自动过滤重复 IP,避免重复使用导致风险。 使用:在 “设置” 中开启 “自动切换” 并设时间间隔,或按 Ctrl+Q 快捷键一键换 IP,适配反爬虫、批量测试等高频切换场景。 全协议支持与多端适配 兼容 HTTP/HTTPS/SOCKS5 主流代理协议,可对接浏览器、爬虫脚本、客户端软件;支持 Windows、Mac、安卓、iOS 多端同步使用,跨设备无缝切换。 使用:在客户端 “协议设置” 选择对应协议,生成代理地址与端口,直接填入目标软件即可生效。 隐私安全与数据加密 自研传输加密技术保护数据传输,搭配高匿名 IP 隐藏真实地址,同时支持自动清除 Cookie / 缓存,降低隐私泄露与追踪风险。 使用:在 “安全设置” 中开启 “数据加密” 与 “自动清理缓存”,公共 WiFi 环境下优先启用,提升隐私防护等级。 智能筛选与稳定网络优化 系统自动筛选低延迟、高可用 IP,过滤失效 / 重复地址;依托自建纯净机房与独享带宽,搭配 BGP 多线接入,保障连接稳定性与速度。 使用:无需手动配置,客户端默认智能匹配合适节点,复杂网络环境可在 “网络
在网络高速发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地,而且人们越来越追求更个性的需求。在这种时代背景下,商家只能以用户为导向,以商品的持续创新作为商家最重要的事项。 在新发展的时代,人们对幼儿资源互助共享平台越来越重视,才能实现幼儿资源互助共享平台的有效发挥,本文将通过幼儿资源互助共享平台的信息,分析在日常生活中对幼儿资源互助共享平台存在哪些问题探讨出进一步提升效率,管理能力的对策。 系统采用了Java技术,将所有模块采用以浏览器交互的模式,选择MySQL作为系统的数据库,来进行系统的设计。基本实现了幼儿资源互助共享平台应有的主要功能模块,本系统有管理员:首页、个人中心、用户管理、卖家管理、咨询师管理、萌宝信息管理、幼儿知识管理、保姆推荐管理、音频资源管理、二手商品管理、商品分类管理、资源分类管理、交流论坛、系统管理,用户;首页、个人中心、萌宝信息管理、保姆推荐管理、音频资源管理,卖家;首页、个人中心、二手商品管理、订单管理,咨询师;首页、个人中心、幼儿知识管理,前台首页;首页、萌宝信息、幼儿知识、保姆推荐、音频资源、二手商品、交流论坛、个人中心、后台管理、购物车等功能。 对系统进行测试后,改善了程序逻辑和代码。同时确保系统中所有的程序都能正常运行,所有的功能都能操作,本系统的开发获取幼儿资源互助共享平台信息能够更加方便快捷,同时也使幼儿资源互助共享平台信息变的更加系统化、有序化。系统界面较友好,易于操作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值