从这里开始的git系列均分享自以下网站:
https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud
git init
git init 会在项目的根文件夹创建一个.git文件夹。svn就不一样了,svn会在每个子文件夹都搞个.svn。加上--separate-git-dir--separate-git-dir
参数就可以把这个.git文件夹怼到别的地方去。
如果你已经在某个文件夹init过一次了,再init一次不会产生什么影响。
git init --bare
一般模式下,git init会创建一个.git文件,这种模式下你还可以看见其它的文件。但是在裸库情况下,只有.git文件,你查看其它文件的时候需要用特殊的命令git show
来查看。一般而言bare模式用来建立远端的仓库,大家把操作push到这里,而不是直接操作本地文件(也没得给你操作)。
git init directory --template=template_directory
从某个文件夹里复制文件过来并init。注意当你不指定某个temp文件的时候,会自动从你的usr/share/git-core/templates里复制文件过来(Windows就不一样咯)。可以利用这个特性,让每次建立仓库都带有一些默认的文件,比如.ignore。
git clone
顾名思义,从别的仓库(本地或远端)复制文件到某个新的地方。
每个人都可以成为中心仓库,你可以从别人那里clone东西下来。一般而言,如上文所说,中心仓库只是一个bare-repo而已。
当你创建和远端的联系的时候,会在.git文件夹下的refs/remotes/origin下创建文件,并初始化remote.origin.url和remote.origin.fetch参数(.git/config文件中)。
git clone -branch tagname reponame
对某个tag进行clone。
浅clone
git clone -depth=1 repo-name
只获取最新版本的拷贝,不去获取历史。好处是可以减少硬盘支出。
获取某个分支
git clone -branch new_feature git://remoterepository.git
一般而言clone会拿到远端的head,也就是master分支,加了这个之后就可以自由获取别的分支啦。
--mirror和--bare
都是中心仓库用的,先别管。
git clone --template=template_directory repo_location
等同于init的template。
Git URLs
包括三种协议:-ssh, -git, -http。
git config
可以进行全局设置或者本地(本项目)设置。
三种级别
- --local 默认是这个,保存在.git/config里
- --global Unix的~ /.gitconfig或者Windows的C:\Users\username.gitconfig里,像你的名字
- --system C:\ProgramData\Git\config里
修改某个值
git config --global user.email "your_email@example.com"
试验了一下似乎不能local改user.name的,改了会直接改到global的user里面去,贼坑。
设置编辑器
git config --global core.editor "atom --wait"~
git config --global core.editor "vim"
git config --global core.editor "'c:/program files/sublime text 3/sublimetext.exe' -w"
git config --global core.editor emacs
在这里你可以把emacs设置为环境变量。
设置合并处理器
git config --global merge.tool kdiff3
别名
设置git config --global alias.x1 commit
然后你就可以使用git ci
来提交东西了。你还可以连着设置,给别名设置别名git config --global alias.x2 x1 --xxx
,结果x2就代表x1 --xxx了。
网友评论