git 学习笔记~



我下面的笔记是从廖雪峰博客学习而写的,这位前辈写得通俗易懂,真是十分佩服。here it is http://www.liaoxuefeng.com/
git 是一个分布式版本管理工具。
github是一个网站,你可以在上面找到别人托管到git上的项目。
github for Windows,是为了在windows操作系统下更方便地使用git(替代命令,因为你还不会下面这些).
创建版本库
  1.$ mkdir learngit //创建一个目录,准备做存项目的根目录
  2.$ git init       //把刚刚创建的根目录关联到git. 到这里就建好了版本库啦啦
加文件到Git仓库
  1、git add 1.txt;
  2. git commit -m "新增一个文件 1.txt"
想看看git的状态?
  git status
想看操作日志?
  git log
你已经知道了日志上的记录,如“新增一个文件 1.txt”,惨虽然看到了修改日志,但CRTL +z退出不了,别囧,q 试下?
如果能知道到底改了这文件的什么更好,有办法的,嘿嘿。
 git diff
好了,你清楚你改了什么东西,现在想把它上传,还是两步
  1、git add 1.txt
  2.git commit -m "second modify"
不好,改掉东西或需求变了,想回到历史版本?
HEAD 表示当前版本,HEAD^表示上个版本 HEAD^^上上个版本,上第100个呢?HEAD~100,哈哈。
所以git reset --hard HEAD^
问题是退到这版本后又想马上回到此版本的上一版本呢,那你往上翻刚刚git log的日志,找到那个commit id(id为很长的十六制)
设id=a0e2387bba…… git reset --hard a0e,嘿嘿你只需要输前面几个,最好多输几个避免id冲突,命令行也很人性化。
万一你已经关掉了命令窗口,还有办法找到这个id吗?
办法当然有,git reflog可以看到你所有的记录。


git管理的是修改,而非文件,怎样理解这句话呢?(假设你对文件1.txt改了改动后git add一下,这时之前的修改被加到一个暂
存区里了,此后你又对该文件作了改动,再git commit。对不起,版本库里只保存了你git add之前的修改。别急,你的工作没白费,
你可再次git add 一下,这时 git commit 就可以了)


你在本地用git建了个代码库,但你也许觉得远程也有份会更好,哈哈github派上场了。
你先在github上建个库A,再把本次的库B与之关联一好了.
git remote add A git@github.com:你在github的用户名/B.git
关联A B后,用git push -A master把所有东西一次性上传到远程仓库。以后每次上传远程只要 git push -关联的远程库名 master


如果你想clone github上一个项目,那 git clone git@github.com:用户名/库名.git 或git clone http://github.com/用户名/库名.git


分支,可以允许多人同时进行开发,互不影响。
git checkout -b branch1(分支名),这样一创建了一个分支branch1,并切换工作对象(姑且让我这样称呼)为branch1。
然后我在branch1分支上做了若干工作,比如改了几行代码,加多了几个文件后完成工作了,这时我想合并到原来的主干master上。
git checkout master,哦,你会发现,这里没有你在branch1上做的修改,也合理(因为你的工作是在branch1上的),所以这里要合并一下分支
git merge branch1,这样你在branch1的东东一会到master上了。此时,branch1没意义(也许有,但目前不知道)了,你通过 git branch -d branch1把它删了。
删掉,这时你再git branch将看不到branch1


冲突的处理:
假设你的在分支bra上对文件1.txt作了修改后提交没合并就切换回主分支git checkout master又对1.txt文件改动并提交。这时你对合并分支的时候,
就会提示冲突,解决的办法是 打开1.txt,找到<<<<<<<,=======,>>>>>>>标记出不同分支的内容,手动改下就可以解决冲突啦啦。这时你的再git add . git commit 
-m "fix conflict"即可。当然你还可通过 git log --graph查看分支合并情况。


分支策略:
master用来发布稳定版本的,平时不在这分支工作,而选择其他分支如bran1。
小伙伴们在各自的自己分支上工作,并时不时合并到分支bran1上,在需要发版本的时候,把bran1上的分支合并到master好了。
修复bug分支 假设你的在bran1上工作进行了一半,这时有个bug要修复?what do?如果我能把bran1的工作现场保存下来,然后建一个分支bug,等bug
修复后合并到master,然后再删掉这个bug分支,最后恢复现场继续在bran1上工作就好了。这个那么有用的策略,linus帮我们实现了。git stash保存
现场,然后建分支-》合并分支-》删分支总算解决这个bug了。git checkout bran1切换到要工作的分支,git stash pop哈哈恢复现场了。
多人协作:
git push 远程仓库名 本地工作分支 这样你就把修改往远程推送了,如果刚好你的其他小伙伴在你之前也推送了,这时你应该会推送失败,解决办法
是git pull抓取远程新提交的东西,如果有冲突你的还要手动解决冲突哦。再次推送应该成功了。
打tag版本:
以前做游戏的时候,经常要打一个什么绿色版,战魂版,华丽版的。运营商需要哪个版本的包,那就可以用哪个了。
git tag v1.0.2 这样就在当前HEAD上打了个版本v1.0.2,你还可以git tag -a 版本名 -m "版本描述" 等命令。打好tag用git tag可看到你的tag.
你可以git push 远程库名  标签名 推送一个本地标签。什么你的标签打错了要删?git tag -d 标签名删掉本地先,再git push 远程库名:refs/tags/标签名
删掉服务器的。


参与开源:
在GitHub上,可以任意Fork开源仓库;
然后克隆下来,pull request提交推送即可。


至此,git学习告一段落,再次感谢前辈廖雪峰~~~。

















评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值