接下来是git常用命令的总结:
编写一个文件之后要把文件放单Git仓库需要两步, 举例编写了一个文件readme.txt
第一步,git add命令告诉Git,把文件添加到版本库的缓存区中
$ git add readme.txt
第二步,git commit命令告诉Git,把文件从缓存区中提交到分支
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
git status 时刻查看工作区、仓库 当前的状态
git diff <filename> 查看filename文件被修改了什么
git diff HEAD -- <namefile>
git log 查看提交历史,显示从最近到最远的提交日志
git log --pretty=oneline 命令作用同上,只是显示更简洁
git log --graph 查看分支的合并情况
git log --graph --pretty=oneline --abbrev-commit 简洁查看分支的合并情况
git reset --hard HEAD^ 回退到上一个版本
git reset --hard HEAD^^ 回退到上上一个版本
git reset --hard HEAD~100 回退到上100个版本
git reset --hard 04ef 回退到commit id 为 04ef....的某个版本,也可以是未来的某个版本
git reflog 用来记录你的每一次命令,以便确定要回到未来的哪个版本
git checkout -- <namefile> 把文件namefile在工作区的修改全部撤销,前提是工作区的修改还没有添加到暂缓区
git reset HEAD <namefile> 可以把暂存区的修改撤销掉(unstage) 然后用上边的命令撤销修改
删除文件
rm <namefile> 在工作区删除了文件后,下一个命令
git rm <namefile> 从版本库中删除namefile文件 删除之后 git commit提交 记得加 -m
git checkout -- <namefile> 如果误删,版本库里还有,可以把误删文件恢复到最新版本,原理版本库里的版本替换工作区的版本,无论是修改还是删除 都可以“一键还原”
如何关联远程库:
git remote add origin git@github.com:YanMario/mac.git
删除被关联远程仓库的名字:
git remote rm origin
将本地仓库与github上的一个仓库进行关联。红色的字分别对应你Github的帐号和仓库名称,添加后远程库的名称就是origin,是Git的默认叫法,也可以改成其他名称
git push -u origin master
第一次推送master分支时 加上 -u参数,这样Git不仅会把本的master分支内容推送到远程新的master分支,还会把本地的master分支与远程的master分支关联起来,以后推送和拉取可以简化命令 省去-u参数
git push origin master 把本地master分支的最新修改推送到Github
如何克隆远程仓库:
git clone git@github.com:YanMario/mac.git
创建与合并分支:
git branch dev 是创建一个新的分支名字为dev
git checkout dev 是切换分支到dev,相当于HEAD指针指向了dev
git checkout -b dev 将上边的两条命令合并为一条命令
git branch 列出所有分支,当前分支前边会有一个 *
创建一个分支后对文件进行了改动后,要将文件添加缓存区(git add) 然后将文件提交到版本库(git commit -m "xxx")
现在dev工作完成,我们就可以切换回master分支:
git checkout master 切换分支到master中
当切换到master分支中,刚才文件改动后的内容不见了,因为那个提交是在dev分支上,而master分支此刻的提交点并没有变
现在,我们把dev分支的工作成果合并到master分支上:
git merge dev
合并时表示禁用Fast forward:
git merge --no-ff -m "merge with no-ff" dev 会多有一次commit 所以加上 -m.
加上 --no-ff 参数后可以使用普通的合并,合并后的历史有分支,能看出来曾经做过合并,而 fast forward合并看不出来曾经做过合并
合并完成后,可以放心的删除dev分支:
git branch -d dev
如果分支删除被阻挠,可以使用以下命令可以强行删除:
git branch -D dev
当修复bug时,想创建另一个分支来修复它,但正在dev上进行的工作没有完成,可以先保存现场:
git stash 把当前工作现场“储藏”起来,等恢复现场后继续工作
git stash list 查看保存的工作现场
git stash apply 恢复现场,但stashd内容并不删除,需要在用命令 git satsh drop 来删除
git stash pop 恢复的同时直接把stash内容也删除
git fetch 将远程的分之拉取下来