常用git命令
git commit -m "fix:问题描述 # 出问题的CM-jiro号" 如 提交记录描述模板:fix(admin/统计/企业支付): "导出所有用户信息" 点击无响应 #CM-31334
git branch -r 查看远程所有分支
git branch -a 查看本地和远程所有分支
git branch -a 查看远程分支(当前分支、同级分支、上一级分支、下一级分支,不能查看其它分支的子分支)
git branch -a | grep CM-30554
git tag 查看远程tag分支
git clone
git add
git add -i
git commit -m
git push
git checkout
git pull
git log
git log --oneline --graph 查看不同分支历史提交路线
git reset
git revert
gitk
gitk --all
git rebase
git rebase -i head~~ 默认合并前两个提交记录,合并后可以使用 git push -f 强制将本地合并的提交记录 推送到远程仓库 来改变远程仓库的提交记录
git rebase -i head~2 2表示将前两个提交记录进行和并
git merge
git fetch 更新索引(查看远程分支,发现看不到目标分支时执行该命令)
git stash 暂存修改的文件,会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,有时候rebase失败是因为有未提交的文件 所以先使用git stash隐藏修改的文件在rebase
在 修改 以及 提交 代码之前最好git pull --rebase把最新代码拉下来并合并,如果出现冲突那就先解决冲突先
git pull --rebase 默认将当前分支的远程分支拉下来 并与 当前分支合并
git pull --rebase origin CM-22901 拉最新代码 并将CM-22901分支 与 当前分支 合并
git stash pop 恢复 暂存修改的文件
相关案例: 注意--mixed --soft --hard 之间的区别
1. 本地修改了一堆文件(并没有使用git add到暂存区),想放弃修改。
单个文件/文件夹:git checkout -- filename
git checkout -- test.java
所有文件/文件夹:git checkout .
2. 本地修改/新增了一堆文件,已经git add到暂存区,想放弃修改。
单个文件/文件夹:git reset HEAD filename (注意与git reset HEAD^ 不一样)
所有文件/文件夹:git reset HEAD .
3、本地通过git add & git commit 之后,想要撤销此次commit
(1)git reset --mixed(等价于git reset 即不带参数,代码修改不变,需要重新add然后commit)
#回退所有内容到上一个版本
git reset HEAD^ (git reset --mixed HEAD^)
#回退到某个版本 git reset commit_id
git reset 057d (git reset --mixed 057d )
#回退a.py这个文件的版本到上一个版本,然后git add a.py即可(只有--mixed才能回退单个文件)
git reset HEAD^ a.py (git reset --mixed HEAD^ a.py)
(2)git reset --soft(代码修改不变,不需要重新add只需要commit)
#向前回退到第3个版本
git reset –-soft HEAD~3
git reset --soft head^^^
(3)git reset --hard(回退代码修改,重新修改代码后需要重新add然后commit,之前你改的代码会消失,慎用)
#将本地的状态回退到和远程的一样
git reset –-hard origin/master
#将本地状态回退到上一版本状态
git reset --hard e74705
git reset --hard head~1
git reset --hard head^
(注意:head 等价于 head~0)
4、git revert
git revert HEAD 撤销前一次 commit(回退到上一次提交)
git revert HEAD^ 撤销前前一次 commit(回退到上两次提交)
git revert commit (比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。
回退到上一次的远程提交(之前的commit会被删除)
1、git reset –hard 目标版本号
回退本地提交
git reset –hard e74705c6c09160ff66d6900cd4fa468d30e30fe7
然后需要强制覆盖远程提交
git push -f
适用场景:如果想恢复到之前某个提交的版本,且那个版本之后提交的版本我们都不要了,就可以用这种方法,reset后目标版本之后的提交记录都会被删除
2、git revert -n 目标版本号(之前的commit会被保留)
回退本地提交(其实是复制e74705c6c09160ff66d6900cd4fa468d30e30fe7版本的提交)
git revert -n e74705c6c09160ff66d6900cd4fa468d30e30fe7
提交本地修改
git commit -m "fix(archadm):bug修复"
提交本地修改改远程分支
git push
适用场景:revert后目标版本之后的提交记录不会被删除
修改远程提交记录:
1、修改本地提交记录
git commit --amend
然后强制提交到远程分支
git push -f origin CM-31499-fix
2、修改远程commit日志提交信息
git rebase -i head~1
以 r 编辑修改
git push -f
删除本地分支
git branch -d ECM-953
warning: deleting branch ‘ECM-953‘ that has been merged to
‘refs/remotes/origin/ECM-953‘, but not yet merged to HEAD.
Deleted branch ECM-953 (was 82dd516).
删除远程分支:
冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支
git push origin :ECM-953
也可以使用改命令完全删除分支
git push origin --delete ECM-953
git合并devyaomy 分支上改动的部分文件到当前分支
git checkout --path devyaomy file
如:git checkout --patch ECM-953 src/main/java/cma/antispam/ListVirusMailAction.java
git cherry-pick用于把另一个本地分支的commit修改应用到当前分支(再次提交那个commit到当前分支),可能比git checkout --path 命令方便一些
git cherry-pick [--edit] [-n | --no-commit] [-m parent-number] [-s] [-x] [--ff] [-S[<keyid>]] <commit>…?
--edit,编辑commit message
-n, --no-commit,只是在当前分支上apply这些commits的改变,但是不提交到当前分支
git cherry-pick --continue | --quit | --abort
如 git cherry-pick -n b872d926bed4a90631ecb4cd937616ad492b5bc7
查看commit的内容
最近一次提交记录
git log -n 1 (1为数字)
最近一次提交所有更改过的文件
git log -n 1 --stat
最近一次提交所有更改的细节
git log -n 1 -p
如何用命令将本地项目上传到git
1、(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库
git init
2、把文件添加到版本库中,使用命令 git add .添加到暂存区里面去,不要忘记后面的小数点“.”,意为添加文件夹下的所有文件
git add .
3、用命令 git commit告诉Git,把文件提交到仓库。引号内为提交说明
git commit -m ‘first commit‘
4、关联到远程库
git remote add origin 你的远程库地址
如:
git remote add origin https://github.com/cade8800/ionic-demo.git
5、获取远程库与本地同步合并(如果远程库不为空必须做这一步,否则后面的提交会失败)
git pull --rebase origin master
6、把本地库的内容推送到远程,使用 git push命令,实际上是把当前分支master推送到远程。执行此命令后会要求输入用户名、密码,验证通过后即开始上传。
git push -u origin master
7、状态查询命令
git status
其他参考网址
http://www.cnblogs.com/tugenhua0707/p/4050072.html
原文地址:https://www.cnblogs.com/zwyu/p/11664814.html