Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。
在执行完成 git init命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变(不像 SVN会在每个子目录生成 .svn目录,Git 只在仓库的根目录生成 .git 目录)。
[root@Git ~]# ls -a
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .pki .tcshrc .viminfo
[root@Git ~]# git init ##初始化(新建)git使用当前目录作为Git仓库,我们只需使它初始化。
Initialized empty Git repository in /root/.git/
[root@Git ~]# ls -a #查看,git为隐藏文件
. .. anaconda-ks.cfg .bash_history .bash_logout .bash_profile .bashrc .cshrc .git .pki .tcshrc .viminfo
[root@Git ~]# cd .git/
[root@Git .git]# ls
branches config description HEAD hooks info objects refs
如果使用我们指定目录作为Git仓库。
[root@Git ~]# git init newrepo
初始化后,会在 newrepo 目录下会出现一个名为.git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
如果当前目录下有几个文件想要纳入版本控制,需要先用 git add 命令告诉 Git 开始对这些文件进行跟踪,然后提交:
[root@Git ~]# git add *.c
[root@Git ~]# git add README
[root@Git ~]# git commit -m '初始化项目版本'
以上命令将目录下以 .c 结尾及 README 文件提交到仓库中。
[root@Git .git]# tree
.
├── branches #项目分支信息
├── config #Git项目配置信息
├── description #Git项目描述信息
├── HEAD #指向当前分支的末端
├── hooks #默认的hooks脚本,由特定事件触发
│ ├──applypatch-msg.sample
│ ├──commit-msg.sample
│ ├──post-update.sample
│ ├──pre-applypatch.sample
│ ├──pre-commit.sample
│ ├──prepare-commit-msg.sample
│ ├──pre-push.sample
│ ├──pre-rebase.sample
│ └──update.sample
├── info #内有exclude文件:指定git要忽略的文件
│ └── exclude
├── objects #Git数据对象:commit、tree、blob、tag
│ ├── info
│ └── pack
└── refs #Git引用:指向(远程)分支、标签的指针
├── heads
└── tags
9 directories, 13 files
[root@Git .git]# tree
.
├── branches #项目分支信息
├── config #Git项目配置信息
├── description #Git项目描述信息
├── HEAD #指向当前分支的末端
├── hooks #默认的hooks脚本,由特定事件触发
│ ├──applypatch-msg.sample
│ ├──commit-msg.sample
│ ├──post-update.sample
│ ├──pre-applypatch.sample
│ ├──pre-commit.sample
│ ├──prepare-commit-msg.sample
│ ├──pre-push.sample
│ ├──pre-rebase.sample
│ └──update.sample
├── info #内有exclude文件:指定git要忽略的文件
│ └── exclude
├── objects #Git数据对象:commit、tree、blob、tag
│ ├── info
│ └── pack
└── refs #Git引用:指向(远程)分支、标签的指针
├── heads
└── tags
9 directories, 13 files
[root@Git .git]# git config --global user.name"syaving"
[root@Git .git]# git config --global user.email"[email protected]"
[root@Git .git]# git config --global color.ui true
[root@Git .git]# git config --global alias.it init
[root@Git .git]# git config --global alias.olog"log --pretty=oneline"
[root@Git .git]# git olog
e435fe88da4d214f5256130e720b1faf21f0f011 add readme
2525062715ac09c1da5d5e5b8d2294200d33e791 add readme
--global:修改全局配置文件,去配置~/.gitconfig
用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
--system:修改所有用户的配置文件:/etc/gitconfig
系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
无参数:修改本仓库配置文件: .git/config
这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
[root@Git ~]# pwd
/root
[root@Git ~]# rz ## 上传git-bash-completion-master.zip
[root@Git ~]# ls
anaconda-ks.cfg git git-bash-completion-master.zip
[root@Git ~]# unzipgit-bash-completion-master.zip ##解压git-bash-completion-master.zip
Archive: git-bash-completion-master.zip
d1d25024c4a68f7724a1876598664f13c01aac19
creating:git-bash-completion-master/
inflating:git-bash-completion-master/README.markdown
inflating:git-bash-completion-master/git-completion.bash
[root@Git ~]# ls
anaconda-ks.cfg git git-bash-completion-master git-bash-completion-master.zip
[root@Git ~]# cd git
[root@Git git]# cd ..
[root@Git ~]# cd git-bash-completion-master/
[root@Git git-bash-completion-master]# ls
git-completion.bash README.markdown
[root@Git git-bash-completion-master]# mvgit-completion.bash ..
[root@Git git-bash-completion-master]# ls
README.markdown
[root@Git git-bash-completion-master]# cd ..
[root@Git ~]# ls
anaconda-ks.cfg git-bash-completion-master git-completion.bash
git git-bash-completion-master.zip
[root@Git ~]# rm -rf git-bash-completion-master*
[root@Git ~]# ls
anaconda-ks.cfg git git-completion.bash
[root@Git ~]# source ~/git-completion.bash #
[root@Git ~]# echo source ~/git-completion.bash>> ~/.bashrc ##加入环境变量
[root@Git ~]# source ~/.bashrc ##
设置Git默认使用的文本编辑器, 一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的话,可以重新设置::
[root@Git .git]# git config --global core.editoremacs
还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:
[root@Git .git]# git config --global merge.toolvimdiff
Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。
要检查已有的配置信息,可以使用 git config --list 命令:
[root@Git .git]# git config --list
user.name=syaving
color.ui=true
alias.it=init
alias.olog=log --pretty=oneline
core.editor=emacs
merge.tool=vimdiff
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如 /etc/gitconfig和 ~/.gitconfig),不过最终 Git实际采用的是最后一个。
这些配置我们也可以在 ~/.gitconfig或 /etc/gitconfig看到,如下所示:
vim ~/.gitconfig
显示内容如下所示:
也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:
# git config user.name
"syaving"
!!!以上一段,为网上收集信息,没看明白。。