前言
很早就接触了GitHub,也安装过GitHub的win版本,win上体验极差,连安装都比较费劲。对于多数大拿而言,都是用命令行去管理自己的代码,但是自己以前百度了一些Git使用方式,由于对github-repository设置不太熟悉,觉得这个比较麻烦,因此也就懒得去弄它。今日购买域名后,fork了别人的repository建立博客网站,如果像原来一样直接在网页上修改编辑repository那就太麻烦了(网页上传动不动就不成功,而且由于误操作什么的可能导致其托管的网站崩溃,上一个自己的网站就是这么玩完的,MMP),于是只能硬着头皮捣鼓Git,经过一下午折腾,在Ubuntu上敲了一遍Git基本命令行,总算是学到了。这里做个笔记一一记下,以方便以后查阅使用。
1. 安装git
$ sudo apt-get update
$ sudo apt-get install git
#2. 编辑配置信息
$ sudo vim ~/.gitconfig #默认是没有该配置文件的
[user]
name = rolabhj
email = rolabhj@gmail.com
$ git config --list #编辑好后即可查看配置
3. 创建公钥
$ ssh-keygen -C 'rolabhj@gmail.com' -t rsa #在本地使用可以不用加密码,一路回车即可
4. 上传公钥
Title可以随便命名,Key的内容拷贝自cat ~/.ssh/id_rsa.pub
5. 测试
$ ssh -v git@github.com #debug:Exit status 1即安装成功
6. 使用
-
常用
$ git init #初始化该目录 $ git add file #把文件添加到版本库中 $ git status #显示工作路径下已修改的文件 $ git commit -m "Initial Commit" -a #提交所有文件,m表示message ,a表示所有 $ git commit -m "Initial Commit" file #提交特定文件 $ git commit --amend #请勿修改已发布的提交记录 $ git diff #显示与上次提交版本文件的不同 $ git grep "Hello" #从当前目录的所有文件中查找文本内容 $ git log #显示所有的提交记录 $ git remote add origin ssh://git@git.domain.tld/repository.git #关联到远程库 $ git remote -v #查看远程主机名 $ git push origin master #提交代码
ssh:// HTTPS
查看下图
-
删除远程文件
$ git rm -r --cached file-master $ git commit -m "delete file" $ git push origin master # 或者先删除本地文件然后add commit再push $ git add -A #它能stages所有文件,git add.只能stages新文件和被修改文件,没有被删除文件
-
添加(修改)文件
# 先git clone到本地,然后创建新文件readme.md $ git add readme.md #添加到仓库 $ git commit -m "first commit" #添加说明 $ git push -u origin master #推到远程(-u本地分支与远程分支保持同步)
推送成功
注意:每次修改,如果不add到暂存区,那就不会加入到commit中
-
远程更新到本地
$ git fetch origin master:tmp #远程获取最新的版本到本地的tmp分支上 $ git diff tmp #进行比较 $ git merge tmp #合并 $ git git branch -d tmp #delete tmp $ git pull origin master #相当于git fetch 和 git merge
-
分支与标签
$ git branch #列出所有的分支 $ git checkout <branch> #切换分支 $ git checkout -b <branch> #创建并切换到新分支 $ git branch <new-branch> #基于当前分支创建新分支 $ git branch -d <branch> #删除本地分支 $ git tag <tag-name> #给当前版本打标签
-
撤销
$ git reset --hard HEAD #放弃工作目录下的所有修改 $ git reset HEAD #移除缓存区的所有文件(i.e. 撤销上次git add) $ git checkout HEAD <file> #放弃某个文件的所有本地修改 $ git revert <commit> #重置一个提交