一, git log 查看提交日志情况
根据 commitId进行版本回退
git reset --hard commitId(commitId可以是一部分,不用完整的ID)
只输出一行信息: git log --pretty=oneline
快速回退:
git reset --hard HEAD^ 回退到上一个版本
git reset --hard HEAD^^ 回退到上上个版本
如果在进行版本回退后想要查看最新的commitId,此时git log已经无法满足,可以使用 git reflog查看历史所有提交commit信息.
二,工作区、暂存区和提交区
在某个目录下添加所有文件到暂存区,可以使用: git add . 来操作
1,如果修改了某个文件内容,想要快速撤销掉,可以使用: git checkout --文件名,则本地修改内容清空.(在工作区)
2,如果修改了某个文件内容并且git add到了 暂存区,则可以先使用:
git reset HEAD 文件名 回退到工作区
git checkout --文件名 清空本地修改内容
三,合并分支并解决冲突
merge
1,git checkout -b dev_zhang 新建一个dev_zhang分支
2,切换分支: git checkout dev_li
3,查看当前分支情况: git branch
4,在当前分支,将指定分支合并到当前分支: git merge dev_li
5,合并冲突后需要手动执行 git add -> git commit
rebase
master为原始库分支,dev为fork库分支
1, master 变更,dev未变更,将master合并到当前分支dev
先checkout到当前分支dev
git rebase master
git push
2,master变更一次,dev也变更了1次;master继续变更2次,dev也变更了2次,此时将master分支合并到dev分支(未提交pr)
先checkout到master然后git pull 拉取最新代码
checkout到dev分支,执行git rebase -i origin/master
如果存在冲突,解决冲突 并执行 git add . ,然后执行 git rebase --continue
此时控制台会有一些提示信息
一般提示执行 git rebase --continue
最后执行 git push
然后打开原始库,创建一个pr,此时可以看到代码提交记录
注:idea中的rebase current onto selected 相当于 git rebase xxx
四,git config 和配置别名
1,查看当前config配置内容: git config -l 包含:仓库级别、全局级别、系统级别
2,查看当前配置的全局信息: git config --global -l
3,删除之前配置的user.name: git config --global --unset user.name
4,添加用户: git config --global --add user.name = xxx
5,配置别名status为st: git config --global alias.st status
五, 打标签和忽略文件
5.1当我们要进行版本回退时,不容易记住每次提交的commitId,这时候如果我们有tag的话就会很方便进行版本管理,而一般tag的命名最好是跟着发版日期(版本号)走.
1, 查看仓库已有的tag: git tag
2, 创建tag: git tag v1
3, 指定某个commitId进行打标签: git tag v1 commitId
通过某个tag进行代码回滚:
git checkout v1
git checkout -b bugfix
git push origin bugback:master -f
git reset --hard cimmitId
参照: https://www.cnblogs.com/zqzjs/p/6812214.html
4, 删除某个tag: git tag -d v1
5.2 忽略指定的后缀文件
在根目录下创建 .gitignore文件,不同语言的创建规则可参考: GitHub - github/gitignore: A collection of useful .gitignore templates
六, GitHub(国外)和码云(国内)
可搭建自己的私有仓库(别人不可见,gitlab),一般公司会自己搭建自己的gitlab.
1, 关联本地仓库和指定的远程仓库: git remote add origin git地址
2,查看是否与远程关联上了: git remote (若出现origin则表示关联成功)