Git & GitHub学习小结

原创 2016年08月28日 16:12:19

  *注:我学习Git的平台为Windows,学习工具为Babun。
  

// 设置用户名和Email地址

git config --global user.name "Your Name"
git config --global user.email "email@example.com"
  当然也可以直接修改用户目录下的 .gitconfig 文件,在文件中添加:

[user]
    name = Your Name
    email = email@example.com

或直接修改git仓库中的 .git 文件夹里的 config 文件,不过前两种是全局的(即所有的仓库都是这个用户名和Email),而后一种在git仓库中修改的方法是局部的(即只有该仓库的用户名和Email是设置的这个,其它的仓库需要重新设置)。

创建仓库:git init
  

// 在版本库中添加文件(分两步)

将文件添加到仓库:git add <file>
将文件提交到仓库:git commit -m "description"

查看仓库状态(是否修改,是否提交):git status
查看修改内容:git diff <file>
查看工作区和版本库里面最新版本的区别:git diff HEAD -- <file>

查看各版本提交内容:git log
查看命令历史:git reflog
回到上一版本(HEAD指最近提交的一个版本):git reset --hard HEAD^git reset --hard HEAD~1
跳转到指定版本(commit_id指版本id):git reset --hard <commit_id>

// git add 将文件修改从工作区添加到暂存区,git commit 将文件修改从暂存区添加到版本库
撤销修改:1. git checkout -- <file> 丢弃工作区的修改;
     2. git reset HEAD <file> 丢弃暂存区的修改信息;

git rm <file> 删除工作区文件并将删除信息添加到暂存区,
这时如果还没有提交(即 git commit),可通过两步撤销删除,
首先撤销暂存区的删除信息:git reset HEAD <file>
再撤销工作区的文件删除:git checkout -- <file>
当然如果已经提交了,就只能回退版本了。

// 使用远程仓库

创建SSH Key:ssh-keygen -t rsa -C "youremail@example.com"
  输入此命令后,在用户目录下.ssh目录中生成 id_rsa 和 id_rsa.pub 两个文件,id_rsa 是私钥,不能泄露,id_rsa.pub 是公钥,需要给别人。点击GitHub的“Settings”中的“SSH and GPG keys”,点击“New SSH key”,在key文本框里粘贴id_rsa.pub文件中的内容即可,Title任意填。

关联远程版本库:git remote add origin git@server-name:path/repo-name.git
  GitHub中远程库地址:点击“Clone or download”可显示 或 直接显示在“HTTPS|SSH”后面的文本框中。

第一次提交远程版本库:git push -u origin master
以后提交远程版本库:git push origin master
我在提交远程库的时候,出现以下问题:

{ Git } master » git push -u origin master
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0670 for ‘/home/user/.ssh/id_rsa’ are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.
Load key “/home/user/.ssh/id_rsa”: bad permissions
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

解决方法为:更改id_rsa权限:

{ .ssh } » chmod 600 id_rsa

参考资料:解决id_rsa权限不够http://robinwu.iteye.com/blog/1216647

从远程库克隆一个本地库:git clone git@server-name:path/repo-name.git

// 建立分支

查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>不推荐);
删除分支:git branch -d <name>

查看分支合并图:git log --graph

//合并分支时,加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能用git log –graph看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并,这种合并要创建一个新的commit,所以加上-m参数,把commit描述写进去,命令如下:
git merge --no-ff -m "merge with no-ff" <name>推荐使用这一种方式合并分支)。

// 当要去做另一分支上的事,而当前分支又没完成,可先:
保存当前工作:git stash
查看保存的工作:git stash list
// 当另一分支做完并提交后,再回到当前分支,
恢复当前工作并删除保存工作列表:git stash pop

// 多人协作时

查看远程库信息,使用git remote -v
本地新建的分支如果不推送到远程,对其他人就是不可见的;
从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓取远程的新提交;
在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branch-name,本地和远程分支的名称最好一致;
建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name origin/branch-name
再从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。
  *注:不推荐直接使用git pull,而应该使用git fetch origin branch-name,git fetch是从远程分支获取最新的版本到本地但不合并,这样就可以方便我们对比查看更新情况,然后再决定是否合并;git pull相当于git fetch 和 git merge,直接抓取并合并。

参考资料:Git fetch和git pull的区别http://blog.csdn.net/hudashi/article/details/7664457

// 管理标签

新建一个标签(默认为HEAD):git tag <name>
也可以指定一个commit id:git tag <name> <commit_id>
指定标签信息:git tag -a <tagname> -m "description"
查看所有标签:git tag
查看标签信息:git show <tagname>

推送一个本地标签到远程:git push origin <tagname>
推送全部未推送过的本地标签:git push origin --tags
// 删除远程标签,要先
删除一个本地标签:git tag -d <tagname>
// 再
删除一个远程标签:git push origin :refs/tags/<tagname>

// 忽略特殊文件

将要忽略的文件名写入.gitignore文件中,然后commit即可(可使用通配符*)。

参考资料

[1] Git教程http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

版权声明:本文为博主原创文章,未经博主允许不得转载。

菜鸟级的Git与GitHub使用总结

菜鸟级的Git与github学习经验
  • zsp765098084
  • zsp765098084
  • 2016年12月01日 14:58
  • 1473

GitHub上Top20个 Python 语言机器学习项目

1. Scikit-learn www.github.com/scikit-learn/scikit-learn Scikit-learn 是基于Scipy为机器学习建造的的一个Pytho...
  • abcd1f2
  • abcd1f2
  • 2016年01月27日 11:30
  • 1704

18个最热深度学习Github项目逐一介绍

 摘要: 前几天meta-guide.com列出了100个深度学习的源代码项目,但其中大部分都不活跃。这里我们精选出18个最活跃的项目,每个都制作了信息卡片,一目了然,方便比较和转贴。 ... ...
  • huixingshao
  • huixingshao
  • 2015年03月23日 10:03
  • 10424

关于git与github的 小结(持续更新)

一、最让初学者纳闷的,git 与 github 到底是什么,是什么关系。   它们完全是名字相近,但确又的确是不一样的两种东西,就像鱼香肉丝和鱼肉的关系,夫妻废片和夫妻的关系,java与javasc...
  • ForMyQianDuan
  • ForMyQianDuan
  • 2017年12月05日 14:06
  • 39

git&amp;github;学习笔记

  • 2012年06月18日 14:33
  • 40KB
  • 下载

git使用小结(安装,git添加版本库,git与github链接)

1、写在前面    使用git有一段时间了,用git加速代码的更迭与更好的远程管理代码。涵盖安装git,git添加版本库,新建项目push进github。 2、content 2.1、安装git   ...
  • duankaifei
  • duankaifei
  • 2014年12月07日 17:50
  • 831

学习git小结(二)

学习git小结(二) 下面都是我在学习时记的,稍微整理了一下 给大家推荐个网址可以很好的学习git 网址 git基本概念 Git 使用 SHA-1 算法计算数据的校验和,通过对文件的内容...
  • wwg377655460
  • wwg377655460
  • 2015年10月30日 19:46
  • 439

学习git小结(一)

学习git小结(一)Quickly Start 大家第一次接触git大都是用github,所有我们快速开始也用github来快速入门git 1 在github上创建项目 在github...
  • wwg377655460
  • wwg377655460
  • 2015年10月30日 19:30
  • 291

git学习小结(未完待续)

错误一 ! [rejected] master -> master (fetch first) error: failed to push some refs to 'https://g...
  • icessunt
  • icessunt
  • 2017年02月22日 22:43
  • 136

学习日志:git和github

1.在github网站https://github.com上注册个人账户,根据教程学习怎么创建仓库、拉取分支、pull requst、合并分支 也可以下载githubdesktop到本地安装操作...
  • xiexiangyuan_1990
  • xiexiangyuan_1990
  • 2016年11月16日 12:12
  • 112
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Git & GitHub学习小结
举报原因:
原因补充:

(最多只允许输入30个字)