赞
踩
1.安装Git
较新的Ubuntu是集成的Git的,若没安装,使用一条简单的指令即可
$ git
The program 'git' is currently not installed. You can install it by typing:
$ sudo apt-get install git
2.创建版本库
第一步:选择一个合适的地方,创建一个空目录:
$ mkdir learngit
$ cd learngit
$ pwd//pwd显示当前目录
/Users/michael/learngit
```一、GIT的本地操作
第二步:在这个目录下初始化仓库:
```python
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
现在,用git管理的文件使用以下代码进行管理
$ git add readme.txt //可以多添加几次
$ git commit -m "说明注释"//可以看到自己每次版本具体修改情况
1 file changed, 1 insertion(+), 1 deletion(-)
3.版本回退
我们使用git log命令查看我们的文件改变了什么内容
git log指令显示了从最近到最远的提交日志 ,如果嫌弃输出内容多,可以加上pretty=oneline 参数
$ git log commit 1094adb7b9b3807259d8cb349e7df1d4d6477073 (HEAD -> master) Author: Michael Liao <askxuefeng@gmail.com> Date: Fri May 18 21:06:15 2018 +0800 append GPL commit e475afc93c209a690c39c13a46716e8fa000c366 Author: Michael Liao <askxuefeng@gmail.com> Date: Fri May 18 21:03:36 2018 +0800 add distributed commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0 Author: Michael Liao <askxuefeng@gmail.com> Date: Fri May 18 20:59:18 2018 +0800 wrote a readme file
现在,我们可以使用以下命令将文件回退到上个版本
$ git reset --hard HEAD^ //“^”的意思是把版本回退到上个版本 两个版本就是"^^"一百个就是“HEAD~100”
现在查看一下git log的状态
HEAD is now at e475afc add distributed
现在查看一下git log的状态
$ git log
commit e475afc93c209a690c39c13a46716e8fa000c366 (HEAD -> master)
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 21:03:36 2018 +0800
add distributed
commit eaadf4e385e865d25c48e7ca9c8395c3f7dfaef0
Author: Michael Liao <askxuefeng@gmail.com>
Date: Fri May 18 20:59:18 2018 +0800
wrote a readme file
现在,“append GPL”已经看不到了,如果想恢复这个版本,使用
$ git reset --hard 1094a
HEAD is now at 83b0afe append GPL
如果终端关闭,查不到了过去的版本号怎么办?使用以下指令
$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file
4.工作区和暂存区
首先介绍以下工作区的概念,比如上面目录learningit就是我们的工作区,git的具体结构如下图:
第一步我们使用 git add 实际上是把文件修改从工作区添加到了暂存区(stage)
第二步使用 git commit 提交更改,实际上就是把文件修改提交到了当前分支(master)
可以简单理解为,需要提交的文件修改通通放到暂存区,然后,一次性把所有内容都提交到了当前分支。
可以使用 git status 查看当前的版本状态。
5.管理修改
注意这个例子:第一次修改->git add ->第二次修改-> git commit ,此时只是提交了一次,因为commit命令只是提交了暂存区的版本修改,对于本地工作区的修改,commit是不提交的。我们可以使用 git diff HEAD --file 命令查看工作区和版本库最新版本的区别。
6.撤销修改
如果你在工作区的文件被你修改的出现了一个BUG,侧可以使用以下命令丢弃工作区的修改:
$ git checkout -- readme.txt// file name
命令 的意思是,把文件在工作区的修改全部撤销,有两种情况:
一种是文件修改后,还没有add到暂存区,这条指令就会把文件撤销修改回到和版本库一模一样的状态;
另一种是文件已经添加到了暂存区,又在本地做了修改,这条指令就撤销修改回到添加到暂存区的状态。
总之,优先回到add的状态,add为空时,回到commit的状态。
如果暂存区的文件也是有BUG的,但还没有提交,我们可以使用reset命令将暂存区的修改撤销掉,并重新回退到工作区:
$ git reset HEAD readme.txt
Unstaged changes after reset:
M readme.txt
可见 git reset 命令既可以回退版本,也可以将暂存区的修改撤销掉。
7.删除文件
当你把工作区中的文件,使用rm file 命令删除了,此时,git是知道你删除了文件,此时工作区和版本库的内容就不一致了,使用git status 可以看到那些文件被删除了,现在有两个选择,第一种情况是想从版本库中删除文件,那么这样操作
$ git rm test.txt
rm 'test.txt'
$ git commit -m "remove test.txt"
[master d46f35e] remove test.txt
1 file changed, 1 deletion(-)
delete mode 100644 test.txt
第二种情况是删错了,那么使用checkout文件可以恢复到最新版本。
$ git checkout -- test.txt
git checkout 其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以一键还原。
1.添加SSH key
首先,linux系统下在主目录里面看看是否含有.ssh文件,如果有id_rsa
和id_rsa.pub
文件那么直接跳过这一步,否则使用以下命令创建SSH key:
$ ssh-keygen -t rsa -C "youremail@example.com"
一路回车使用默认设置即可。
现在看主目录里面是否有.ssh文件,如果有,进入这个目录复制id_rsa.pub
里面的内容。
现在登录GitHub,–Settings–SSH and GPG keys—New SSH key(其中titile随便写即可)
现在你可以通过你的本地主机向GitHub上传你的代码了。
2.添加远程仓库
在自己的主页上找到"Create a new repo"按钮,创建一个新的仓库,在name处填入learningit,现在成功创建了一个新的git仓库。
现在根据GitHub的提示,在本地的learningit仓库下运行命令:
$ git remote add origin git@github.com:BoAn95/learngit.git
BoAn95
要替换成自己的GitHub账户名,否则登录不上去。
添加后远程库的名字就叫做origin
,这是git的默认叫法,也可以改成别的。
之后,我们可以把本地库的所有内容推送到远程库上:
$ git push -u origin master
Counting objects: 20, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (15/15), done.
Writing objects: 100% (20/20), 1.64 KiB | 560.00 KiB/s, done.
Total 20 (delta 5), reused 0 (delta 0)
remote: Resolving deltas: 100% (5/5), done.
To github.com:michaelliao/learngit.git
* [new branch] master -> master
Branch 'master' set up to track remote branch 'master' from 'origin'.
其中,把本地库的内容推送到远程用的是git push
命令,实际上是把当前分支master
推送到远程。
远程库的是空的,我们第一次推送master
分支时,加上了-u
参数,Git不但会把本地的master
分支推送到远程的新的mater
分支,还会自动关联他们两个。以后在推送或者拉取时候可以简化命令。
之后使用命令:
git push origin master
就可以把本地分支的最新修改推送到GitHub。
3.从远程库克隆
之前,已经了解了已经有本地库,如何关联远程库。
现在,我们先创建远程库,然后,从远程库克隆。
先在GitHub上创建一个新的仓库,名字叫做gitskills。
勾选Initialize this repository with a README
,这样仓库里面自动创建一个README.md
文件。
至此,远程仓库已经创建好了,下面使用git clone
克隆一个本地库:
$ git clone git@github.com:BoAn95/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.
进入gitskills目录看看,已经有README.md
文件了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。