git(二)--常用命令、rsa公钥配置、github

本篇,我们介绍下git命令常用命令,以及github的使用。

github,相信各位读者都是再熟悉不过了的。不过在此之前,希望读者可以注册个github账号,用自己的用户名及邮箱即可,非常的easy。

打个小广告哈,笔者的github地址: https://github.com/jellyflu

 

下面,我们在github中创建一个新的仓库(hello_git),填写项目名称(必须)、描述(可选)、是否公开(默认公开,创建私有库需要收费的哦,我们本着开源的精神,当然选公开),项目.gitignore文件(可选,关于.gitignore 后面再讲),项目license许可证(可选,常见的如MIT 、apache License 2.0、GUN GPL等)

 

创建完成后,github非常人性化地给我们提了一些命令参考,告诉我们如何初始化我们的项目,比如创建项目README、.gitignore文件。

 

git的项目开发大概有两种方式。

1、在本地建立一个本地库,与github远程库相关联。

2、直接clone github远程库到本地,进行开发。

下面我们采用第一种方式。

mkdir mygitwork   #作为我们的git工作目录

cd  mygitwork     

mkdir  hello_git 

cd hello_git 

git init #将当前目录初始化为一个git本地仓库。

 初始化空的 Git 版本库于 /home/docker/mygitwork/hello_git/.git/ 

ls -ah  # 当前目录中会多出一个.git 的隐藏目录,存放此git仓库的元数据信息,千万别动里面的东西哦

 

echo "hello world" > README  

 

git status # 查看工作区文件追踪状态,发现有一个新文件README没有被追踪。

# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#       README
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

git提示我们使用git add 命令以追踪文件。

 

git   add README    #将git工作区文件、目录添加到git暂存区。 git add命令后面可以跟文件名或目录名,如果是目录名,则git会递归添加目录中所有文件。

 

git diff #

git status 

# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#       新文件:    README

git提示我们,文件已添加到暂存区,如果需要撤销出暂存区,可使用命令 git rm --cached <file> ,或者我们也可以使用 git reset HEAD  [file] 丢弃暂存区文件的修改 。如果我们想进一步提交修改到本地仓库,可以使用git commit  -m '备注信息'  命令提交。

git commit -m 'add README'   #将git暂存区文件提交到本地仓库。

[master(根提交) 9a52a52] add README
 1 file changed, 1 insertion(+)
 create mode 100644 README

 

注意:上面的几个都不涉及远程库(github),添加和提交操作等操作都是发生在本地仓库。

接下来,我们想将本地仓库提交到远程库github。

然在此之前,笔者想先介绍写github的rsa密钥配置(公钥上传),在git中push代码(同步远程仓库)一般有两种方式:

1、https协议方式,每次push代码都需要用户输入密码,比较麻烦。

2、ssh 方式(git原生默认方式,传输速度快,效率高),可配置ssh公钥免密。

我们一般推荐用户使用ssh方式,这就需要配置ssh的免密。 

ssh-keygen -t rsa -C "youremail@xxx.com"  

找到~/.ssh/id_rsa.pub 文件,将其内容复制出来,粘贴到github的rsa密钥仓库中。 

好了,接下来我们就可以配置远程仓库并愉快地push了。

git remote add origin git@github.com:jellyflu/hello_git.git   #添加远程仓库,仓库名为origin(这是git中远程仓库常用名称,你也可以改成其他名字),仓库地址为git@github.com:jellyflu/hello_git.git 

 

git remote    #查看远程仓库

origin

git remote -v   #查看远程仓库详细信息

origin  git@github.com:jellyflu/hello_git.git (fetch)
origin  git@github.com:jellyflu/hello_git.git (push)

这里有两条数据,说明你可以push和fetch。如果用户只能fetch则只会显示fetch的那条。

 

git push  -u origin master 

Counting objects: 3, done.
Writing objects: 100% (3/3), 222 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:jellyflu/hello_git.git
 * [new branch]      master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master

注意:提交本地仓库到远程仓库中-u参数表示建立本地库与远程库追踪关系,通常-u参数只出现一次,就是在第一次push的使用。之后的每次无需加上-u参数,即
git push -u  origin master  #第一次push到远程仓库
git push origin master    #之后的每次push到远程仓库

 

ok,现在我们在浏览器上访问下github上的hello_git项目。 

 

 

说明,push成功了。 

 

接下来,笔者还想多介绍些git其他命令,就不再一一演示了。 

最常用的 git 命令有:
   add        添加文件内容至索引    
   bisect     通过二分查找定位引入 bug 的变更
   branch     列出、创建或删除分支
   checkout   检出一个分支或路径到工作区
   clone      克隆一个版本库到一个新目录
   commit     记录变更到版本库     
   diff       显示提交之间、提交和工作区之间等的差异 
   fetch      从另外一个版本库下载对象和引用
   grep       输出和模式匹配的行
   init       创建一个空的 Git 版本库或重新初始化一个已存在的版本库 
   log        显示提交日志 xx
   merge      合并两个或更多开发历史
   mv         移动或重命名一个文件、目录或符号链接
   pull       获取并合并另外的版本库或一个本地分支
   push       更新远程引用和相关的对象
   rebase     本地提交转移至更新后的上游分支中
   reset      重置当前HEAD到指定状态
   rm         从工作区和索引中删除文件
   show       显示各种类型的对象
   status     显示工作区状态  xxx
   tag        创建、列出、删除或校验一个GPG签名的 tag 对象

===============================

 

#工作区

git init  将当前目录初始化为一个git工程

git add #添加工作区文件到暂存区

git checkout  --  <file>  #丢弃工作区文件的修改

 

#暂存区

git add  #将文件添加到暂存区

git rm  --cached <file>  #将文件从暂存区中撤销

git reset HEAD  [file] # 丢弃暂存区文件的修改 

 

 

#本地提交

git commit -m 'xxxx' 

git commit  [file]   -m 'xxx'

git commit   [dir] -m 'xxx'

git commit  -a  -m 'xxx'

 

#本地库(分支)和远程库(分支)

git push  

git fetch

git push -u origin master #推送master分支 ,master通常是项目主分支,稳定。

git push origin master

git push -u origin dev  #推送dev分支,dev通常是开发分支,开发新功能,修复bug,迭代速度快。

git push origin dev  

 

 

#状态追踪 

git status #查看工作区文件追踪状态

 

#差异
git diff   [file]  # 查看工作区与暂存区的差异
git diff --cached [file]查看暂存区与本地库的差异
git diff HEAD  --  [readme.txt]  #查看工作区与仓库(分支)的差异

 

#日志
git log #查看提交日志
git reflog  #查看git命令历史 

git log --graph --pretty=oneline --abbrev-commit  #查看分支提交日志 图形化

 

#版本回退

git reset --hard bf32a   退回指定版本(commit id)
git reset --hard HEAD~1 回退至上一个版本 。  ~1表上1个,~2表上2个,同理~100表上100个。

 

#分支切换、创建、删除

git branch  查看分支

git branch  [name] 创建分支

git checkout -b  [name]  创建并切换分支

git checkout [name]  切换分支

git branch merge [name] 合并分支到当前分支

git  branch merge --no-ff  [name]  合并分支,总是以非fast-forward模式。

git branch -d  [name] 删除分支

git  branch -D [name] 强制删除分支

 

#tag创建、查看、删除  , tag与某次提交commit id绑定

git tag 查看tag

git show [tagname] 查看某个tag详情

git tag [tagname]   在当前(最新的)commit id上创建一个tag 

git tag [tagname] [commit id]  在某个指定的commit id上创建tag 

git tag  -a [tagname]   -m  '描述信息'   [commit id]   在某个指定的commit id上创建tag ,并指定tag描述信息

git tag -d [tagname] 删除tag 

 

推送标签 
git push origin v1.0   推送标签v1.0
git push origin --tags  推送全部尚未推送到远程的本地标签
git tag -d v0.9   删除本地标签
git push origin  :refs/tags/v0.9  删除远程标签,还是用push命令

 

#变基 rebase 

git rebase   

rebase操作可以把本地未push的分叉提交历史整理成直线

rebase的目的是使得我们在查看历史提交的变化时更容易,因为分叉的提交需要三方对比。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值