其他参考 http://www.softwhy.com/article-8498-1.html
本地模拟多用户来学习 参考 其实就是克隆两个目录,两个目录的git config 不同的名字和邮箱,
$ git config --local user.name Alice
$ git config --local user.email Alice@git.com
本地有: 工作区, 缓存区,本地仓库(多个分支) 远程有:远程仓库(多个分支)
git init 初始化git仓库
git add <file> 添加文件到缓存区 , add 的时候,不会有任何反应.
git commit -m "备注" 提交到当前仓库
git commit -am “备注” -a参数可以将所有已跟踪文件中的执行修改或删除操作的文件都提交到本地仓库 ,注意,新加的文件 无法提交。还是得手动add
git commit --amend –-no-edit 修改代码后,提交。 原来的commit id 没有了,变成新的commit id 。 参考这里 和 这里 不加--no-edit不会弹出vim编辑器让你修提交备注,
git push --no-thin origin HEAD:refs/for/master 如果上面的 commit --amend之前的版本已经push了, 那么就需要用 这个来push到远端。 参考
git status 查看状态 changes not staged for commit 有修改
git diff filename 查看文件修改了哪里 . 这个文件应该是修改后 没有add到缓存区的文件即: 文件状态为已修改
git log 历史提交日志 git log --pretty=oneline 一行内显示
git branch -a 显示所有分支
git branch 显示本地分支
git branch -r 显示远程分支
git remote -v 显示远程仓库
git branch -m dev newdev 分支改名
git checkout -b dev origin/dev 建立dev分支,切到dev分支并和远程dev分支绑定
回撤:
git命令——revert、reset
git reset --hard HEAD^ 回退到上一个已经commit的版本
git reset --hard 1094a 回退到指定commit id - 即版本号
git checkout -- file 丢弃工作区的修改
git reset HEAD <file> 把提交到暂存区的撤回到工作区
如果回撤后,又要到未来,需要知道明确的版本号,如何知道版本号?==> git reflog 记录每一次的命令,可见, 上一次的commit是1094a(不用输完整的)
$ git reflog
e475afc HEAD@{1}: reset: moving to HEAD^
1094adb (HEAD -> master) HEAD@{2}: commit: append GPL
e475afc HEAD@{3}: commit: add distributed
eaadf4e HEAD@{4}: commit (initial): wrote a readme file
关于参数有三个 https://blog.csdn.net/qq_15003505/article/details/81408826
--hard 移动本地库HEAD指针,且重置暂存区,且重置工作区 撤回commit 撤回add 并把你删除或者新增的文件也回撤了.即,回撤到上一次commit时的初始环境
--mixed 移动本地库HEAD指针,且重置暂存区 (不写参数默认) 撤回commit 并撤回add
--soft 移动本地库HEAD指针 撤回commit
add以后又想恢复(从缓存区移除): git checkout -- 文件名 两个杠可以省略不写。但最好还是写一下,申明是文件的checkout, 否则如果有个分支和文件名相同,优先认为是分支。
恢复到指定的commit的某个历史版本: 1. git log --oneline 显示所有提交版本 找到commit id 2. git checkout 那个找到的commitid -- 文件名
某文件恢复到master的版本: git checkout master -- 文件名
已经add还未commit , 先 git reset HEAD 文件名 再git checkout --文件名
已经add且commit ,git reset --hard HEAD^
去除git mergetool不产生*.orig文件
git config --global mergetool.keepBackup false
或者直接进入系统用户目录下,修改.gitconfig文件,增加如下内容:
[mergetool]
prompt = true
keepBackup = false