Git
1.放弃修改:
1.未使用git add 缓存代码
使用git checkout – filename放弃某个文件的修改 或 git checkout . 放弃所有文件的修改
git checkout -- filename
git checkout .
- 此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除
- 此命令不会删除新建的文件,因为新建的文件还没加入git管理系统中,所以对git来说是未知,只需手动删除即可
2. 已经使用git add缓存代码,未使用git commit
使用git reset HEAD filename 或 git reset HEAD 放弃所有文件的修改
git reset HEAD filename
git reset HEAD
- 此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了第一步1. 未使用git add 缓存代码,继续使用用git checkout – filename,就可以放弃本地修改
3. 已经使用git commit提交了代码
- 使用 git reset --hard HEAD^ 来回退到上一次commit的状态
git reset --hard HEAD^
- 或者回退到任意版本git reset --hard commit id ,使用git log命令查看git提交历史和commit id
git reset --hard commit id
2. 回滚到以前的某个版本
git reset HEAD
HEAD 指向的版本为当前的版本,即最新最新的提交
上一个版本为HEAD^
上上一个版本为HEAD^^
HEAD~15 往上15个版本
3. 配置别名
(全局,本电脑上的本用户的所有git仓库)
git config --global alias.st status
4. 配置log
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
5. 如何撤销git add
不小心执行了git add . 操作,但是又不能提交所有的文件,因为对应不同的分支,现在怎么样可以将git add 撤销回来
git reset --mixed
#这样文件退出暂存区,但是修改保留
6. 如何撤销git commit
写完代码后,我们一般这样
git add . //添加所有文件
git commit -m “本功能全部完成”
执行完commit后,想撤回commit,怎么办?
这样凉拌:
-
git reset --soft HEAD^
这样就成功的撤销了你的commit,注意,仅仅是撤回commit操作,您写的代码仍然保留。
HEAD^ 的意思是上一个版本,也可以写成HEAD~1
如果你进行了2次commit,想都撤回,可以使用HEAD~2至于这几个参数:
-
–mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数, git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的 -
–soft
不删除工作空间改动代码,撤销commit,不撤销git add .
-
–hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
-
-
git丢弃本地修改的所有文件(新增、删除、修改)
git checkout . && git clean -xdf
7. 查看远程仓库位置
git remote -v
origin git@git.code.tencent.com:media_go/assist.git (fetch)
origin git@git.code.tencent.com:media_go/assist.git (push)
8. 查看本地分支
git branch
9. 创建分支
git checkout -b <BranchName>
10. 删除本地分支
git branch -d <BranchName>
11. 删除远程分支
git push origin --delete <BranchName>
12 . 查看修改
使用git show即可显示具体的某次的改动的修改~
git show 356f6def9d3fb7f3b9032ff5aa4b9110d4cca87e
13.切换分支
git checkout master
14. 标签
列出标签 可带上可选的 -l 选项 --list
git tag
删除标签
git tag -d v1.4
提交所有标签
命令格式为: git push [origin] --tags
git push --tags
或
git push origin --tags
默认标签是打在最新提交的commit上的。有时候,如果忘了打标签,比如,现在已经是周五了,但应该在周一打的标签没有打,怎么办?
方法是找到历史提交的commit id,然后打上就可以了:
$ git log --pretty=oneline --abbrev-commit
aaff087 (HEAD -> devwhd, tag: v1.o, origin/devwhd) url add
471fd27 url update
d5a65e9 push url
cb96205 update sed msg
61328f7 time git
比方说要对url update这次提交打标签,它对应的commit id是471fd27,敲入命令:
git tag v0.9 471fd27
15. 本地修改了一堆文件(并没有使用git add到暂存区),想放弃修改
单个文件/文件夹:
git checkout -- filename
所有文件/文件夹:
git checkout .
16. 追加commit
在之前的commit中追加本次的修改,不会产生新的commit
git commit --amend
git push origin local:remote -f
17. 合并多条commit到一条
git log --找到自己提交最早的commit的前一个commitid
git rebase -i commitid
然后编辑文件:
pick = use commit
s = use commit, but meld into previous commit(但合并到先前的提交中)
选中一条pick,其他修改为s
(nano模式需要按ctrl+x退出)