1、常识
- 本地有三个区
- 在Git中,用
HEAD表示当前版本,HEAD^表示上一个版本HEAD^^表示上上一个版本HEAD-100表示100个之前的版本 - git 的commit id 是一串很长的十六进制数字,是git 自动哈希生成的
2、命令
2.1、本地仓库操作
git status
git clean -f 删除、-n查看、- i(推荐)贼厉害,进去之后可以选择删除
git add 与之相对应的是 git rm
git commit -m “commit log”
git checkout -- <file> : 丢弃工作区中对某个文件的修改
git reset HEAD <file> :回退添加到暂存区的文件到工作区
git log --pretty=oneline:从近到远显示commit记录,参数规定简化显示每次一行,前面的一长串是版本号
commit idgit log --graph 可以看到分支合并图
git reset --hard 1094a :将当前版本设置为commit ID=1094a那个版本,commit id 不用写全,可以模糊匹配
git reflog:查看历史版本,会有commit id,搭配上一个命令跳转版本
2.2、远程仓库操作
git remote -v :查看远程仓库信息
git clone <url>:远程仓库默认origin,并将远程master(或其他默认分支)与本地的克隆仓库master分支关联。
git remote add <shortname> <url>:添加一个远程仓库,例
git remote add pb https://github.com/paulboone/ticgitgit remote show origin :显示远程仓库 origin 的详细信息
git remote rename <oldName> <newName> :远程仓库改名
git remote remove <name>:取消与远程仓库的关联远程仓库,也可以用 git remote rm <name>
git fetch <remote> :从远程仓库拉所有分支下来,但不会与你自己的代码合并,可以指定分支
git fatch origin master:将远程分支代码拉取到本地,本地不会建立分支
git fatch origin master:localMaster:将远程分支代码拉取到本地,本地建立localMaster分支存上面拉取的代码
git merge origin/master:将远程master分支合并到本地当前分支git pull :自动从关联的远程分支拉下代码,合并到本地分支(与fetch的不同)
git push <remote> <branch> 将本地分支推送到远程仓库
2.3、分支命令
git branch:查看本地所有分支
- git branch -a :查看所有分支,包括远程
- git branch -vv:查看所有本地分支跟踪的远程分支情况
git branch <Bname>:创建分支
git branch -d <Bname>:删除分支
git branch -D <Bname>:强制删除分支,使用d时没有合并的分支不让删除
git checkout <Bname> 或者 git switch <Bname>:切换分支
git checkout -b <Bname> 或者 git switch -c <Bname>:创建并切换分支
git merge <Bname>:将指定分支合并到目前所在分支,使用fast forward模式合并,(直接将本分支的指针指向待合并分支)
- 在存在冲突的时候merge无法直接合并分支,需要手动解决冲突

- 在存在冲突的时候merge无法直接合并分支,需要手动解决冲突
git merge –no-ff -m “merge with no-ff” dev:不实用fast forward 模式,使用一次commit 合并,所以加-m 参数添加合并消息

git stash :用于保存工作区内容
git stash list:列出暂存的工作区
git stash pop:回复暂存的工作区
git cherry-pick <commit>:将指定提交中修改的内容合并到当前分支
git checkout -b branch-name origin/branch-name:在本地创建和远程分支对应的分支
git branch --set-upstream-to=origin/branch-name branchname: 建立本地分支和远程分支的关联
git tag <tagname>:打标签,还可以加commit id 给指定版本打标签,默认给当前最新的commit打标签
git tag -a <tagname> -m “balabala…”
git tag:查看标签
2.4、本地分支与远程分支关联
- 远程没有分支,本地有,想新建远程分支
git push <远程仓库名> <本地分支名> - 上面那个建立的是同名远程分支,如果想要一个不同名的:
git push <远程仓库名> <本地分支名>:<远程分支名> - 上面已经有了与远程分支,现在建立本地分支与远程分支的关联
git branch --set-upstream-to=<远程仓库名>/<远程分支名> <本地分支名>- 关联当前分支的时候可以省略
- --set-upstream-to 可以使用-u替代:
git branch -u <远程仓库名>/<远程分支名> <本地分支名> - 如果本地分支已经关联远程分支,使用后可以先接触关联,然后关联新的分支
- 本地没有分支,从远程拉取新建本地分支,并将本地分支与远程分支相关联
git checkout -b <本地分支名> <远程仓库名>/<远程分支名> - 删除远程分支
git push <远程仓库名> --delete <远程分支名>或者
git push <远程仓库名> :<远程分支名>(相当于推一个空白分支给远程,即删除)