git常用命令(不定时更新)

  • 使用add和commit命令将文件提交

然后使用git checkout master(等同于git co master)切换到master上面,使用git pull --rebase

使用git checkout mylocalbranch(自己的分支名)切换回自己的分支,使用

git rebase master.

最后使用git push review,如果出现error,并且出现changes are not squashed.You are currently 2 commits ahead of master

这个时候使用git rebase master -i将两次commit合成为一次,接着使用git log检查一下,最后再次使用git push review

 

  • 需要将代码更新到最新的版本,但是已经做了一些操作

可以选择先将代码进行stash(暂存),也就是使用git stash,然后使用git status 会发现是干净的。

然后执行git checkout master  ----->>>   git pull --rebase

------->>> git checkout mylocalbranch   -------->>> git rebase master

这样代码就同步到最新的了

然后使用git stash list 查看自己的暂存列表   选择恢复某一个git stash apply stash@{index} (index>0)  如果index==0  直接使用git stash pop恢复最新的进度到工作区 git stash apply 1

git stash save "this is func3"这个命令是将stash的内容加上注释

 

  • 使用git进行add之后,如果需要将已经add的文件取消,可以使用命令:

git rm --cached "文件路径"

如果要将add的文件夹取消,那么可以使用以下命令:

git reset 文件夹(包含路径)

 

  • 当使用git commit -m "..."提交之后,如果之后的提交要基于之前的提交,那么可以使用以下命令:

git commit --amend

 

  • 如果造成之前的commit丢失  可以通过git status 查看,如果看不见,那么可以通过git reflog 查看

然后选择合适的hash  id,使用git reset --hard hash id  就回退到之前的版本了

 

  • 比较两次commit之间的差异可以通过git diff hash1 hash2 --stat 

查看两次commit之间的差异中具体的某一个文件可以使用:git diff hash1 hash2 --stat 中的 --stat改为具体的文件即可

将两次commit之间某一文件的差异提取成补丁:git diff hash1 hash2 filename > patch_name

将多个文件的差异放到同一个补丁:

git diff hash1 hash2 filename1 filename2 > patch_name

 

  • git co hashid

git co -b branchname(将commit提交到一个新的分支,特殊情况)

 

  • git co commit-id:这个会临时启用一个分支,然后这个临时分支的内容就是这个commit的内容,如果之后不使用了,那么切换到其他分支上,这个临时分支就会被取消。(网上解释:这个状态还不算是一个新分支吧,叫做 detached 状态。如果你这时做了个 commit, 那么这个 commit 就是属于一个新分支的,但如果不给这个新分支命名,然后又 checkout 了其他分支,那么这个新分支的引用计数就变为0了,会被回收)

 

  • git 打patch

首先选择需要打patch的文件;

git diff ../src/> diff.patch   (就是讲../src/下面的出现在暂存区的文件打入patch中)

然后将diff.patch这个文件放入一个目录

接着使用:

git apply diff.patch

或者git am --signoff < xxx.patch

就可以将这个patch应用到自己的分支上面了

先检查patch文件:git apply --stat newpatch.patch

检查能否应用成功:git apply --check newpatch.patch

(这个方法选用:应用补丁:git am --signoff < newpatch.patch)

此时需要解决冲突: 1、首先使用 以下命令行,自动合入 patch 中不冲突的代码改动,同时保留冲突的部分:git  apply --reject  xxxx.patch

(git diff test.c > ~/test.patch

git apply patch的路径加文件名)

 

  • git添加、放弃修改&放弃增加文件:

git add -u:将文件的修改、文件的删除,添加到暂存区。

git add .:将文件的修改,文件的新建,添加到暂存区。

git add -A:将文件的修改,文件的删除,文件的新建,添加到暂存区

本地修改了文件,并且没有放到暂存区

git checkout -- filename (文件进入暂存区,可以将文件恢复到修改之前,修改单个文件/文件夹)

git checkout .           (所有文件/文件夹)

本地新增了一些文件,没有放到暂存区

rm filename /rm dir -rf   (单个文件/文件夹)

git clean -xdf            (所有文件/文件夹)

本地修改了文件,并且已经添加到暂存区

git reset HEAD filename   (单个文件/文件夹)

git reset HEAD .          (所有文件/文件夹)

git co 被删除的文件或文件夹(恢复被删除的文件或者文件夹)

 

  • git checkout -b branch_name tag_name重新创建一个branch同时这个branch的内容是根据这个指定的tag_name来约束的

 

  • git reabse -i commit_id 将指定的commitID放入现在的branch

 

  • 统计一段时间

git log --after="2018-05-21 00:00:00" --before="2018-05-25 23:59:59"

git show tag名

 

  • 显示某个具体文件的修改记录:
git log --pretty=oneline 文件名   -------->会得到具体的hash值

git show  hash_id (通过上面的命令得到的hash) 显示这次commit具体修改的代码

 

  • git clean -nxfd 列出需要clean的文件

git clean -xfd 清理git未管理的文件

 

  • 提交本地代码到远程分支上(git br -a)

git pull <远程主机名> <远程分支名>:<本地分支名>     git pull origin remote_branch_name:local_branch_name

git push <远程主机名> <本地分支名>:<远程分支名>   git push origin local_branch_name:remote_branch_name

 

  •  git reset --soft HEAD^ 将commit的代码转换成add状态

 

  • 统计一段时间

git log --after="2018-05-21 00:00:00" --before="2018-05-25 23:59:59"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值