802.11b g n无线协议/g/n和802.11a/b/g/n/ac,还有802.11a/b/g/n有什么区别

代码优化(2)
Git是个了不起但却复杂的源代码管理系统。它能支持复杂的任务,却因此经常被认为太过复杂而不适用于简单的日常工作。让我们诚实一记吧:Git是复杂的,我们不要装作它不是。但我仍然会试图教会你用(我的)基本的Git和远程代码库干活的工作步骤,在15分钟内。
我会展示以下的步骤,通常能帮我独自在一台或多台机器上做项目。
安装Git & &
在大多数*nix系统(Linux、OS X)上,Git已经被安装了。你通过发送下面的命令,可以通过Git自身,把它更新到最新的的开发版本(不推荐)。
clone https://github.com/git/git
在Windows上,你可以在下载Git的安装程序。如果你真的需要其他系统的安装程序,Mac OS X安装文件在,Linux的操作指导在。
创建一个远程代码库
很多人喜欢用。我个人更喜欢,因为它提供了不限制的私有代码库,那是我最需要的。你可以将下列指令转换到Github上,这些过程是相同的。
那么,去到并注册一个账号。一旦完成,登录后点击最上方的“create(创建)”按钮。照着填写表格,勾选私有代码库。你可不想让其他人来偷窥你的Facebook的杀手级应用的源代码,对吧。
&你现在可以离开BitBucket了,我们在已经有了所有那里需要的东西了。
在我们能用Git工作之前,我们需要做个一次性的配置。为了Git能跟踪到谁做了修改,我们需要设置你的用户名。我强烈建议你使用与注册BitBucket账号相同的用户名和电子邮箱地址。发送这些命令,相应地替换掉其中的“your_username”和“your_”(注意引号):
config --global user.name &your_username&
config --global user.email your_
我们也会设定推送(push)的默认值为‘simple’。要了解这是什么意思,快速阅读我之前发布的(非必须)。发送这条命令:
config --global push.default simple
我们都设好了。你无需在你的机器上再重复这些配置,但如果你在另一台机器上工作的话,不要忘记这些配置。如果你忘记做初始的配置,Git不会允许你提交任何东西,这会让你困扰。
创建一个本地代码库
作为例子,我们会假装我们有一个网站(无所谓技术)存在于我们机器上的‘workspace’文件夹下的’my_site’文件夹内。在命令行中,去到你的站点的根文件夹。在OS X和Linux上:
~/workspace/my_site/
在Windows上:
c:\workspace\my_site
我们首先需要告诉Git这个文件夹是我们需要跟踪的项目。所以我们发送这个命令来初始化一个新的本地Git代码库
Git会在my_site文件夹内创建一个名为.git的隐藏文件夹,那就是你的本地代码库。
加载(Stage)文件
我们现在需要命令Git我们需要加载(stage)所有项目文件。发送:
最后的“.”符号的意思是“所有文件、文件夹和子文件夹”。假如我们只想要把特定文件添加到源代码控制中去,我们可以指定它们:
add my_file, my_other_file
现在,我们想要提交已加载(staged)的文件。阅读“添加一个时间点,在这里你的文件处在一个可还原的状态”。我们提交我们的文件时,总是附带着有意义的注释,描述了它们现在的状态。我一直用“initial commit”来作为第一个提交的注释。
commit -m &initial
就这样。现在你随时都可以回滚到这个提交状态。如果你有需要检查你现在的已加载(staged)和未加载(unstaged)文件的状态、提交等,你可以询问git的状态:
建立分支是你创建代码的独立版本的动作,独立于你的主干分支。默认地,每次你提交到Git的文件都会被储存到“master(主干)”分支。
现在我们来说说,你想要向项目里添加一个功能,但你想要能够回滚到现在版本,以防出现差错,或者你决定要放弃这个功能。这就是你创建分支的时候了。创建并同时切换到你新建的分支,发送:
checkout -b new_feature
或者,你可以先创建一个分支然后手动切换,就像这样:
branch new_featuregit checkout new_feature
要看你现在项目下所有的分支,发送这个:
现在你可以在你的项目上无所顾忌地做任何你想做的:任何时候,你都可以回到你创建分支前的状态。注意,你同时可以有多个分支,甚至可以从一个分支上再创建一个分支。
当你对你的新功能满意了的时候,你想要把它加到主干分支上。当你在你的新功能分支上时,你首先需要加载(stage)并且提交你的文件:
add .git commit -m &adds
my new feature&
然后你移到你的主干分支:
checkout master
像这样合并:
merge new_feature
此时,你的主干分支和你的新功能分支会变成一样的了。
相反,如果你打算丢弃你在分支里做的修改,你首先需要加载(stage)你的文件并且在分支里提交:
add .git commit -m &feature
to be discarded&
然后,你移到主干分支:
checkout master
现在,你的代码处于你创建分支之前的状态了。
删除一个分支
如果你要把你的分支合并到主干分支,从主干(master)分支上发送:
branch -d new_feature
假如修改已经合并了,它只会删除分支。假如分支没有合并,你会得到一个错误信息。删除一个未合并的分支(通常你不想保留的修改),你需要发送一样的命令附带一个大写D。意思是“强制删除分支,无论如何我不想要它了。”:
branch -D new_feature
回滚到之前的提交状态
在某些时候,你可能想要回到之前的代码版本。首先,你需要找到你想回到哪个版本。要看所有的完成了的提交,发送:
这会输出你的提交的历史记录,像这样:
ca82a6dff817ec66f90aAuthor: your_username your_Date:&& Mon Nov 4 12:52:11 &&& changes the frontpage layout
085bb3bcb608e1e2f8ecbeAuthor: your_username your_Date:&& Mon Nov 4 11:40:33 &&& adds my new feature
a11bef06a3f63abf99ad00de2209e6Author: your_username your_Date:&& Mon Nov 4 10:37:28 &&& initial commit
如果你想回到“adds my new feature”这个提交,简单地用提交的ID做签出(checkout)(我通常只用到ID开头的9个字符)
checkout 085bb3bcb
你也可以签出到一个新的分支,像这样:
checkout -b my_previous_version 085bb3bcb
只是别太疯狂了!你的分支越复杂,就越难确定你真正在做什么。
推送到远程代码库
在第一次你想推送一个本地代码库到远程代码库时,你需要把它添加到你的项目配置里。像这样做:
remote add origin https://your_username@bitbucket.org/your_username/name_of_remote_repository.git
注意这里的“origin”只是一个习惯。它是你的远程代码库的别名,但是你可以用其他任何你喜欢的词。你甚至可以有多个远程代码库,你只需要给它们起不同的别名。
之后,你想要推送你的本地代码库的主干分支到你的远程代码库:
push origin master
如果你使用Bitbucket,在这时,你会被请求输入你的密码。照做,你的本地代码库会被推送到你的远程代码库上。
取得远程代码库的一份本地拷贝
如果你还没有一份远程代码库的本地版本(例如,如果你在另一台机器上开始工作,这台机器上还没有用过这个项目),你首先需要拷贝(clone)它。去到你的代码库想要拷贝到的文件夹下,并发送:
clone https://your_username@bitbucket/your_username/name_of_remote_repository.git
另一方面,如果你已经在本地的项目上工作了,只是想从远程代码库上取得它最新的版本,移动到项目的根目录下,并发送:
pull origin master
Git允许你为你常用的命令创建快捷方式(别名)。例如,如果你不想每次都输入git commit -m “some comment”,而是输入git c “some comment”,你可以向你的git全局配置里添加一个别名来实现,像这样:
config --global alias.c
这是我使用的别名列表:
config --global alias.c
config --global alias.co
'checkout'
config --global alias.cob
config --global alias.br
config --global alias.m
config --global alias.a
config --global alias.s
config --global alias.dbr
当然,还有比这些更多的Git内容。如果你想要更了解Git,我推荐官方文档和教程,你可以在找到。
https://walle-web.io/docs/index.html
Walle 一个web部署系统工具,配置简单、功能完善、界面流畅、开箱即用!支持git、svn版本管理,支持各种web代码发布,PHP,Python,JAVA等代码的发布、回滚,可以通过web来一键完成。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:97217次
积分:1740
积分:1740
排名:千里之外
原创:27篇
转载:324篇
(1)(9)(15)(14)(49)(1)(7)(9)(13)(3)(38)(186)(10)1217人阅读
深入浅出Git(8)
认识远程版本库
本地版本库完成所有的更新后,就需要再更新到远程版本库。由于Git作为一个分布式版本控制系统,远程版本库实际上充当了异地协同办公的桥梁,从此再也不用担心代码丢失的问题了。之前我的博客就是一个使用git操作远程版本库的例子,大家可以作为参考。不过在这篇文章中,会去系统介绍操作远程版本库的内容。
说到远程版本库,大家最熟悉的就是Github了,Github实际上就相当与一个远程版本库,托管着所有的本地版本库的提交,同时也可以把Github上的内容拉取到本地,从而实现协同工作。在使用Git操作版本库使用最多的命令如下:
git remote
操作远程版本库
其实在之前的文章的演示中,实际上也使用到了以上的操作,比如将user1和user2的修改推送到共享版本库的操作就属于操作远程版本库的例子。在操作远程版本库这部分中,重点介绍的内容如下:
1、远程分支操作
2、远程版本库你知多少
3、git push和git pull
4、远程分支与里程碑
远程分支操作
在之前的演示中一个本地版本库关联的都是一个远程版本库,实际上一个本地版本库可以关联多个远程版本库。为了演示远程分支的操作,需要创建其他两个远程版本库,执行如下操作:
cd ../repos2/
git clone --bare hello-user1.git share.git
git clone --bare hello-user2.git share.git
这样就基于share版本库创建了两个新的版本库,为了演示需要,创建user3的工作环境:
mkdir user3
git clone file:///home/rhwayfun/java/notes/repos2/share.git project
查看远程share版本库的分支可以使用如下命令:
git ls-remote --heads file:///home/rhwayfun/java/notes/repos2/share.git
输出结果如下:
eb582daa12d565dde5c
refs/heads/hello-1.x
79d0a541cdf77a7403faad355b79cba8f5426cc1
refs/heads/master
79d0a541cdf77a7403faad355b79cba8f5426cc1
refs/heads/user2/dev
从输出结果可以看到远程版本库有三个分支:hello-1.x、master和user2/dev。通过命令git branch可以查看本地的分支为master,继续查看远程分支以及引用:
git branch -r
输出结果如下:
origin/HEAD -& origin/master
origin/hello-1.x
origin/master
origin/user2/dev
可以发现在远程版本库中明明有三个分支,而本地就只有master一个分支,实际上在本地已经把远程版本库的分支复制到了本地,只不过放在了另外的空间中,位于.git/refs/remotes/origin/目录下,这样可以避免如果在本地存在相同分支的情况发生分支覆盖的危险。前缀origin/表示这是来自远程版本库的分支或者引用,实际上这些都在.git/config这个配置文件中进行配置的。查看配置文件:
cat .git/config
输出结果为:
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote “origin”]
url = file:///home/rhwayfun/java/notes/repos2/share.git
fetch = +refs/heads/:refs/remotes/origin/
[branch “master”]
remote = origin
merge = refs/heads/master
这样就很清楚了,因为配置了remote小节,所以我们在使用git fetch等命令的时候才知道从哪里取最新的提交。注意到加粗的fetch后有一个+号,这个+号表示在执行远程操作获取最新的更新时会强制进行引用的替换,什么意思呢?就是执行git fetch时会自动补上后面的内容。所以实际在执行git fetch的完整命令如下:
git fetch origin +refs/heads/*:refs/remotes/origin/*
远程版本库的CRUD
远程版本库虽然也有分支,不是真正意义的分支,远程分支更像是类似里程碑的引用,因为在检出远程分支的时候会使得HEAD指针处理分离头指针的状态(DETACHED HEAD)。除了以refs/heads为前缀的引用之外,其他非任何检出都会导致分离头指针状态的出现。
另外,基于远程版本库的分支创建的本地分支会自动追踪远程版本库,也就是说,执行git pull、git push会自动推动到远程版本库同名非分支中。在之前文章的演示实例中,发现在本地的非master分支上执行git push等操作,是无法执行成功的,原因就在于Git找不到远程版本库同名的分支。
为了演示这个情形,在user3的工作区执行如下操作:
git checkout -b hello-1.x origin/hello-1.x
git branch
git reset --hard HEAD^^
git status
执行git status可以看到如下输出:
On branch hello-1.x
Your branch is behind ‘origin/hello-1.x’ by 2 commits, and can be fast-forwarded.
(use “git pull” to update your local branch)
nothing to commit, working directory clean
很清楚地告诉我们,当前分支的提交落后了远程的hello-1.x分支两个提交,这样也说明了基于远程分支创建的本地分支确实能够自动追踪远程版本库的同名分支。
之后user3在工作区执行如下操作,演示不基于远程分支创建本地分支的情况:
git checkout -b hello-rx hello-1.x
git reset --hard HEAD^^
git status
这回执行git status得到的输出如下:
On branch hello-rx
nothing to commit, working directory clean
其实,很好理解,基于本地分支创建非本地分支当然不能追踪到远程分支了,而如果需要对基于本地的分支创建的分支执行追踪(注意:追踪的不是远程分支了,而是该分支的父分支),只需要加上--track参数就可以。
同样在user3的工作区执行如下操作:
git branch -d hello-rx
git checkout master
git checkout --track -b hello-rx hello-1.x
git reset --hard HEAD^^
git status
这次加上--track参数执行git status后输出的结果如下:
On branch hello-rx
Your branch is behind ‘hello-1.x’ by 2 commits, and can be fast-forwarded.
(use “git pull” to update your local branch)
nothing to commit, working directory clean
从以上非演示中可以得出以下的结论:
基于远程分支创建的分支可以自动进行追踪
基于本地分支创建非分支默认不会进行追踪,除非加上--track参数
下面说说操作版本库的CRUD:
mkdir user4
git clone file:
git remote add my-origin file:
git remote -v
git remote
set-url my-origin file:
创建新的远程版本库实际上是在.git/config配置文件中做了如下设置:
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = file:///home/rhwayfun/java/notes/repos2/hello-user1.git
fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "my-origin"]
url = file:///home/rhwayfun/java/notes/repos2/hello-user1.git
fetch = +refs/heads/*:refs/remotes/my-origin/*
注意最后中括号的内容,就是我们创建的除了origin远程版本库之外的另外的版本库。
git push和git pull
这两个操作是操作远程版本库使用频率最高的命令了,当执行不带参数的git push命令时,执行的过程如下:
如果在.git/config配置文件中配置remote小节,那么在执行git push相当执行git push &remote&(&remote&可能是origin,也可能是创建的其他远程版本库)
如果没有配置remote小节,则相当于执行默认的git push origin
要推送的远程url由pushurl配置项指定,如果没有则使用remote小节的url地址作为推送的地址
执行不带参数的git pull命令时,执行的过程的前两个步骤与git push相同,只不过改成了git pull而已。如果另外创建的远程版本库指定了fetch参数配置项,则通过该参数的引用表达式作为fetch的url。
因为在执行git pull命令在发现远程版本库与本地版本库出现分离的情况时,会使用合并操作,于是会产生第三个提交,在上一篇文章中发现变基操作相比合并操作更优雅,如果需要配置git pull默认的合并策略为变基操作,可以使用如下命令:
git config branch.&branchname&.rebase true
远程分支与里程碑
在前面的演示中,可以发现如果一个开发者推送了新的里程碑的时候,另一个开发者执行git pull命令时会自动拉取该里程碑到本地,有时候这可能不是我们想要的。还有比如当执行push发生冲突的时候可以使用加上-f参数强制更新远程版本库,这在某些情况下是危险的,也可以通过设置禁止强制更新来阻止强制更新。
git fetch --no-tags file:home/rhwayfun/java/notes/repos/hello-user2.git refs/heads/*:refs/remotes/hello-user2/*
git config receive.denyNonFastForwards true
git config receive.denyDelete true
git config remote.user2.skipDefaultUpdate true
围绕远程版本库的操作进行了详细说明,包括执行git push和git pull等命令的执行过程,以及远程分支处理策略。通过实际演示说明了操作远程版本库需要注意的问题以及如何修改一些默认的Git行为。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:260123次
积分:4682
积分:4682
排名:第5445名
原创:197篇
转载:13篇
评论:201条
文章:12篇
阅读:11343
阅读:21619
(1)(1)(3)(5)(2)(2)(47)(45)(1)(93)(11)}

我要回帖

更多关于 802.11a 802.11b 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信