Git的使用

1、常识

  • 本地有三个区
git add
git commit
工作区
暂存区
本地仓库
  • 在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 id

  • git 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/ticgit
    
  • git 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无法直接合并分支,需要手动解决冲突
      使用fast forward (图片来自廖雪峰)
  • git merge –no-ff -m “merge with no-ff” dev:不实用fast forward 模式,使用一次commit 合并,所以加-m 参数添加合并消息
    --no-ff(图片来自廖雪峰)

  • 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 <远程仓库名> :<远程分支名>(相当于推一个空白分支给远程,即删除)

3、 参考内容


版权声明:本文为weixin_43659784原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。