vimer linux kernel 爱好者

git教程

2014-11-15
git

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 命令还原。不过,记住,这样只能 恢复到最新版本的文件,你删除文件的最后一次修改是无法恢复的,

其它

远程搭建服务器:

  1. 先添加一个具有sudo权限的用户 安装git

  2. 创建一个git用户,用来运行git服务 sudo adduser git

  3. 创建证书登录 收集所有需要登录的用户公钥,就是他们的id_rsa.rub文件,把所有公钥导入 /home/git/.ssh/authorized_keys文件中,一行一个


上一篇 LKD读书笔记

下一篇 kbuild学习心得

Comments

Content