1、说在前面
各位小伙伴,我们非常有幸的收到黄晶晶同学的来稿。她提议我们搞一期关于Git的专题。所以这一次专题就这么来了!
2、Git的基本介绍
3、主要内容
学习Git常用的几种命令。以及和远程代码库进行交互的过程。
4、具体实验内容
4.1 Git 命令的初步使用
- 在树莓派上创建一个裸仓库,此时树莓派可被视为服务器端(类似github)。
git init --bare
# 例:git init --bare project_6.git
- 在Ubuntu电脑上,从远程服务器clone远程仓库
git clone ssh://user@server
# 例:git clone ssh://[email protected]/home/git/server/project_6.git
# 注:使用的是绝对路径
- 在Ubuntu电脑上进入clone的仓库文件夹。【后面都在Ubuntu电脑上进行操作】
- 在当前文件夹新建一个main.c文件,并在里面添加如下的内容
#include
int main(int argc,char **argv)
{
return 0;
}
- 接下来开始进入git的操作了。先看看使用git status看看效果
git status
- 这个时候可以用git add main.c 把文件加入到git的暂存区。然后再git status看看效果。
git add
# 例:git add main.c
# 注:可以使用git add . 把所有的文件都包含进来
- 使用git commit命令提交代码,提交后使用git status看看区别。其中在这里面git commit Chang-id也是很常用的,建议大家提前了解一下。http://merrier.wang/?p=1145
git commit -m
# 例:git commit -m "Add main.c, add main funcion"
- 提交到远程仓库,用的git push命令
git push
# 例:git push origin master
小结:第一部分就结束了,这是一个很简单的Git使用过程
4.2 Git增加文件内容
- 在main函数里面增加一行
printf("Hello world!\n");
- git status看看区别
- git diff看看和已有提交的内容的区别
git diff
- 使用git add,git commit, git push origin master 命令进行提交。
4.3 Git版本回退
- 在版本回退之前,我们需要先确定一下用已经提交的历史
git log
很好,我们看到之前已经提交了2次记录,注意每一次commit 后面的一堆Hash码
例子
commit 3a5ffb29a710f672d1bcee9641205542d678cc7e
Author: Jingzheng Wang Win <[email protected]>
Date: Sat Jan 13 13:21:52 2018 +0800
Add some content
commit 1a1cbd26b5ab69f896f1b87d6a302dbb628981a4
Author: jack
Date: Sat Jan 13 10:25:48 2018 +0800
Add 2 files
- 现在我看到这个版本,感觉不想要了,那么就需要回退到之前的版本。Hash码:1a1cdb的那个。然后使用git reset命令
git reset --hard 1a1cdb
然后再打开之前自己修改过的文件,那么你会发现之前增加的那些代码都已经不见了。
- 已经回退到了之前的版本。但是现在又觉得这个版本代码不好,我要退回到回退前的代码,就是我现在又想要Hash码3a5ffb开头的那个代码。可以使用git reset命令回退到这个版本。但是这个Hash码用git log已经找不到了。可以使用git reflog
git reflog
然后就能找到之前想要版本的hash码了
git reset --hard 3a5ffb
这样就可以。
- 小结:了解一下代码回退功能
4.4 还有一些代码回退
思考并尝试:如果git add 过,暂时还没有git commit,但是想把代码恢复到上一次提交的过程,应该怎么办。
提示:使用git checkout HEAD
4.5 分支的使用
分支的使用是Git中很重要的一个思想。可以考虑在自己的当前目录下创建一个分支并使用。
- 创建分支
git checkout -b
例:git checkout -b dev
git checkout -b dev是两个命令的集合体,一个是git branch dev,还有一个是git checkout dev
- 在新的dev分支修改代码,并add,commit。(暂时不需要push)
- commit后,切换到master分支,然后看看你修改的代码还在吗?
- 如果再切换回dev分支,那么你修改过的代码回来了吗?
- 小结:在分支管理中,伴随比较重要的是分支的merge功能。
5、拓展提高
- 试着自己申请一个github账号,然后将自己的代码上传到github。想想是否与上传到树莓派类似?
- .gitignore文件的使用,他有什么作用。
- 学习git分支管理的策略。
- 分支之间的merge应该怎么使用。merge会存在什么问题?如果出现冲突了该怎么办?等等