最近朋友都问我有关git的问题,对于一个初学者包括我来说,刚学的时候是有点蒙的.所以写下这篇文章作为一个记录,如果你是老鸟,路过就行,当然也希望指出当中不对的地方,此教程简单,可以立即派上用场,不深入讲解高级功能,只讲一些基础的只是.
关于git的优点,这里我就不说了,大家网上一搜一大堆.所以今天只讲解如何关联到github等代码托管平台.
首先,你要有一个git客户端.
安装完git之后会弹出一个界面,表示安装成功
git config --global user.name 你的用户名 (给git配置用户名)
git config --global user.email 你的邮箱(给git配置邮箱)
//-----------一次完整的提交--------------------------
第一步:
创建版本库(仓库 repository):
进入你想创建版本库的盘符例如D盘,在命令行中可以用 cd d:命令进入。
mkdir mygitRepository(在D盘创建一个文件夹 mygitRepository)
cd mygitRepository(进入该文件夹)
pwd (用于显示当前目录)
第二步:
git init(把目录变成git可以管理的仓库)
git add test.txt(添加test.txt文件到仓库中)
git commit -m "第一次提交"(把该文件提交到仓库中。-m后面输入的是本次提交的说明)注:也可以同时添加多个文件比如:
$ git add file1.txt
$ git add file2.txt file3.txt
$ git commit -m "add 3 files."
//-----------一次完整的提交--------------------------
//---------------版本的回退----------------------------------------
场景:对test.txt文件进行修改,然而在提交的时候却发生了错误的提示
git status(查看当前版本的状态)
$ git status
On branch master# Changes not staged for commit:# (use "git add <file>..." to update what will be committed)# (use "git checkout -- <file>..." to discard changes in working directory)## modified: test.txt#
no changes added to commit (use "git add"and/or"git commit -a")
上面的提示说我们的test.txt文件已经发生了改变,也就是该文件被修改过了。
git diff(看看具体被修改了什么内容)
$ git diff test.txt
diff --git a/test.txt b/test.txt
index 46d49bf..9247db6 100644
--- a/test.txt
+++ b/test.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
知道了文件修改了以后我们可以继续提交
git add 文件名
git commit -m 描述
$ git commit -m "add distributed"
[master ea34578] add distributed
1 file changed, 1 insertion(+), 1 deletion(-)
再用 git status查看当前的状态
$ git status
On branch master
nothing to commit (working directory clean)
现在,我们已经学会了修改文件,然后把修改提交到Git版本库
git log(显示从最近到最远的提交日志)
git log --pretty=oneline(这样会显示的更美观)
现在我们要回退到上一个版本
git reset --hard HEAD^(回退到上一个版本)
git reset --hard HEAD^^(回退到上上一个版本)
如果有一百个版本呢?
git reset --hard HEAD~100(回退到上一个版本)
再用git log查看
红色箭头表示已经回退到了上一个版本。cat test.txt.查看文档内容会发现回到了修改前
黄色箭头表示当前有两个版本(回退前有三个的) 黄色箭头指的文字表示你提交时对该版本的描述。
前面的一大窜黄色的编码就是commit id.我们可以通过这些id.来恢复最新版本,也就是该试验中第三个版本(之前已经被我们回退到了第二个版本了。)
有时候版本太多,而且又忘记了commit id。这怎么办?
git reflog(记录你每一次的命令)
看到了吧。head 1开始就是我们一共提交的版本了。黄色就是commit id了
第一行显示的是我们的回退历史。第二行就是我们现在要恢复的目标
以上命令就是恢复(回退)到最新版本
我们在git log --pretty=oneline一次看
我们可以看到上面就是我们提交的版本了。已经回退到了最新的版本
现在总结一下:
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
//------------------------版本的回退----------------------
//----------------撤销修改-------------------
场景一:在文件中修改了内容,但并没有git add
场景二:在文件中修改了内容,又使用了 git add
注意:如果修改了内容,且又使用了 git add和git commit.这就表示文件已经被提交了.
根据场景一查看版本状态
我们对文件进行了修改(增加了"这是第三行").
git checkout -- test.txt(撤销对文件的修改,该文件会恢复到修改前即丢弃工作区的修改)
从上面可以看到使用了 git checkout.git帮我们恢复了第二次提交的状态(第三次修改并未提交)
场景二:在文件中修改了内容,又使用了 git add(我在文件中增加了一行内容"我是第三行",并且对改行进行修改,把"三"改成"四"现在我用git add提交文件.)
现在使用 git checkout.再回到文件中,我们会发现文件恢复到了"我是第三行"而不是"我是第四行".接下来可以使用git commit提交文件.
/------------------撤销修改-------------------------------------
/------------------删除文件-------------------------------------
场景:往仓库里添加一个文件tt.txt
1.提交(提交步骤不多说了.不懂的回到前面看)
2.删除该文件
git rm tt.txt(删除tt.txt文件)
git commit -m "删除tt.txt文件"
如何恢复?
git reset --hard HEAD^(可以指定任意版本)
注意:目前知道删除文件并恢复的方法就这个.其他的不知道.
/------------------删除文件-------------------------------------
好了,上面的操作基本都能解决日常所需.
下面我们可以添加远程仓库了以coding平台为例.
你可以在coding平台或github等平台创建你的项目,这里我以Android项目为例:
在coding平台创建晚后是这样的:
在你的电脑中可能你已经有了一个Android项目了,现在我们开始把我们的Android项目给推到我们的远程仓库上去.
有两种方式,一种是https,一种是ssh,怎么看不懂?看下图:
用https这种方式在提交代码的时候是需要用户名和邮箱的.
Paste_Image.pngssh这种方式无需用户名和邮箱,但是要配置一个密钥.
打开git 客户端
键入 ssh-keygen然后回车
自己的项目一般不用设置密码,不过这个根据个人喜好,看到上面的图后你可以按回车.
接着键入cat ~/.ssh/id_rsa.pub,看到下面一大堆东西了吗?这个就是你的公钥,把它复制到coding平台里面,个个平台不一样,这里我就不演示了,自己找.
好了,现在我们已经设置好了接下来回到原来位置,现在你已经有了一个Android项目了.找到你项目的位置打开,就像这样:
Paste_Image.png在git里面进入你的项目所在的目录然后把你的项目作为仓库,进行初始化
Paste_Image.png这时候你会发现你的项目里面多了这么一个文件
Paste_Image.png现在你可以把你的项目和你的远程仓库关联起来了
Paste_Image.png到了这里,你就已经关联成功了,现在是上传代码的时候了.
查看一下状态:git status
看到那一堆红色的东西没有,那就是你的项目文件.你需要做的是把这些文件提交到你的远程仓库里面去
执行git add --all
我们再看一下状态
Paste_Image.png看到没有,已经全部变成绿色了,证明添加成功了,现在我们可以提交了
执行git commit -m "first commit"
白花花的一片,到了这里你已经添加成功,还没完,因为你会发现你的远程仓库并没有看到任何代码.
执行git push -u origin master
你会发现提交失败了.看提示他叫你先获取最新的数据,好吧
执行git pull
天啊,还错,这是怎么了?其实这是在说你没有关联成功,你可以看到上面提示你
执行git branch --set-upstream-to=origin/<branch>master.
注意:<branch>表示你的分支名字,这里写master
看到上图说明已经关联成功了.
再执行git pull
看到了吧,已经在你的平台上pull下来一个文件了.别搞诉我你不知道是什么文件.
现在我们执行git push -u origin master
回到我们的coding平台,刷新一下
Paste_Image.png看到了吧.这就已经提交上去了.以后修改项目只需执行上面基础操作即可同步了.
就说到这里了.可能说的很乱,但是按着步骤走应该不会有问题.
网友评论