- 使用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"