GIT使用—创建一个版本库

Posted 边学边做

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GIT使用—创建一个版本库相关的知识,希望对你有一定的参考价值。

一、GIT命令行

[[email protected] ~]# git
usage: git [--version] [--exec-path[=GIT_EXEC_PATH]] [--html-path]
           [-p|--paginate|--no-pager] [--no-replace-objects]
           [--bare] [--git-dir=GIT_DIR] [--work-tree=GIT_WORK_TREE]
           [--help] COMMAND [ARGS]

The most commonly used git commands are:
   add        Add file contents to the index
   bisect     Find by binary search the change that introduced a bug
   branch     List, create, or delete branches
   checkout   Checkout a branch or paths to the working tree
   clone      Clone a repository into a new directory
   commit     Record changes to the repository
   diff       Show changes between commits, commit and working tree, etc
   fetch      Download objects and refs from another repository
   grep       Print lines matching a pattern
   init       Create an empty git repository or reinitialize an existing one
   log        Show commit logs
   merge      Join two or more development histories together
   mv         Move or rename a file, a directory, or a symlink
   pull       Fetch from and merge with another repository or a local branch
   push       Update remote refs along with associated objects
   rebase     Forward-port local commits to the updated upstream head
   reset      Reset current HEAD to the specified state
   rm         Remove files from the working tree and from the index
   show       Show various types of objects
   status     Show the working tree status
   tag        Create, list, delete or verify a tag object signed with GPG

See ‘git help COMMAND‘ for more information on a specific command.

二、Git创建仓库

(1)创建一个项目

[[email protected] ~]# mkdir public_html
[[email protected] ~]# cd public_html/
[[email protected] public_html]# echo ‘My website is alive!‘ > index.html
[[email protected] public_html]# ls
index.html

(2)执行git init将目录转化为版本库

[[email protected] public_html]# git init
Initialized empty Git repository in /root/public_html/.git/
[[email protected] public_html]# ls -a
.  ..  .git  index.html

在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变(不像 SVN 会在每个子目录生成 .svn 目录,Git 只在仓库的根目录生成 .git 目录)。

(3)将文件添加到版本库

[[email protected] public_html]# git add index.html 

如果目录中有多个文件,使用git add . 命令将当前目录及子目录的文件都添加到版本库中。

(4)查看状态

[[email protected] public_html]# git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
#   (use "git rm --cached <file>..." to unstage)
#
#   new file:   index.html
#

(5)提交

[[email protected] public_html]# git commit -m "Initial contents of public_html" --author="tong <[email protected]>"
[master (root-commit) b4e2a14] Initial contents of public_html
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 index.html

(6)让git在提交时打开编辑器,设置你的GIT_EDITOR环境变量

[[email protected] public_html]# export GIT_EDITOR=vim
[[email protected] public_html]# git status
# On branch master
nothing to commit (working directory clean)

(7)编辑文件再次提交

[[email protected] public_html]# cat index.html 
<html>
<body>
My website is alive!
</body>
</html>
[[email protected] public_html]# git commit index.html  这时会进入编辑器
# Please enter the commit message for your changes. Lines starting
# with ‘#‘ will be ignored, and an empty message aborts the commit.
# Explicit paths specified without -i nor -o; assuming --only paths...
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   index.html
#
This is new html!
保存退出
[[email protected] public_html]# git commit index.html
[master 0a30716] This is new html!
 1 files changed, 4 insertions(+), 0 deletions(-)

(8)查看提交

[[email protected] public_html]# git log
commit 0a3071601cc10777e271a952ead46cffba233e24
Author: tong <[email protected]>
Date:   Tue Feb 27 11:52:29 2018 +0800

    This is new html!

commit b4e2a14de84d29ea8890a2e19f039eb08bc2fc7d
Author: tong <[email protected]>
Date:   Tue Feb 27 11:45:23 2018 +0800

    Initial contents of public_html

[[email protected] public_html]# git show b4e2a14de84d29ea8890a2e19f039eb08bc2fc7d
commit b4e2a14de84d29ea8890a2e19f039eb08bc2fc7d
Author: tong <[email protected]>
Date:   Tue Feb 27 11:45:23 2018 +0800

    Initial contents of public_html

diff --git a/index.html b/index.html
new file mode 100644
index 0000000..34217e9
--- /dev/null
+++ b/index.html
@@ -0,0 +1 @@
+My website is alive!

[[email protected] public_html]# git show-branch --more=5
[master] This is new html!
[master^] Initial contents of public_html

(9)查看提交差异

[[email protected] public_html]# git diff 0a3071601cc10777e271a952ead46cffba233e24 b4e2a14de84d29ea8890a2e19f039eb08bc2fc7d
diff --git a/index.html b/index.html
index 8638631..34217e9 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1 @@
-<html>
-<body>
 My website is alive!
-</body>
-</html>

(10)版本库内文件的删除和重命名

[[email protected] public_html]# ls
index.html  poem.html
[[email protected] public_html]# git rm poem.html 
rm ‘poem.html‘
[[email protected] public_html]# git commit -m "Remove a poem"
[master 19a473c] Remove a poem
 1 files changed, 0 insertions(+), 4 deletions(-)
 delete mode 100644 poem.html
[[email protected] public_html]# ls
bar.html  index.html
[[email protected] public_html]# mv bar.html foo.html
[[email protected] public_html]# git rm bar.html
rm ‘bar.html‘
[[email protected] public_html]# git add foo.html
[[email protected] public_html]# git commit -m "mv bar to foo"
[master aa431d9] mv bar to foo
 1 files changed, 0 insertions(+), 0 deletions(-)
 rename bar.html => foo.html (100%)

(11)创建版本库的副版本
这就是不同开发者如何通过Git在相同的文件上从事项目开发,并保持与其他版本库同步。

[[email protected] ~]# git clone public_html my_website
Initialized empty Git repository in /root/my_website/.git/
[[email protected] ~]# ls -lsa public_html my_website
my_website:
total 20
4 drwxr-xr-x  3 root root 4096 Feb 27 13:08 .
4 dr-xr-x---. 8 root root 4096 Feb 27 13:08 ..
4 -rw-r--r--  1 root root   51 Feb 27 13:08 foo.html
4 drwxr-xr-x  8 root root 4096 Feb 27 13:08 .git
4 -rw-r--r--  1 root root   51 Feb 27 13:08 index.html

public_html:
total 20
4 drwxr-xr-x  3 root root 4096 Feb 27 13:05 .
4 dr-xr-x---. 8 root root 4096 Feb 27 13:08 ..
4 -rw-r--r--  1 root root   51 Feb 27 13:04 foo.html
4 drwxr-xr-x  8 root root 4096 Feb 27 13:06 .git
4 -rw-r--r--  1 root root   51 Feb 27 11:50 index.html
[[email protected] ~]# diff -r public_html my_website
Only in public_html/.git: COMMIT_EDITMSG
diff -r public_html/.git/config my_website/.git/config
5a6,11
> [remote "origin"]
>   fetch = +refs/heads/*:refs/remotes/origin/*
>   url = /root/public_html
> [branch "master"]
>   remote = origin
>   merge = refs/heads/master
Binary files public_html/.git/index and my_website/.git/index differ
diff -r public_html/.git/logs/HEAD my_website/.git/logs/HEAD
1,6c1
< 0000000000000000000000000000000000000000 b4e2a14de84d29ea8890a2e19f039eb08bc2fc7d tong <[email protected]> 1519703123 +0800 commit (initial): Initial contents of public_html
< b4e2a14de84d29ea8890a2e19f039eb08bc2fc7d 0a3071601cc10777e271a952ead46cffba233e24 tong <[email protected]> 1519703549 +0800 commit: This is new html!
< 0a3071601cc10777e271a952ead46cffba233e24 5be473e1ed6d04ed9e96b7fa3e9e2860607cbd31 tong <[email protected]> 1519703956 +0800 commit: add poem.html
< 5be473e1ed6d04ed9e96b7fa3e9e2860607cbd31 19a473c2e935efa59b8edea19d2d12be96987a97 tong <[email protected]> 1519704003 +0800 commit: Remove a poem
< 19a473c2e935efa59b8edea19d2d12be96987a97 1ed9a862e62bd5513021838cb435cf8170e2173d tong <[email protected]> 1519707877 +0800 commit: new bar
< 1ed9a862e62bd5513021838cb435cf8170e2173d aa431d938e85445f6c22c7389a37349f587d5b01 tong <[email protected]> 1519707981 +0800 commit: mv bar to foo
---
> 0000000000000000000000000000000000000000 aa431d938e85445f6c22c7389a37349f587d5b01 tong <[email protected]> 1519708133 +0800 clone: from /root/public_html
diff -r public_html/.git/logs/refs/heads/master my_website/.git/logs/refs/heads/master
1,6c1
< 0000000000000000000000000000000000000000 b4e2a14de84d29ea8890a2e19f039eb08bc2fc7d tong <[email protected]> 1519703123 +0800 commit (initial): Initial contents of public_html
< b4e2a14de84d29ea8890a2e19f039eb08bc2fc7d 0a3071601cc10777e271a952ead46cffba233e24 tong <[email protected]> 1519703549 +0800 commit: This is new html!
< 0a3071601cc10777e271a952ead46cffba233e24 5be473e1ed6d04ed9e96b7fa3e9e2860607cbd31 tong <[email protected]> 1519703956 +0800 commit: add poem.html
< 5be473e1ed6d04ed9e96b7fa3e9e2860607cbd31 19a473c2e935efa59b8edea19d2d12be96987a97 tong <[email protected]> 1519704003 +0800 commit: Remove a poem
< 19a473c2e935efa59b8edea19d2d12be96987a97 1ed9a862e62bd5513021838cb435cf8170e2173d tong <[email protected]> 1519707877 +0800 commit: new bar
< 1ed9a862e62bd5513021838cb435cf8170e2173d aa431d938e85445f6c22c7389a37349f587d5b01 tong <[email protected]> 1519707981 +0800 commit: mv bar to foo
---
> 0000000000000000000000000000000000000000 aa431d938e85445f6c22c7389a37349f587d5b01 tong <[email protected]> 1519708133 +0800 clone: from /root/public_html
Only in my_website/.git: packed-refs
Only in my_website/.git/refs: remotes

以上是关于GIT使用—创建一个版本库的主要内容,如果未能解决你的问题,请参考以下文章

Git日常使用Git的简单使用,创建版本库提交代码更新代码

Git创建版本库以及代码提交

git使用----创建版本库

如何使用git把代码托管到gitlab上

git笔记--《git 版本控制管理》

Git的使用 —— 版本库