# git使用
# 关联git本地和远端仓库步骤
打开git,输入mkdir newProject 新建一个文件夹。
git init 初始化本地文件夹为一个可以管理的git仓库。
关联本地仓库和远端仓库:
git remote add origin http://${path}.git.
把文件放入本地仓库
- git status // 列出没有被git管理或者修改但还没有未被提交的文件
- git add . // 将未被管理的文件添加到git
- git commit -am "提交文件"
把本地库推送到远端仓库
git push -u origin master
- ps:当远端仓库使用Readme文件初始化项目,需要先
git pull origin master
,有固定格式时需手动编辑,按i修改,:wq退出
切换本地开发分支并管理远端分支
git checkout -b topic
// 创建并切换到topic新分支,相当于git branch topic 和git checkout topic 组合git push origin topic:topic
// 关联本地topic分支和远端topic分支 (没有将自动创建topic分支并关联)
# git 常用命令
# 开发四部曲。
- git add .
git commit -a "commit" / git commit -am "commit"
git pull origin master
git push origin master
# 代码冲突。
- 解决冲突
git add .
git rebase --continue
(或者再次git commit)git push origin master
# git 分支管理
git fetch (-p)
// branch在服务器上的最新状态git branch (-a)
// 查看所有branchgit branch newBranch
// 本地创建branchgit checkout branch
// 切换branchgit checkout -b topic
// 创建并切换到topic新分支git push origin topic:topic
// 关联本地topic分支和远端topic分支git branch --set-upstream-to=origin/topic topic
//设置本地topic的上游及远端分支(设置之后git pull将默认从远端topic分支可拉取代码,git push将默认推送代码到远端topic分支)- ......
# git版本管理
git reset --hard HEAD^
// 回退上一个版本git reset --hard HEAD~3
// 回退上三个版本git reset --hard 版本号
// 回退指定版本
# git远端版本回退
git checkout target_branch
// 切换到需要回滚的分支git pull
//更新代码git branch target_branch_copy
//备份一下这个分支当前的情况git reset --hard target_commit_id
//把target_branch本地回滚到target_commit_idgit push origin :target_branch
//删除远程 target_branchgit push origin target_branch
//用回滚后的本地分支重新建立远程分支git push origin :target_branch_copy
//如果前面都成功了,删除这个备份分支
# git 大小写不敏感问题
修改配置项
- 项目根目录下,ll -a
- cd .git/ 进入.git/文件下,ll -a
- 修改config配置文件 vim config
- ignorecase = false
- :wq退出保存
- 修改文件名,提交。
- ps:多人协作时不建议使用,大小写不统一时更新会报错。建议提交后再把配置项修改为true。
重命名
- git mv oldName newName
- git status
- 可以看到rename的提示,此时正常提交即可。
# stash
stash 用于临时保存工作目录的改动。开发中可能会遇到代码写一半需要切分支打包的问题,如果这时候你不想 commit 的话,就可以使用该命令
//暂存你的工作目录
git stash
//恢复工作目录
git stash pop
# rest
删除刚写的 commit,重新设置了 HEAD 和它指向的 branch
git reset --hard HEAD^
# reflog
通过 git reflog 看到移动 HEAD 的哈希值 ,保存一段时间内的记录
//找回分支
git checkout 37d9aca
git checkout -b new
# rebase
Rebase 对比 merge,优势在于合并后的结果很清晰,只有一条线,劣势在于如果一旦出现冲突,解决冲突很麻烦, 主要的区别在于是否保留分支的 commit 提交节点,rebase 会给你一个简洁的线性历史树
git rebase master
git checkout master
// 用于将 `master` 上的 HEAD 移动到最新的 commit
git merge develop
← markdown简历模板 浏览器缓存机制 →