Android进阶之路 - Git常用命令与常见问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20451879/article/details/78921972

SVN已经过去好久,仅以Git记录消逝的昨日。

文章目录:

  • 基础知识
  • 常用连贯命令与常见问题
  • 工具推荐

Be happy every day(每一天都要开开心心)


目录 1 :基础知识

Remote: 远程仓库

Repository: 本地仓库

index / Stage: 暂存区

workspace: 工作区/工作副本

  • 本地流程图:

操作流程:

工作目录 - git add - 暂存区 - git commit - 本地仓库(如没有commit,则不会进入本地仓库的!)

  • 全面流程图

这里写图片描述

注意 :
这里在本地仓库的基础上加入了远程仓库,多出了pull,push,clone的动作


目录 2 :常用命令

初始配置:

//设置当前登录的用户名称 
git config –global user.name “Your Name” 

//设置当前登录的用户邮箱
git config –global user.email [email protected]

//以下俩条可以选择性忽略(设置 git命令的别名)> <
// 设置git命令的别名
git config --global alias.ci commit
// 设置git命令的别名             
git config --global alias.co checkout                       

配置查看

git –version  //查看git版本 

git config -l  //查看当前配置

git config –global user.name   //获取当前登录的用户名称 

git config –global user.email  //获取当前登录的用户邮箱

本地第一次配置

git init  //初始化(将当前目录变为仓库) 

git clone 网站上的仓库地址  //从远程库克隆到本地

如果先有本地库,后有远程库,将本地库push到远程库

关联本地库和远程库:git remote add origin 网站仓库地址 
第一次将本地仓库推送到远程仓库:git push -u origin master

常用命令


git status //刷新代码当前状态

git add -u //提交已修改

git add 文件名 //添加一个文件到暂存区 

git add .  //添加所有文件到暂存区 

git add -A    //将本地所有改动添加到暂存区(git add -A = git add . + git add -u)

git commit -m"备注" //备注

git pull   //拉取远程代码

git diff  //对比暂存区和工作区差异 

git push   //推送

git checkout –文件名  //撤销工作区的修改 

git branch  你的分支名  //创建新分支

git checout 你的分支名  //切换分支

git checkout -b 你的分支名 //创建新分支同时进行分支切换

git branch -d 分支名  //删除分支 

git merge dev  //将dev分支合并到当前所在分支上 

git fetch    // 从远程获取最新版本到本地,不会自动merge

git log -期望条目(数字)//查看近期log

git log //查看所有log

git branch -l //只查看本地分支 (l-location)

git branch -r //只查看远程分支

git branch -a //查看所有分支 

git tag  //查看所有标签 

git branch -vv  //查看当前的本地分支绑定的远端的那一条分支

较少使用的命令

git remote show origin //查看远程库的一些信息,及与本地分支的信息
    
git branch -m <old> <new>  //本地分支重命名

git push origin test //将本地test分支推送到远程 (不能直接新建远程分支,需要新建本地分支后,再把本地分支推送到远程) 

git push origin test:master //提交本地test分支作为远程master分支 

git push origin test:test //提交本地test分支作为远程test分支 

git push origin :test //提交空分支作为远程test分支(相当于删除远程test分支) 

git branch -d test //删除本地test分支 

git pull --rebase    //暂存本地变更,合并远程最新改动,合并刚刚暂存的本地变更(不产生无用的merge的同步)

git branch -D test //强制删除本地test分支 

git push origin –delete test //删除远程test分支 

git branch test origin/test //将远程分支test拉取到本地,并新建分支test(如果失败,可以先运行 git fetch)

git remote -v  //查看远程仓库 

git remote rm orgin  //删除远程仓库 

git diff –cached  //对比暂存区和工作区差异 

git diff master  //对比历史区和工作区差异 

git reset HEAD 文件名  //撤销暂存区的修改 

git add -i   //打开一个交互式界面按需求添加文件

git reset –hard 该版本ID  //回退到历史版本 

git reset –hard HEAD^  //回退到上个版本 

git status -s     //将结果以简短的形式输出

git status --ignored   //显示被忽略的文件

git log -p    // 查看详细修改内容  

git log --stat   //查看提交统计信息

git log --graph   // 显示何时出现了分支和合并等信息

git rm <file>    //删除文件

git rm -r <floder>   //删除文件夹

git rm --cached <file>  //从版本库中删除文件,但不删除文件      

git mv <old_name> <new_name> //文件重命名

git commit -a     //把修改的文件添加到暂存区(不包括新建(untracked)的文件),然后提交

git commit --amend    //修改提交的commit(没有push)

git commit --amend -m "comment" //修改commit注解

git diff --cached    //查看暂存起来的文件(stage)与并未提交(commit)的差别

git diff --staged    //同上

git diff HEAD         //查看最后一次提交之后的的差别(HEAD代表最近一次commit的信息)

git diff --stat     //查看显示简略结果(文件列表)

git diff commit1 commit2    //对比两次提交的内容(也可以是branch,哈希值)

git push -u origin master   // -u指定origin为默认主机,后面就可以不加任何参数使用git push了

git push -f origin          // -f强推,在远程主机产生一个"非直进式"的合并(non-fast-forward merge)

git push --all origin       // 将所有本地分支都推送到origin主

git fetch -p //删除掉没有与远程分支对应的本地分支

git fetch origin -p  //用来清除已经没有远程信息的分支,这样git branch -a 就不会拉取远程已经删除的分支了

git reflog  //查看以往版本号(本地的commit)

Tag标签(一般在某个版本下进行tag标记,做节点使用)

git tag 标签名  //为当前版本打标签 

git tag 标签名  //为历史版本打标签 

git tag -a 标签名 -m “标签说明”  //指定标签说明 

git show 标签名  //查看某一个标签 

git tag-d 标签名  //删除某一个标签

git tag -a v1.0.0 -m ‘版本说明’  //打tag 

git push origin –tags  //将所有tag推送到远端(前提是add、commit、push后) 

git push origin tag名称  //将指定tag推送到远端 

git tag -d tag名称   //删除本地标签 

git push origin : refs/tags/tag名称  //删除远端标签

常用连贯命令与常见问题

  • 绑定本地分支与远程分支 :

使用命令git branch --set-upstream ;实例如下,其中debug为创建的分支

Git提示:

git branch --set-upstream-to=origin/<branch> dev

git branch --set-upstream debug(本地分支名称) origin/debug(远程分支名)  
  • 远程分支有某分支,本地不显示
//已自创本地分支
git fetch <远程主机名> <分支名>

或

//未自创本地分支,通过下面命令一起创建
git branch test origin/test //将远程分支test拉取到本地,并新建分支test(如果失败,可以先运行 git fetch)
  • 拉取远端tag同时创建分支
//newBranch 为新分支  v1.6.0为我们之前打好的 tag
git checkout -b -NewBranch v1.6.0
  • 撤销修改
git  checkout -- 文件

分两种情况分析:

1.还没有执行 git add 操作,执行上面的操作后,会恢复到和版本库中一模一样的版本状态。

2.执行了git add ,还没执行 git commit ,再执行上面的操作后,会恢复到git add 结束后的状态

注:一旦执行了git commit -m "*",就不能再使用上面的命令回退。
  • 切换分支,提交当前本地的代码(临时空间):

git stash push 将文件给push到一个临时空间中
git stash list 可以将当前的Git栈(临时空间)信息打印出来,
git stash pop 将文件从临时空间pop下来
  • 工作中经常从master创建新的分支,具体操作如下:
   git checkout master  

   git checkout -b  newBranch

   git push origin newBranch

   git add .

   git commit -m "***"    

   git push origin newBranch
//执行以下这行命令
 git remote show origin  

  • 发生冲突的文件:
   /**冲突区域*/
   <<<<<<< HEAD

   Creating a new branch is quick & simple.

   =======

   Creating a new branch is quick AND simple.

   >>>>>>> feature1
	
	/**解释区域*/
	其中,git使用<<<<<<<,=======,>>>>>>>标记文件中自己和别人产生冲突的部分
	
	在<<<<<<<,=======之间为自己的代码
	
	=======,>>>>>>>之间为别人的代码
	
	如果保留自己的代码,将别人的代码删掉即可

	/**冲突解决后提交*/

    git status

    git add .
 
    git commit -m "fix bug"

    git push origin 分支名
  • git存储(stash):
git stash                   // 保存当前的工作进度
git stash save "message"    // 保存进度加说明
git stash list              // 显示进度列表
git stash pop               // 恢复最新保存的工作进度,并将恢复的工作进度从存储的列表中删除
git stash apply             // 恢复最新保存工作进度,但不删除
git stash drop              // 删除一个进度,默认删除最新的
git stash clear             // 删除所有

1、储藏更改:将当前更改的代码储藏起来,等以后恢复使用
   git stash
2、恢复储藏的代码
   git stash pop //恢复的同时把stash内容删掉

或者
1.git stash apply  //恢复stash,但是stash内容并不删除

2.git stash drop //在上面操作的基础上,以此来删除stash

注: git stash list //查看全部的stash列表。

  • git撤销(revert):
git revert commit             //撤销指定commit
git revert HEAD                 // 撤销上一次commit
git revert -no-edit HEAD        // 撤销上一次并直接使用默认注释
git revert -n HEAD              // 撤销上一次但不commit
  • git重新基变(rebase):
git rebase <branch_name>   // 合并分支
git rebase --continue      // 执行rebase出现冲突解决后,执行该命令会继续应用(apply)余下的补丁
git rebase --skip          // 跳过当前提交
git rebase --abort         // 终止rebase, 分支会回到rebase开始前的状态
  • git遴选(cherry-pick):
git cherry-pick <commit_id>     // 用于把另一个本地分支的commit修改应用到当前分支
  • 对于已经push的版本,进行回退
git reflog //查看所有分支的所有操作记录

通过 git reflog 获取commit id (版本号),如下:
//版本号:62e6739 都是7位数,填写在回退的版本号处即可!
62e6739 HEAD@{1}: reset: moving to HEAD^

git reset --hard 版本号 //本地回退到指定的版本

git push  -f origin dev    //将远程的也回退到指定版本

/**华丽的分割线**/

科普内容 - Git log和reflog区别:

git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),
包括已经被删除的commit记录
 
git log则不能察看已经删除了的commit记录
  • GitLab迁移,修改本地代码库的服务器路径,修改方法:

1.查看当前代码库服务器地址

命令:git remote get-url origin
命令行会输出:ssh://git@你的ip地址/dowgroup_web.git ######

2.修改当前代码库服务器地址,替换“你的ip地址/”为“新的服务器ip地址”

命令:git remote set-url origin [email protected]:dowgroup/dealer_web.git

工具推荐

  • Git Bash Here - Git自带的操作命令行
  • Sourcetree 图形化操作
  • AndroidStudio 绑定git之后,使用pull push等图形化操作
  • Android Stuidio 下的Terminal命令操作

有意义的时光 :

Android进阶之路 - 五分钟内快速生成Git所需的SSH key

Android进阶之路 - AndroidStudio设置git忽略文件

Android进阶之路 - Git问题解决

常用 Git 命令清单

昨日一切都很好,只因少了无意义的时光。

借鉴文章:

猜你喜欢

转载自blog.csdn.net/qq_20451879/article/details/78921972