gitpro之一

从这里开始的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 "[email protected]"
试验了一下似乎不能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了。

你可能感兴趣的:(gitpro之一)