Git学习笔记
Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。
Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
Git不同于SVN之前写过 SVN使用手册 ,搭建过SVN服务,现在复习一下Git
配置Git
首先创建SSH key:
ssh-keygen -t rsa -C "email@email.com"
在~/目录下生成.ssh文件夹,打开id_rsa.pub,复制里面的key。
在github上,进入 Account Settings(账户配置),左边选择SSH Keys,Add SSH
Key,title随便填,粘贴在电脑上生成的key。
验证是否成功
ssh -T git@github.com
如果是第一次的会提示是否continue,输入yes就会看到:You've successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。
接下来我们要做的就是把本地仓库传到github上去,在此之前还需要设置username和email,因为github每次commit都会记录他们。
git config --global user.name "your name"
git config --global user.eamil "your_eamail@email.com"
上传远程仓库,需要添加远程地址,仓库需要在github上先建立好
git remote add origin git@github.com:yourName/yourRepo.git
检出仓库
克隆本地仓库:
git clone /path/to/repository
克隆远程仓库:
git clone username@host:/path/to/repository
推送流程
$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
常用命令
#初始化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/远程分支名
查看当前远程仓库:
$ 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 远程分支到你所在的任意分支。
删除
$ 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在终端不能识别中文
$ 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。中文显示正常。
git config --global core.quotepath false