首页 > 代码库 > Git 命令总结 及 GItHub 项目推送
Git 命令总结 及 GItHub 项目推送
#今天码了一个小时左右总结了一下git的命令还有一些注意点以及如何推送自己的github仓库上.
ps: 自己总结的难免出现理解或时语法上的错误[仅供参考]
Git命令
-
#添加到暂存区
-
#将所有内容加到暂存区
-
$ git status #查看工作区
-
$ git commit -m "注释" #从暂存区存入版本区,注释内容随意填
-
$ git commit -a -m "注释" #从工作区存入暂存区再存入版本区
-
$ git remote add origin git@xxxxx(ssh)
#(origin 是远程库的名字,也可以改成别的)
#注: 此处的origin是将你的SSH/HTTPS赋给origin,方便下面使用
↓以我的github某仓库为例:
-
$ git push -u origin master
#推送到GitHub, 加-u参数 ,git不但会把本地的master分支内容推送到远程新的master分支,还会把本地master分支和远程master分支关联起来
#注:此处的origin就是上边第六条的origin,也可以直接写成@git:xxxxxx[自己的SSH/HTTPS, 在创建一个库时会生成]
-
$ git clone [git@github.com:michaelliao/gitskills.git]#克隆一个github库到本地
#注: [] 内的为你要克隆的github库 同第六条
-
$ git checkout -b -dev
#创建dev分支,然后切换到dev分支上 (-b 表示创建并切换)
相当于两步: $ git branch dev
$ git checkout dev
-
$ git branch
#查看当前分支 会列出所有分支 并用*标出当前分支
-
$ git merge [dev] #合并指定分支到当前分支
-
$ git branch -d dev #删除分支 -d删除
-
$ git diff #工作区与暂存区的差异对比
-
$ git diff --cached(--staged) #暂存区与版本区区别
-
$ git diff master #工作区与版本库的差异对比
-
$ git commit --amend #撤销上一次的提交命令,重新提交新的代码
删除命令:
-
$ rm <file.name> 删除文件
-
$ git rm <file.name>
#把暂存区/工作区的文件删除
#注:git commit -m之后才是把版本库中的文件删除
#注:关于删除的几点:
$ git add demo.txt
$ git commit -m"create a simple file"
#假如你创建并提交之后想删除这个没用的文件 ↓
$ rm demo.txt
#这个时候git知道删除了文件,工作区和版本库就不一样了,(版本库中未删除,可以用git status查看)
#此时有两种选择 ↓
1: 从版本库中删除该文件 git rm demo.txt
然后 git commit -m"remove file" ,就删了
2: 删错了,想弄回来, 直接git checkout --demo.txt (checkout 其实是用版本库里的版本替换工作区里的版本)
版本回退:
$git reflog #查看所有版本(操作记录)
$git reset HEAD<file.name> #从暂存区撤销回工作区
$git checkout -- <file.name> #从工作区撤销上一次提交的版本
关于SSH警告
当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
The authenticity of host ‘github.com (xx.xx.xx.xx)‘ can‘t be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
#这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:
Warning: Permanently added ‘github.com‘ (RSA) to the list of known hosts.
这个警告只会出现一次,后面的操作就不会有任何警告了。
#by the way
SSH 在主目录下有一个 .ssh目录 里面有两个文件 id_rsa id_rsa.pub pub里的存放的是公钥.
如果另一个github账户想要往你的github仓库里推送,就需要添加此公钥, 以确保可以成功推送.
类似于一个信任列表或者协议 ,不然别人只能关联你的仓库,但无法推送进去
最后总结一下使用git的大体流程
★工作区 ---> 暂存区 ----> 版本库 ====> github仓库
? 在本地建一个git仓库或者在github上clone一个仓库
#本地创建: $mkdir xxx (创建一个目录) $cd xxxx (切换至此目录) $ git init (将此目录创建为版本库) 创建好的仓库会在当期目录下生成一个 .git的目录 此目录用来跟踪和管理你的仓库
? 仓库里未操作前为[工作区] ,可以进行正常的代码修改及其他操作
在自己创建的git仓库就是你的工作区. 而.git目录下存在暂存区(stage). git为我们
创建一个默认的分支master 以及指向master的一个指针HEAD
在工作区里 git checkout --index.html 可以丢弃工作区的修改 (-- 很重要. 不然就变成了切换分支)
此处有两种情况: 1. 还没commit 此时倒退回和版本库一模一样的转台
2.已经commit 此时倒退回git add时的状态
? 将工作区中的文件添加到暂存区 git add ./ 文件名
git add . 表示添加所有的文件 , 也可以用文件名.表示将某一个文件添加到暂存区
在commit 在此处使用 git reset HEAD index.html可以将暂存区里的文件回退到工作区最新的状态.(即保留工作区的修改,取消暂存区的修改)
? 将暂存区中的文件添加到版本区
.git目录下存在暂存区通过 git commit -m"注释". 将文件提交到版本区(合并到分支)
注:每次修改,如果不add到暂存区,那就不会加入到commit中
? 将版本区中的文件 推送至自己的github仓库
git push https / ssh地址 (自己去试 . 参考第6 和 第8条)
#如果是克隆来的仓库, 直接git push origin master 即可 origin 是默认的仓库名
★ 也可以用各种软件插件等等进行管理和提交, 但是无法体现git的特性. 而且对于一个程序员来说着实没有牌面, 很low ,我是拒绝的 : )
继续努力吧!
?后续的到做项目时再整理整理吧 ? END
Git 命令总结 及 GItHub 项目推送