基础提交操作
git init # 将本地文件夹变为一个git仓库
git clone #将远程仓库克隆到本地
git log 查看提交记录
git fetch 命令更新remote索引,解决git branch -a没有最新分支的问题
git add # 将单个文件从工作区添加到暂存区
git add . # 将所有文件添加到暂存区
git commit -m “messenge” # 将暂存区文件提交到本地仓库
git status # 查看工作区状态,显示有变更的文件。
git diff # 比较文件的不同,即暂存区和工作区的差异???
撤回操作
还没有add到暂存区,只在本地工作区
当你改乱了工作区某个文件的内容,但还没有add到暂存区
git checkout # 撤销工作区的某个文件到和暂存区一样的状态 或
git checkout . # 撤销工作区所有文件
已经add到暂存区,还没有commit到本地仓
假设你执行了 git add . 之后发现 file1.txt 和 file2.txt 不应该被添加。你可以按如下步骤操作:
git reset HEAD file1.txt file2.txt # 移除这两个文件从暂存区
git status # 检查状态确认
当已经进行了commit到本地仓,还没有push到远程仓
git reset --soft commitid # 还原到某一次提交, 本地仓回滚, 保留工作区和暂存区的内容
git reset --mixed commitid # 还原到某一次提交,本地仓和暂存区都回滚, 只保留工作区的内容 —mixed 可以省略
git reset --hard commitid # 还原到某一次提交 本地仓、暂存区、工作区 都回滚
git reset --hard origin/branchname 完全重置,强制覆盖本地代码
git reset --hard HEAD^ # 回退到上次提交的状态
git reset --hard HEAD~3 # 回退到3个版本前的状态
分支操作
查看分支
git branch 查看当前工作在那个分支 本地所有分支
git branch -a 可以查看远程所有的分支
git branch -vv 查看本地分支跟远程分支是否存在追踪关系
切换分支
git checkout master 仅仅切换分支到master
创建本地分支: 基于当前本地分支创建本地分支
git branch 基于当前本地分支创建本地分支
git checkout -b 基于当前本地分支创建本地分支,还会切换到该分支
创建本地分支: 基于远程分支创建本地分支
git checkout -b origin/<remote_branch> 基于远程分支新建分支
创建远程分支:
git checkout -b 首先在本地创建一个分支
git push origin 然后推送到远程仓库
删除分支:删除本地分支
git branch -d # 删除已经合并的分支;例如name分支已经合并到了当前dev分支
git branch -D # 强制删除分支
删除分支:删除远程分支
git push origin --delete <remote_branch>
合并分支
git merge dev 合并dev分支到当前分支
push分支
git push origin local:remote 完整的写法,将本地当前分支的代码推送到远程指定的分支上
git push origin dev 代替 git push origin dev:dev 如果本地分支名和远程分支名一样
git push origin 推送所有本地和远程同名的分支的更改
git push 本地仓库只跟一台远程主机有关联,则 代替 git push origin dev:dev
解除分支和建立连接
git branch -vv 查看本地分支与远程分支的映射关系
git branch --unset-upstream 解除本地和远程分支的关联
git branch --set-upstream-to=origin/<remote_branch> 建立当前本地分支与远程分支的映射关系
git branch --set-upstream dev origin/<remote_branch> 创建关联本地dev和远程;和上面作用一样,不过要制定本地分支
切换分支 前保存代码
git stash 命令。将当前分支存起来,再切别的分支开发。完了再回来
git stash list 命令去查看我们“存储”的列表
命令:git stash pop stash@{num}
恢复工作进度到工作区,此命令的stash@{num}是可选项,在多个工作进度中可以选择恢复,不带此项则默认恢复最近的一次进度相当于git stash pop stash@{0}
整体迁移代码仓,new内容替换old内容
git clone --bare https://github.com/exampleuser/old-repository.git
cd old-repository
git push --mirror https://github.com/exampleuser/new-repository.git
其他参考
Git分支管理
https://blog.csdn.net/silence_pinot/article/details/111478596
git push的详细使用
https://blog.csdn.net/chaogu94/article/details/111057046
Git 更改本地分支与远程分支的映射关系
https://blog.csdn.net/qq_31417067/article/details/128516769
git修改分支名称
https://blog.csdn.net/weixin_49343190/article/details/121924241
对于解决 Git 的 Merge Conflict 你有哪些经验和技巧?
https://www.zhihu.com/question/21215715