同步远程master,清除本地代码
git fetch // 是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中
git reset --hard origin/master // 从远程仓库把代码取回来,然后覆盖本地仓库、本地暂存区和工作区
git pull // 是将远程主机的最新内容拉下来后直接合并
首次提交
git init
git remote add origin [远程仓库地址]
git add .
git push --set-upstream origin master // master可以根据子的需要自定义,就是当前分支在远程分支对应的名称
git push
git 命令
-
基本命令
git clone [远程库地址] // 克隆远程库
git init // 初始化本地库
git pull origin [远程分支] // 拉取远程分支代码并合并本地
git status // 查看工作区、暂存区的状态
git add <file name> // 将工作区的 “单文件” 添加到暂存区
git add <file name> <file name> // 将工作区的 “多文件” 添加到暂存区
git add . // 将工作区的 “所有文件” 添加到暂存区
git rm --cached <file name> // 移除暂存区的修改
git commit -m "提交日志" // 文件从暂存区到本地库
git push origin [本地分支]:[远程分支] // 更新远程分支代码,如果远程分支不存在,创建分支并推送
git push origin --delete [远程分支] // 删除远程分支
-
日志命令
git log // 查看历史提交 (空格向下翻页,b向上翻页,q退出)
git log --pretty=oneline // 以漂亮的一行显示,包含全部哈希索引值
git log --oneline // 以简洁的一行显示,包含简洁哈希索引值
git reflog // 以简洁的一行显示,包含简洁哈希索引值,同时显示移动到某个历史版本所需的步数
-
分支操作
git branch // 查看本地分支
git branch -a // 查看所有分支
git branch -D [分支名] // 删除本地分支
git push origin --delete [远程分支名] // 删除远程分支
git branch [分支名] // 新建分支
git checkout [分支名] // 切换分支
git checkout -b [分支名] // 新建并切换分支
git merge [被合并分支名] // 合并分支
代码回滚
参考:https://hacpai.com/article/1516671091985
-
在工作区的代码
git checkout -- a.txt // 丢弃某个文件
git checkout -- . // 丢弃全部
注意:git checkout – . 丢弃全部,也包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是,回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响。对commit提交到本地分支的代码就更没影响了。当然,如果你之前压根都没有暂存或commit,那就是回到你上次pull下来的样子了
-
代码git add到缓存区,并未commit提交
git reset HEAD .
git reset HEAD a.txt
这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化
-
git commit到本地分支、但没有git push到远程
git log // 得到你需要回退一次提交的commit id
git reset --hard <commit_id> // 回到其中你想要的某个版
git reset --hard HEAD^ // 回到最新的一次提交
git reset HEAD^ // 此时代码保留,回到 git add 之前
-
git push把修改提交到远程仓库
1.通过git reset是直接删除指定的commit
git log // 得到你需要回退一次提交的commit id
git reset --hard <commit_id>
git push origin HEAD --force // 强制提交一次,之前错误的提交就从远程仓库删除
2.通过git revert是用一次新的commit来回滚之前的commit
git log // 得到你需要回退一次提交的commit id
git revert <commit_id> // 撤销指定的版本,撤销也会作为一次提交进行保存
3.git revert 和 git reset的区别
git revert // 是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留
git reset // 是回到某次提交,提交及之前的commit都会被保留,但是此commit id之后的修改都会被删除