目录
1. Ubuntu安装
2. 使用帮助
3. 创建初始版本库
4. 将文件添加到版本库中
5. 提交
6. 查看提交
7. 查看提交差异
8. 版本库内文件的删除和重命名
9. 创建版本库副本
10. 配置文件
apt-get install git git-doc gitweb git-gui gitk git-email git-svn
git --version #查看git的版本信息
git [commands] --help #查看命令commands的帮助信息
Git 不关心你是从一个完全空白的目录还是由一个装满文件的目录开始的你的版本管理,这两种情况都一样,cd 到该目录,执行如下命令:
git init
在该目录下,该命令会创建一个隐藏目录,名为 .git。Git 把所有修订信息都放在这唯一的顶层 .git 目录里。隐藏在 .git 内的版本库由 Git 维护。
git add filename
如果有很多文件,使用如下命令把当前目录及子目录中的文件都添加到版本库里。
git add .
不过该操作后,Git 只是暂存了这个文件,这是提交前的中间步骤。Git 将 add 和 commit 这两部分开,以避免频繁变化。这和“批处理”有关。
例子:
新建一个文件夹 test_git,并创建一个文件“hello.txt”,执行如下命令:
$ mkdir test_code
$ echo "hello" > hello.txt
$ git init
$ ls -al
total 16
drwxr-xr-x 3 root root 4096 1月 28 10:14 .
drwxr-xr-x 17 root root 4096 1月 28 10:12 ..
drwxr-xr-x 7 root root 4096 1月 28 10:34 .git
-rw-r--r-- 1 root root 10 1月 28 10:14 hello.txt
$ git status
On branch master
Initial commit
Untracked files:
(use "git add ..." to include in what will be committed)
hello.txt
$ git add hello.txt
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: hello.txt
可见,在执行完 add 操作后,git status 显示了下次提交时候添加到版本库里的新文件。
一条完全限定的 git commit 命令必须提供日志消息和作者。
$ git commit -m "Initial contents of test" \
--author="L.C "
可能会报这样的错误:
*** Please tell me who you are.
Run
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
这是告诉我们需要配置提交作者,按照上面的操作做就行了。也可以使用 GIT_AUTHOR_NAME 和 GIT_AUTHOR_EMAIL 环境变量来告诉 Git 你的姓名和 email 地址。
提交中一种典型的做法是在交互式编辑器会话中创建消息。这样你就能够在你喜欢的编辑器里面写写完整而详细的日志消息。为在 git commit 期间让 Git 打开你最爱的编辑器,要设置你的 GIT_EDITOR 环境变量:
export GIT_EDITOR=vim
那么在你使用下面的命令时会打开编辑器,书写日志消息,然后关闭编辑器即可提交完毕(如果日志消息为空,则提交会失败):
$ git commit hello.txt #会打开vim编辑器,书写你的消息即可,退出编辑器提交完毕
$ git status
On branch master
nothing to commit, working directory clean
最后的 git status 告诉我们,工作目录是干净的,这意味着工作目录里不包含任何与版本库中不同的未知或者更改过的文件。
使用 commit+filename 的方式提交一个文件:
(1)若文件 “htmtest.html” 没有使用 add 来添加到索引会出现以下错误:
$ git commit hetmtest.html
error: pathspec 'htmltest.html' did not match any file(s) known to git.
(2)如果文件在索引中,我们就没有必要在修改该文件后再次使用 add 来添加到索引中,直接使用 commit+filename 的方式来提交即可,文件的变更会自动捕捉,这时编辑器打开,输入日志消息,关闭编辑器即提交成功。
不过需要注意的是,在使用 git commit 命令(即不加文件名的方式),它只会显示你有哪些文件发生修改且没有被保存,并不能起到提交的作用:
$ echo "test" > htmltest.html
$ git commit
On branch master
Changes not staged for commit:
modified: htmltest.html
no changes added to commit
这时使用 git commit htmltest.html 命令就可以提交成功。
git log 命令会产生版本库里一系列单独提交的历史。
$ git log
commit 0c08126a2fcd8e7916a3fa2df95cbe2c08e77407
Author: L.C
Date: Mon Jan 28 13:47:54 2019 +0800
add test html file
commit 314d128278db47b4f149e4e18357aa407175211b
Author: L.C
Date: Mon Jan 28 13:29:20 2019 +0800
add the changes 1
commit 2db1622a3bd8992d0bcd019469caab2a018216f7
Author: L.C
Date: Mon Jan 28 13:05:23 2019 +0800
Init contents
如果嫌输出信息太多,可以试试加上 --pretty=oneline
参数。
git show + 提交码 (显示详细某次提交的详细信息)和 git show (显示最近一次提交的详细信息)
$ git show 314d128278db47b4f149e4e18357aa407175211b
commit 314d128278db47b4f149e4e18357aa407175211b
Author: L.C
Date: Mon Jan 28 13:29:20 2019 +0800
add the changes 1
diff --git a/hello.txt b/hello.txt
index aa71bc4..8716a4f 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1,3 +1,4 @@
hello git
add changes
+add changes 1
git show-branch (显示当前开发分支简洁的单行摘要)
git show-branch --more=10 (显示10个版本)
$ git show-branch --more=10
[master] add htmltest1.html and changes in htmltest.html
[master^] add test html file
[master~2] add the changes 1
[master~3] Init contents
git diff ID1 ID2
$ git diff 314d128278db47b4f149e4e18357aa407175211b 2db1622a3bd8992d0bcd019469caab2a018216f7
删除分两步:git rm 和 git commit
$ ls
hello.txt htmltest1.html htmltest.html
$ git rm htmltest1.html
$ git commit -m "rm htmltest1.html"
$ ls
hello.txt htmltest.html
重命名分两步:git mv 和 git commit
$ git mv hello.txt hello.rename.txt
$ git commit -m "rename hello.txt--->hello.rename.txt"
我们使用 git reflog 查看命令历史
git clone
如我现在的目录为:test_git, 我想在我的主目录新建一个文件夹 host_git 然后克隆之。
$ cd ~
$ mkdir host_git
$ git clone ./test_code/test_git/ ./host_git/
clone 的文件夹和原始的文件夹还是有些细微的区别的。
git 也支持不同层次的配置文件:
.git/config
版本库特定的配置设置,可用 --file 选项修改,是默认选项。这些设置拥有最高优先级。
~/.gitconfig
用户特定的配置设置,可用 --global 选项修改。优先级次之。
/etc/gitconfig
这是系统范围的配置文件,可以使用 --system 选项修改。优先级最低。
如下,我们的配置,就是配置 .git/config 文件(默认选项)。
$ git config user.name "L.C"
如下,我们的配置,就是配置 ~/.gitconfig 文件。
$ git config --global user.name "L.C"
git config -l 查看所有配置。
git --unset 移除设置:
$ git config --unset --gloabl user.name "L.C"