初识Github

Github

搞了一下午,大概知道怎么操作github,记录一下。
 
 
1.遵循官方文档 https://help.github.com/articles/set-up-git#platform-linux,一步步配置好环境。用户名,密码,密码缓存等等。
 
 
2.创建一个Repository。(可参见 这里 
 
 
点击这里,创建一个Repository。创建Public的for free,Private的for fee,穷屌丝就算了。
 
当然也可以用命令行创建,先get一个curl,然后调用git api 去创建。参看这里
 
OK,如果看了上面的可参见 那里基本这个过程就知道了,一步一步做行。这里主要解释一下一点概念。
 
 
什么是repo?
 
Git stores all of your project files in a  repository . If you are able to view hidden files on your system, you'll see a subdirectory called ".git" in the project directory where you run  git init . This is where Git stores all of your commits, as well as everything else it needs. In addition to your local, you can also have remote repositories (like GitHub repos). Remote repositories are the same as your local repository, but stored on a different server or computer for easy collaboration, backup, and general awesomeness.
 
与SVN相比,Github主要不同的是就是分布式,什么意思,简单的就是说,都知道SVN提交代码是直接往服务器那里提的,任何修改都会在SVN server那里得到体现,但这里有一个问题,对于一个开源项目而言,感觉这就是悲剧性的,想一想,每一次commit代码前,已经有可能几百人几千人在你前面commit了代码,然后当你看到那一堆红(conflict)的时候,你和你的小伙伴们都肯定惊呆了。当然,作为一个版本管理工具,Github其实也有这个过程,因为肯定需要往一个集中的地方commit,merge等等,但是这个过程前,还有一个过程SVN没有的,就是往自己本地提交代码。这个意味着,你开发的东西是在你自己分支上开发的,不会影响到任何的人,而且别人也不会影响到你,当需要和代码时,只要将自己分支的代码合并到主线(master)上就ok了。至于本地仓库是在哪里,如果看了上面的英文就知道,当git init之后,目录下就会有一个子目录叫做.git,这里就是你的本地仓库。
 
基本过程就是,你所有的代码修改都先提交到本地的仓库里,然后如果要合并到master,那么就需要拉取master的代码,如果conflict,就解决掉,然后merge,然后commit到本地仓库,这个时候你就已经从自己的分支返回到master分支上,然后提交(push)到远程服务器就over了。
 
这里简单掌握几条command就行:
 
git add
git commit
git push
git remote
 
说一下git remote,其他自己git xxx --help去。
git remote有一个option -v,可以列出当前所有的远程repository。
 
git remote还有很多的commands,例如git remote add,rm,rename等等。
给个例子:
怎么理解remote,官方的解释是
 

A remote is a repository stored on another computer, in this case on GitHub's server. It is standard practice (and also the default when you clone a repository) to give the name originto the remote that points to your main offsite repository (for example, your GitHub repository).

Git supports multiple remotes. This is commonly used when forking a repository.

 

 

,其实可以把它就理解为远程仓库吧,用于存放代码的地方,就这么简单,它的url类似于 https://github.com/octocat/your-repository.git。它是一个本地的概念,只要url是对的,你可以对他任意的命名,fuck,suck都没有问题,它的名字可以作为标识用,例如往服务器提交代码时
git push origin master
 
 
3.Fork 一个repo
 
什么是fork,为什么git搞这些无厘头的东西,呵呵。
其实这个东西很容易理解,哪里见过fork,写C的时候见过,干什么的,创建(fork)子进程,fork出来的子进程和父进程有什么关系,就是共享text segment,copy父进程的heap,stack,data's space,但是不同的就是pid。好吧,你就这样理解git的这个fork吧,看来IT的东西都是想通的。fork就是按照original的repo创建了一个你自己的repo,初始fork出来的时候,所有的东西都是一样的,除了“pid”,你的repo的git url是
 
 
original的url是
 
 
就这个不同了。
 
怎样fork可以看 这里,具体过程就不描述了。
 
 
刚刚fork出来的repo默认有一个remote叫做origin,用git remote -v可以查看到其url。类似是这样的
 

https://github.com/your-name/nginx.git

 
 
而问题来了,如果你自己无论更新或者提交都用的是这个remote,那永远不会有冲突,呵呵,原因很简单,你在闭门造车,自己搞自己的。master的代码即使更新了,而你更新的是这个remote那肯定是更新不到的,所以如果需要(一般都是需要的)更新,那就添加一个remote,命名为upstream,url可能是这样的,具体根据具体的项目的git url确定,例如nginx的original repo地址为
 
git remote add upstream  https://github.com/git-mirror/nginx.git
 
然后利用这个地址就可以更新了到最新代码了。
 
说一下更新,更新一般有两个步骤,先fetch,然后merge,如果想一步到位就直接pull。
fetch的意思就是从remote repo拉代码到本地repo,如果要有冲突就需要merge代码了,而pull会自动帮你fetch代码下来,并在你没有review过代码之前,尝试自动帮你merge代码到当前的工作目录中,一般不建议直接pull,而是先fetch,再手动merge。
 
基本的github操作就是这样,其他用到再慢慢研究下。
 
 
附部分命令:
 
Git常用操作命令收集:
1) 远程仓库相关命令
检出仓库:$ git clone git://github.com/jquery/jquery.git
查看远程仓库:$ git remote -v
添加远程仓库:$ git remote add [name] [url]
删除远程仓库:$ git remote rm [name]
修改远程仓库:$ git remote set-url --push [name] [newUrl]
拉取远程仓库:$ git pull [remoteName] [localBranchName]
推送远程仓库:$ git push [remoteName] [localBranchName]
 
* 如果想把本地的某个分支test提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:
$ git push origin test:master         // 提交本地test分支作为远程的master分支
$ git push origin test:test              // 提交本地test分支作为远程的test分支
 
2)分支(branch)操作相关命令
查看本地分支:$ git branch
查看远程分支:$ git branch -r (如果还是看不到就先 git fetch origin 先)
创建本地分支:$ git branch [name] ----注意新分支创建后不会自动切换为当前分支
切换分支:$ git checkout [name]
创建新分支并立即切换到新分支:$ git checkout -b [name]
直接检出远程分支:$ git checkout -b [name] [remoteName] (如:git checkout -b myNewBranch origin/dragon)
删除分支:$ git branch -d [name] ---- -d选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:$ git merge [name] ----将名称为[name]的分支与当前分支合并
合并最后的2个提交:$ git rebase -i HEAD~2 ---- 数字2按需修改即可(如果需提交到远端$ git push -f origin master 慎用!)
创建远程分支(本地分支push到远程):$ git push origin [name]
删除远程分支:$ git push origin :heads/[name] 或 $ git push origin :[name]
 
* 创建空的分支:(执行命令之前记得先提交你当前分支的修改,否则会被强制删干净没得后悔)
$ git symbolic-ref HEAD refs/heads/[name]
$ rm .git/index
$ git clean -fdx
 
3)版本(tag)操作相关命令
查看版本:$ git tag
创建版本:$ git tag [name]
删除版本:$ git tag -d [name]
查看远程版本:$ git tag -r
创建远程版本(本地版本push到远程):$ git push origin [name]
删除远程版本:$ git push origin :refs/tags/[name]
合并远程仓库的tag到本地:$ git pull origin --tags
上传本地tag到远程仓库:$ git push origin --tags
创建带注释的tag:$ git tag -a [name] -m 'yourMessage'
 
4) 子模块(submodule)相关操作命令
添加子模块:$ git submodule add [url] [path]
    如:$ git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
初始化子模块:$ git submodule init  ----只在首次检出仓库时运行一次就行
更新子模块:$ git submodule update ----每次更新或切换分支后都需要运行一下
删除子模块:(分4步走哦)
1) $ git rm --cached [path]
2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉
3) 编辑“ .git/config”文件,将子模块的相关配置节点删除掉
4) 手动删除子模块残留的目录
 
5)忽略一些文件、文件夹不提交
在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如
target
bin
*.db
 
6)后悔药
删除当前仓库内未受版本管理的文件:$ git clean -f
恢复仓库到上一次的提交状态:$ git reset --hard
回退所有内容到上一个版本:$ git reset HEAD^
回退a.py这个文件的版本到上一个版本:$ git reset HEAD^ a.py
回退到某个版本:$ git reset 057d
将本地的状态回退到和远程的一样:$ git reset –hard origin/master 
向前回退到第3个版本:$ git reset –soft HEAD~3
 
7)Git一键推送多个远程仓库
编辑本地仓库的.git/config文件:
[remote "all"]
    url = git@github.com:dragon/test.git
    url = git@gitcafe.com:dragon/test.git
这样,使用git push all即可一键Push到多个远程仓库中。
 
 
----------------------------------另外---------------------------------------
 
1. 从工程删除文件后,想删除的文件从仓库中删除,不要直接
git rm -r .
这会将当前目录下所有的文件删除,而是要
git rm -r --cache .
如果真的不慎执行了第一步,那只能
git reset --hard HEAD
回退到最后一次commit了。
 
不断更新。。。
下载前可以先看下教程 https://pan.quark.cn/s/a4b39357ea24 Job-Recommend 蚂蚁集团招聘内推(校招、社招) 校招 蚂蚁集团 2023届实习生招聘开始啦~ 蚂蚁集团是中国最大的移动支付平台【支付宝】的母公司,也是全球领先的金融科技开放平台,致力于以科技推动包括金融服务业在内的全球现代服务业的数字化升级。 我们团队归属于支付宝事业群商家开放技术部,整个大团队致力于打造蚂蚁级的开放、产品、商户等通用业务平台,实现全局业务能力与商家资源的开放共享,对内助力于商家、用户、机构等服务体系构建,对外以小程序、生活号等为抓手激活支付+X的金融生活开放生态。 我们团队是城市化策略技术部,依托于亿级的商家及用户数据,通过数据、算法、工程构建城市智能决策网络及策略体系。 我们有耐心逗比的师兄,有温柔细致的师姐,有丰富多彩的团队活动,也有各式各样的员工关怀,快来联系我们吧! ! ! 招聘对象: 11-2023.10毕业的应届毕业生 招聘流程: 简历投递->在线笔试及测评->面试->发放实习offer->实习入职 岗位类型: 【Java研发岗位】 岗位要求: 本科及以上学历,计算机、通信、数据科学与大数据技术等相关专业。 熟练掌握java技术,对多线程、数据结构等有清晰的认识。 掌握常用数据结构、算法、设计模式,熟悉MySQL/Oracle数据库等关系型数据库。 具备较强的编程能力、数据分析能力、问题排查能力,工作主动,学习能力强。 【数据工程/数据挖掘岗位】 岗位要求: 1、对分布式计算有较深的认识, 熟练使用spark,hadoop等处理海量用户行为数据。 2、熟练运用python、shell等脚本编程语言。 3、熟练掌握概率论与数理统计者优先。 4...
博物馆信息化建设的背景与意义 博物馆作为征集、典藏、陈列和研究自然与人类文化遗产的重要场所,其信息化建设是适应信息时代发展的必然趋势。 现代博物馆不再局限于藏品展示与研究,而是面向社会提供文化教育、信息咨询的综合性服务机构。 通过计算机技术与博物馆工作的深度融合,信息化建设能够提升业务管理水平,推动藏品管理、展陈模式及公众服务的智能化转型。 例如,局域网建设、数据库技术应用、多媒体展陈及电子政务的引入,不仅优化了内部资源管理,还拓展了公众获取文化资源的渠道,使博物馆教育功能更高效、覆盖范围更广泛。 博物馆信息化建设的核心内容与实践 博物馆信息化建设涵盖网络基础设施、信息化系统及数字化系统三大板块。 网络基础设施包括互联网接入、局域网与WLAN建设,为数据共享提供稳定支撑;信息化系统聚焦藏品管理、环境监控及智能导览等,通过RFID技术、物联网平台及多媒体互动展示,实现藏品全生命周期管理与观众体验升级;数字化系统则通过网上博物馆、虚拟现实技术等,打破时空限制,构建沉浸式文化传播场景。 例如,三维动态成像技术可复原远古文物,电子导览系统支持多语种个性化服务,温湿度监控系统精准保护藏品环境。 此外,依赖电子政务平台实现无纸化办公,降低运营成本,推动博物馆低碳发展。 整体而言,信息化建设通过技术赋能,使博物馆成为更具活力与影响力的文化枢纽。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值