Git是一种一般用于管理代码的版本控制系统,与之处于同一level上的还有svn,cvs等。它既可以在本地使用,又可以通过网络服务器进行远程管理,常见的远程服务供应商有github和bitbucket等。
当然对于刚起步者来说,也可以简单地将git看作这么一个东西:
这个隐藏文件夹一般都会是你整个repo(仓库——表示一整个项目,本地会存储在对应项目名的文件夹下)中最占空间的,但要知道它包含着你以往所有commit过的版本信息,只要这个文件夹完整,你的历史commit过的各个版本永远都不会丢。
原因很简单——永远不要把鸡蛋放在一个篮子里。放在本地的git仓库随时都面临着各种可能导致数据丢失的危险,一旦关键的.git
数据丢失,以往的版本都将一去不复返,更何况一般丢数据都是整个项目一起挂掉的。
<HEAD>
,以及你当前本地文件信息,判断出你到底做出了哪些改动;通过将改动add
到<HEAD>
中,就会更新到你的新版本信息中,然后通过commit
即可生成新的版本,这整个过程是增量式的,不会说改动后还存在任何垃圾,而且所有的改动只需正常在本地添加、删除、修改文件即可。当然,git也并不是万能的,在merge
两个版本时它也会面临着不可能完美解决的问题——两个版本的文件保留哪个?但git会产生diff
信息,以便于手工选择保留的部分。fork
机制,漂亮实用的界面,还有gist
等功能,无疑是开源项目搭载平台的首选。但其免费功能中不包括私有仓库,也就是说你的所有代码都是公开的。如果有私有仓库的需求,推荐bitbucket,对于个人或者小团体的私有项目可以充分满足需求,而且有国内的cdn,访问速度比github快。当然,两个网站都支持搭建个人主页,可参见我的博客搭建笔记。 以下部分都以github平台为例。
C:\Program Files\Git\cmd
添加到环境变量中去。git config --global user.name "username"
git config --global user.email "email"
github右上角
然后导入到本地即可编辑
github和bitbucket的仓库中都会提供https链接和ssh链接以供导入
区别在于https无须任何设置,但任何远程操作需要提供账号密码作为凭据; ssh需要在本地生产ssh-key,这样你的机器拥有唯一的key可以免账号密码验证直接与远程交互。入门推荐https。
本地git-bash或cmd中在合适位置使用类似git clone https://github.com/zhyack/test.git
的命令从github上获取仓库内容,链接换成自己的。
这样远程的仓库就拿到本地了。
使用git status查看当前处于哪个分支,以及本地文件改动情况。
<HEAD>
中,添加个别文件用git add <file path>
,但一般都是添加所有改动git add .
git add
添加改动,但又后悔对某个文件的改动,可以使用git checkout <file path>
对文件进行回撤git add
,但又后悔所做的改动,可以使用git reset HEAD
使<HEAD>
回滚到原来的状态,但文件内容是没有发生改变的。git add
之后如果确定要提交/保存这次改动就使用git commit进行提交,一般命令形式为git commit -m "..."
,其中最后的字串为附加信息,随意填写。git commit
之后会产生一个版本号commit_id
,历史的版本号可以使用git log
查看到,如果后悔了最近的某一次/几次提交,可以使用git reset --hard commit_id
来进行回撤,但注意--hard 回撤会删除对应commit的所有改动,无法找回;如果只是想将版本号前移而不希望本地文件有任何改动,可以不加--hard
,也就是git reset commit_id
,但回撤掉的commits
还是无法找回的。origin/master
,所以提交的命令为git push origin master
git push
之后,要记得在另外一台机器做出本地改动之前进行git pull来同步远程,一般命令为git pull origin master
,否则你可能会面临着要手动merge
的窘境。以上内容可以满足基本需求,体验git的更多便利可以继续往下看...
git add
的控制,具体参见博文origin/master
,不会影响原仓库;但如果你认为你的改动有助于原项目的改善,可以向原项目发送pull request
,原仓库的持有者会受到消息并判断是否要将你的改动并入原仓库。fork
原分支是在你的账户下的一个远程分支,原仓库的持有者可以选择是否merge
。Copyright © 2015-2016 zhyack. All Rights Reserved.
如对文章有任何疑问,请移步问题聚集区一览~