文章命令摘抄于《GitHub入门与实践》一书、网上搜集和实践整理。git
$ ssh-keygen -t rsa -C "your_email@example.com"
$ ls -al ~/.ssh
$ git config --global user.name "昵称" $ git config --global user.email "邮箱"
git init
git status
git add
暂存区是提交以前的一个临时区域
git commit
git commit -m "here enter description"
git commit
执行后编辑器会启动
提交格式:shell
编辑器启动后按 i 进入编辑状态,写完按 Esc 输入 :wq(w写入q退出)
编辑状态下想终止提交segmentfault
尚未输入过内容ssh
:q
退出已经有内容了,但不想保存编辑器
:q!
退出git log
git log --pretty=short
git log --pretty=oneline
git log README.md
对比文件的上一个提交,清晰显示改动的地方fetch
git log -p readme.md
git diff
在执行git commit
命令以前先执行git diff HEAD
,能够查看本次提交和上次提交之间的差异spa
git diff HEAD
分支前面有*
号这表示咱们当前所在的分支3d
git branch
建立branch-name
的分支,并切换到该分支下日志
git checkout -b branch-name
另一种建立写法code
git branch branch-b # 建立branch-b分支 git checkout branch-b # 切换到branch-b分支
git checkout branch-b
git branch -m old_name new_name
git checkout -
默认是:
--ff
fase forward 快速合并,不会生成新的提交
$ git checkout master
$ git merge --no-ff branch-b
--no-ff
的效果就像下面这样,并会生成一个新的提交。
图解4种git合并分支方法
将待合并的分支内容压缩成一个新的提交
$ git merge --squash branch-b
删除分支,删除前主分支的提交中有合并分支的提交,会丢失分支信息,内容不会丢失。
$ git merge -D branch-b
$ git log --graph
$ git reset --hard d6f34b7c6d72fdc4e3d01fe6fb2a430278b913ff $ git reset --hard d6f34b # 或者更简短一些,惟一便可
$ git reset --hard HEAD^
这个操做会撤销到上一个的本地提交,可是会保留其提交的修改内容,做用就是以便修正内容以后从新提交。
$ git reset HEAD~
在仓库执行过的操做日志都会被记录下来,包括乘坐时光机的操做
$ git reflog
未使用git add
命令的文件或目录,能够经过下面的命令来进行
$ git checkout -- filename // filename换成文件名或者文件,放弃单个 $ git checkout . // 放弃本地全部的修改
已使用git add
,但未使用git commit
命令的文件或目录
下面命令会回到add以前,文件会保留并不会删除
$ git reset HEAD filename // 放弃添加单个文件 $ git reset HEAD . // 放弃全部
还有一种状况,发现上面的操做都没法彻底清除本地的改动,可使用下面的命令。
缘由是,这些清不掉的文件都是新添加的文件,上面的操做只对改动原文件有效。
git clean -df # 删除新添加的文件
已使用git add
&git commit
的文件,撤销这次commit
git reset --hard commit_id // 直接还原到指定的commit记录,因此commit会被删除
仍会保留改动的内容
$ git reset
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
$ git show v1.0
$ git push origin --tags
$ git tag -d v1.0
$ git fetch origin branchname:branchname # 拉取branchname到本地branchname分支
若是已存在版本库里面的文件,是没法加入到.gitignore
忽略列表里面的。
可使用,下面的命令进行强制忽略
git update-index --assume-unchanged <files>
解除忽略命令
git update-index --no-assume-unchanged <files>