git教程总结
首先配置用户
git config --global user.name "Your Name"
git config --global user.email "[email protected]"
1.新建目录,
mkdir git
cd git
2.通过git init初始化
git init
添加文件
1.添加文件
git add readme.txt
2.添加到仓库
git commit -m "message"
git 可以分别add文件,然后用 commit一次性提交
D.时刻查看文件的改动
git status
查看文件做了哪些修改
git diff readme.txt
yubo@debian:~/git$ git diff readme.txt
diff --git a/readme.txt b/readme.txt
index f7249b8..aa5a885 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,3 @@
Git is a version control system
Git is free software
+yubo
+yubo 就是新增的内容
删除文件
删除文件的命令是:
git rm xx
查看自己的所有修改
git commit -a
推送
git push xx
版本回退
git reset --hard commit_id
git log
假设我再一次修改了readme.txt文件,`git status ->git add file ->git log`
yubo@debian:~/git$ git log
commit c581ae4fb9e9aa16bbe5927b454260f4dba2644e
Author: yubo <[email protected]>
Date: Fri Sep 19 10:12:17 2014 +0800
add distribute
commit 1e2113c000c662da0e8d8f13ec3a60252579a4f6
Author: yubo <[email protected]>
Date: Fri Sep 19 08:54:11 2014 +0800
wrote a readme.txt
注意,git log只会显示真正提交的文件,也就是git commit 才可以, 现在的git log 还没有第三次修改的文件,
git commit -m "third time distribute"
__git log__
yubo@debian:~/git$ git log
commit da09fadf5aa85f31682e16acdfca5d3e09f897f7
Author: yubo <[email protected]>
Date: Fri Sep 19 10:25:59 2014 +0800
third time distribute
commit c581ae4fb9e9aa16bbe5927b454260f4dba2644e
Author: yubo <[email protected]>
Date: Fri Sep 19 10:12:17 2014 +0800
add distribute
commit 1e2113c000c662da0e8d8f13ec3a60252579a4f6
Author: yubo <[email protected]>
Date: Fri Sep 19 08:54:11 2014 +0800
wrote a readme.txt
这样,你就可以使用git的时间线来调整git的版本了,从这里你也可以明白git的工作单元是 git commit后的文件。还有我们一开始没有讲,上面输出信息中 commit后面的一串乱码 是一个SHA1计算出来的非常大的数,这样保证版本号不会冲突。 B.接下来假设我们要使用第二版本的即 add distribute: 首先,git必须知道现在正在使用的是哪个版本,git用HEAD表示当前版本,上一个 版本就是HEAD^,上上版本就是HEAD^^,那么前10个版本怎么写?简单,就是HEAD~10 我们回退到上一版本
git reset --hard HEAD^
上面的内容重新回顾
从以上内容中我们可以发现这个commit id是很重要的,我们不关掉 电脑的话查找commit id还是挺容易,但如果关掉PC的话,我们还是 有办法找到commit id的:
git reflog
工作区的浅显认识
所谓的工作区,也就是我们用ls命令打开看到的文件,我们创建一个文件后, 这个文件显式的位于这个目录下,经过add以后,这个文件被放在stage区域中或者说暂存区, 经过commit后,这些文件才被放在某一个分支下(如master),同时这里还会有一个 HEAD的指针指向文件,我们上面使用的git reset –hard xx就是将这里的指针 移动到某个历史文件上。这些东西全部由.git的目录在控制,所以,没事千万别乱动 那个.git目录。当你把所有修改后的文件commit后,工作区这时也就是干净的了。
git的本质
git的本质是管理修改,而非文件,这一点请务必弄明白。
撤销修改
如果我们修改的文件有不合适的地方,或者撤销这个修改,这该怎么办?Git还是有办法解决这个问题的,不知你有没有注意到上面那些屏幕输出的信息中,就包含了这个问题的解决方案,那就是运用 git checkout – readme.txt ,假设我把readme.txt文件最后一行去掉
yubo@debian:~/git$ git checkout -- readme.txt
yubo@debian:~/git$ cat readme.txt
Git is a version control system
Git is free software
yubo
hahah
I like git
You like git too
这就是在没有 commit命令我们用 checkout 的效果.假设我们git add到暂存区后怎么办?一种方案就是用我们刚刚使用的 git reset HEAD file命令回到原先的版本。
yubo@debian:~/git$ git status
yubo@debian:~/git$ git add readme.txt
yubo@debian:~/git$ git status
yubo@debian:~/git$ git reset HEAD readme.txt
重置后撤出暂存区的变更:
M git-2
M readme.txt
git reset 命令既可以实现回退版本,也可以把暂存区的修改撤销掉,当我们用HEAD时,表示最新的版本。
yubo@debian:~/git$ git status
# 修改: readme.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
我们继续使用丢弃工作区的命令,
yubo@debian:~/git$ git checkout -- readme.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
删除文件
git rm file
如果误删了,接着使用 checkout 命令还原。不过,记住,这样只能 恢复到最新版本的文件,你删除文件的最后一次修改是无法恢复的,
其它
远程搭建服务器:
-
先添加一个具有sudo权限的用户 安装git
-
创建一个git用户,用来运行git服务 sudo adduser git
-
创建证书登录 收集所有需要登录的用户公钥,就是他们的id_rsa.rub文件,把所有公钥导入 /home/git/.ssh/authorized_keys文件中,一行一个