文章命令摘抄于《GitHub入门与实践》一书、网上搜集和实践整理。
生成ssh key
$ ssh-keygen -t rsa -C "your_email@example.com"
查看ssh目录的文件
$ ls -al ~/.ssh
设置git昵称和邮箱
$ 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
执行后编辑器会启动
提交格式:
- 第一行:一行文字简述提交的更改内容
- 第二行:留空
- 第三行:记述更改的原因和详细的内容
编辑器启动后按 i 进入编辑状态,写完按 Esc 输入:wq(w写入q退出)
中止提交
编辑状态下想终止提交
-
还没有输入过内容
- 输入
:q
退出
- 输入
-
已经有内容了,但不想保存
- 输入
:q!
退出
- 输入
查看提交日志
git log
显示简短的提交日志
git log --pretty=short
显示一行的提交日志
git log --pretty=oneline
只显示指定目录、文件的日志
git log README.md
显示文件的改动
对比文件的上一个提交,清晰显示改动的地方
git log -p readme.md
查看工作树和暂存区的区别
git diff
查看工作树和最新提交的差别
在执行git commit
命令之前先执行git diff HEAD
,可以查看本次提交和上次提交之间的差别
git diff HEAD
分支的操作
显示分支列表
分支前面有*
号这表示我们当前所在的分支
git branch
创建分支
创建branch-name
的分支,并切换到该分支下
git checkout -b branch-name
另外一种创建写法
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 快速合并,不会生成新的提交
不使用快速合并
- step 1 先切换回要合并到的主分支
$ git checkout master
- step 2 然后合并 branch-b 分支
$ 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^
撤销上一个提交(commit)
这个操作会撤销到上一个的本地提交,但是会保留其提交的修改内容,作用就是以便修正内容之后重新提交。
$ 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会被删除
放弃添加
撤销add操作
仍会保留改动的内容
$ git reset
版本tag
$ git tag -a v0.1 -m "version 0.1 released" 1094adb
查看tag版本
$ git show v1.0
同步tag到远程仓库
$ git push origin --tags
删除tag版本
$ 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>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。