git基础

一、git常用命令

git init
git add xxx.txt yyy.txt
git commit -m "xxx"
git log
git status

git checkout -- file   //丢弃工作区的修改
git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令

git reset HEAD file1.txt  //git reset HEAD 可以把暂存区的修改撤销掉(unstage),重新放回工作区

git reset --hard HEAD^
git reset --hard 1094a(从版本库中切换到某个分支)
git reflog
$ git rm test.txt  //从版本库中删除

git diff #是工作区(work dict)和暂存区(stage)的比较
git diff --cached #是暂存区(stage)和分支(master)的比较
提交后,用git diff HEAD -- readme.txt命令可以查看工作区和版本库里面最新版本的区别

小结:git checkout和git reset的区别

git checkout --1是没放到暂存区时撤销修改,2是放到暂存区后回退到放在暂存区前的状态。
git reset 是用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区

场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。

git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”。

命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。

二、添加远程仓库

git remote add origin [email protected]:bolenzhang/learngit //添加远程仓库
git push -u origin master //把本地库推送到远程库上
git push origin master //第一次加-u,后面推送可以忽略

git config --global user.name "bolen zhang"
git config --global user.emal "[email protected]"
git 客户端生产key:
ssh-keygen -t rsa -C "[email protected]"
~/.ssh
cat id_rsa.pub

三、从远程库创建项目

上面我们讲了先有本地库,后有远程库的时候,如何关联远程库。
现在,假设我们从零开发,那么最好的方式是先创建远程库,然后,从远程库克隆。
创建项目略
git clone [email protected]:bolenzhang/gitskills.git //克隆一个本地库

git支持多种协议,包括https,但通过ssh支持的原生git协议速度最快。

四、技巧

默认情况下,会下拉获取带有完整历史的仓库,这个过程需要较长时间。也可以通过--single-branch -b master --depth 1 命令选项来指定只获取master分支最新的提交代码,如下命令所示。

git clone --single-branch -b master --depth 1 http://gerrit.hyperledger.org/r/fabric

五、创建分支

git checkout -b dev

git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

$ git branch dev
$ git checkout dev
Switched to branch 'dev'

然后,用git branch命令查看当前分支:

$ git branch
* dev
 master

现在,我们把dev分支的工作成果合并到master分支上:

$ git merge dev

合并完成后,就可以放心地删除dev分支了:
$ git branch -d dev

你可能感兴趣的:(git基础)