git命令行操作

1、克隆远程仓库 git clone [仓库地址] ,但是这样只能克隆master分支的代码,如果我想克隆远程仓库中某一分支的代码怎么办呢?git clone -b [对应的远程分支名称] [仓库地址] 。

  如克隆aspnetcore的3.0分支:git clone -b 3.0 //github.com/dotnet/aspnetcore.git

2、本地切换分支,这里分几种场景:

  1)要切换的分支存在,直接使用 git checkout [要切换的分支]

  2)要切换的分支不存在,git checkout -b [要切换的分支],如本地仓库切换一个新的开发分支,该分支是为了开发数据统计功能,则可以这样切换:git checkout -b feature/data-statistics 【分支命名规范:需求特性开发可以使用feature/..;平时bug修复可以使用bugfix/..;线上紧急bug修复可以使用hotfix/..】

  3)上述切换方式为本地创建分支,该分支没有对应远程分支,若需要对应远程分支,则需要设置 git branch –set-upstream-to=origin/data-statistics data-statistics 。若想在创建分支的时候就对应怎么办呢?可以使用git checkout -b data-statistics origin/data-statistics 。【注:前提是远程仓库有origin/data-statistics分支】

  4)本地分支指定其他远程分支,则可使用 git remote add local_branch //github.com/dotnet/aspnetcore.git  

3、比如在本地分支data-statistics上开发结束,需要提交代码合并,分如下步骤:

  1)本地代码暂存 git commit -am “数据统计开发 [ci skip]” 【注:① a表示暂存所有追踪并修改的文件,m表示添加提交信息,这里需要注意当你新增一个文件时直接使用该命令无法暂存,必须使用git add .或者git add [添加的文件]进行添加然后再git commit -m ② 提交信息中出现的[ci skip]是为了跳过当提交到远程仓库的ci/cd过程,若无特殊要求可以忽略】

  2)本地暂存好之后,可以使用git push命令推送至远程仓库,若远程仓库没有该仓库会自动进行创建。【这个步骤是为了确保代码安全,或者共享】

  3)代码合并过程

    a. 远程仓库上提交merge request进行合并【一般情况下,master、staging、test、develop分支都是应该受保护的,也就是本地仓库不能直接push到远程仓库,只能采用远程仓库merge request的方式进行代码合并。】

    b. 本地合并,如要将data-statistics上的代码合并到本地test分支,首先保证data-statistics上的代码已经commit,然后使用git checkout test,【注:这个时候需要注意不是立即合并,而是需要拉取远程仓库Src_Test的最新代码至本地git pull origin test -r,保证本地test代码是最新的】,再使用git merge data-statistics命令进行代码合并。若合并过程中出现冲突,需要在vs或其他你认为方便的工具上解决冲突,再次commit,然后push

    c. 不管是哪种方式,都应该本地解决冲突后再提交,避免线上解决冲突

4、查询修改了哪些文件

  git status 【注:在commit代码时最好先使用该命令检查下修改了哪些文件】

5、查询当前分支的日志记录

  git log [–oneline] [–graph] [-10] 显示最新的10条提交记录

6、本地版本回退到某个指定版本

  1)查询修改记录,获取提交记录的版本id

  2)根据版本id使用 git reset –hard accb136f

  3)若想回退远程仓库的版本,则需要强制回退 git reset –hard accb136f –force

7、查看本地有哪些分支,可以使用git branch,若想查看所有则可使用git branch -a

  【注:有时候你会发现,明明在git上删除了远程分支,但是在git branch -a的时候仍可以看到,这个时候你可以使用git remote prune origin来进行修剪】

8、git merge和git rebase可以用来合并代码,但它们使用的场景不同,尤其注意git rebase的使用