内容目录
cat <file> 查看文件内容
git diff HEAD <file> 查看工作区和版本库里面最新版本的区别
分支命令
git branch 查看分支
git branch <branchname> 创建分支
git checkout <branchname> 或者 git switch <branchname> 切换分支
git checkout -b <branchname> 或者 git switch -c <branchname> 创建+切换分支
git merger <branchname> 合并分支到当前分支
git branch -d <branchname> 删除分支
撤销/删除
git checkout <file> 撤销工作区的修改
git reset HEAD <file> 撤销暂存区的修改(回退到工作区)
git branch -d <localbranch> 删除本地分支,若是没有开发结束会要求使用 -D。
git log --graph --pretty=oneline --abbrew-commit 查看 git log 的分支情况
git log --graph 查看分支合并图
工作暂存
当在一个分支的修改还没有结束时,需要在另一个分支进行其他工作时,可以对目前的工作进行暂存,等优先级较高的任务完成后再从暂存区取出。
git stash 储存工作现场,此时该分支是干净的,没有修改的文件。
//切换到其他分支进行工作,工作结束。切回到原始工作分支。
git stash list 查看储存的工作现场
git stash apply 恢复现场,但是 stash 内容不会删除
git stash drop 删除 stash 内容
git stash pop 等同于上述两个命令,恢复现场 + 删除 stash
远程库命令
从远程库 clone 时,GIT 自动把本地的 master 和远程的 master 对应起来,并且远程的仓库默认名称为 origin。
git remote -v 查看远程库
git remote add origin git@github.com:michaelliao/learngit.git 关联远程库
git remote rm <name> 删除远程库,如 git remote rm origin。仅仅是解除了本地和远程的关系。
代码推送远程
git push -u origin master 第一次给仓库推送代码时加 -u ,使得Git不但会把本地的master
分支内容推送的远程新的master
分支,还会把本地的master
分支和远程的master
分支关联起来。后续就可以简化命令。
git push origin master 把本地库的所有内容推送到远程库(当前分支master推送到远程)
git push origin <localbranch> -f 将本地分支的代码推送到远程库(远程分支名和本地分支名相同)。
git push origin <localbranch>:<remotebranch> -f
遇到的问题
rebase 的时候可能出现冲突,导致 rebase 不会在执行完一次命令之后就可以成功。
git rebase upstrem master 一般会出现冲突需要解决掉。这时候查看 git branch 会显示 no branch,此时不能就行其他操作,只能进行冲突解决。
尤其注意,若是进行 git commit --amend 则会使得代码被何如到其他的分支中,出现故障,导致远程库中有两个 commit ,这是我们不希望的。若是不小心出现了这种情况,解决方法就是:新建一个干净的分支 new branch,然后 git cherry-pick <commit id> 这里的 commit id 是需要我们复制的正确的 commit,然后关闭原先 PR, 重新 push 代码,重新提 PR 即可。