Git 命令集 实践整理

文章命令摘抄于《GitHub入门与实践》一书、网上搜集和实践整理。git

生成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

执行后编辑器会启动
提交格式:shell

  • 第一行:一行文字简述提交的更改内容
  • 第二行:留空
  • 第三行:记述更改的缘由和详细的内容
编辑器启动后按 i 进入编辑状态,写完按 Esc 输入 :wq(w写入q退出)

git commit description

停止提交

编辑状态下想终止提交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 -

合并分支

默认是: --fffase forward 快速合并,不会生成新的提交

不使用快速合并

  • step 1 先切换回要合并到的主分支
$ git checkout master
  • step 2 而后合并 branch-b 分支
$ git merge --no-ff branch-b

--no-ff 的效果就像下面这样,并会生成一个新的提交。
--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>
相关文章
相关标签/搜索