Git学习笔记

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git不同于SVN之前写过 SVN使用手册 ,搭建过SVN服务,现在复习一下Git

配置Git

首先创建SSH key:

1
ssh-keygen -t rsa -C "email@email.com"

在~/目录下生成.ssh文件夹,打开id_rsa.pub,复制里面的key。
在github上,进入 Account Settings(账户配置),左边选择SSH Keys,Add SSH
Key,title随便填,粘贴在电脑上生成的key。
验证是否成功

1
ssh -T git@github.com

如果是第一次的会提示是否continue,输入yes就会看到:You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。
接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。

1
2
git config --global user.name "your name"
git config --global user.eamil "your_eamail@email.com"

上传远程仓库,需要添加远程地址,仓库需要在github上先建立好

1
git remote add origin git@github.com:yourName/yourRepo.git

检出仓库

克隆本地仓库:

git clone /path/to/repository 

克隆远程仓库:

git clone username@host:/path/to/repository

推送流程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$mkdir test  #创建一个测试目录
$cd test/ #进入test目录
$echo "#git test file" >> README.md #给readme文件写入内容
$ls
README.md
$git init #初始化init
$git add README.md #添加文件
[master (root-commit) 0205aab] 添加 README.md 文件
1 file changed, 1 insertion(+)
create mode 100644 README.md
$git commit -m "add readme.md file" #提交备注信息

#提交到github
$ git remote add origin git@github.com:usename/Repositoryname.git
$ git push -u origin master

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#初始化git
$git init

#拷贝一个仓库到本地
$git clone [url]

#添加文件到缓存
$git add

#查看当前项目状态
$git status -s
#A 加入缓存 M有改动

#查看修改
执行 git diff 来查看执行 git status 的结果的详细信息。
git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景。
尚未缓存的改动:git diff
查看已缓存的改动: git diff --cached
查看已缓存的与未缓存的所有改动:git diff HEAD
显示摘要而非整个 diff:git diff --stat

#添加到仓库
$git commit -m "描述"

#取消缓存内容
$git reset HEAD

#删除文件
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。
要从 Git 中移除某个文件,就必须要从已跟踪文件清
单中移除,然后提交。可以用以下命令完成此项工作

$git rm <file>

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

$git rm -f <file>

如果把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可

$git rm --cached <file>

#重命名
$git mv oldname newname

#push到远程分支
git push origin 本地分支名字:远程分支名

#查看所有分支
git branch -a

* master
remotes/origin/HEAD -> origin/master

#创建并切换分支
git checkout -b 本地分支名 origin/远程分支名

查看当前远程仓库:

1
2
3
4
5
$ git remote
origin
$ git remote -v
origin git@github.com:Voidmort/blogs.git (fetch)
origin git@github.com:Voidmort/blogs.git (push)

Git 有两个命令用来提取远程仓库的更新。
1、从远程仓库下载新分支与数据:

git fetch

该命令执行完后需要执行git merge 远程分支到你所在的分支。
2、从远端仓库提取数据并尝试合并到当前分支:

git merge

该命令就是在执行 git fetch 之后紧接着执行 git merge 远程分支到你所在的任意分支。

删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ git remote -v
origin git@github.com:Voidmort/blogs.git (fetch)
origin git@github.com:Voidmort/blogs.git (push)

#添加仓库2
$ git remote add origin2 git@github.com:Voidmort/blogs.git


$ git remote -v
origin git@github.com:Voidmort/blogs.git (fetch)
origin git@github.com:Voidmort/blogs.git (push)
origin2 git@github.com:Voidmort/blogs.git (fetch)
origin2 git@github.com:Voidmort/blogs.git (push)

#删除仓库2
$ git remote rm origin2

$ git remote -v
origin git@github.com:Voidmort/blogs.git (fetch)
origin git@github.com:Voidmort/blogs.git (push)

git在终端不能识别中文

1
2
3
4
5
6
7
8
9
$ git status
On branch master
Your branch is up to date with 'origin/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: "\346\234\272\345\231\250\345\255\246\344\271\240\345\256\236\346\210\230\357\274\210\345\215\201\357\274\211.ipynb"

core.quotepath设为false的话,就不会对0x80以上的字符进行quote。中文显示正常。

1
git config --global core.quotepath false
0%