GIT常用命令

本文是阅读笔记,原文请移步:

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

1 创建版本库 版本库又名仓库,英文名 

 git init

2 提交新文件 或提交修改 
 git add readme.txt
 git commit -m "add distributed"
 
3 查看提交记录
  git log

******

git log --name-status 每次修改的文件列表, 显示状态
git log --name-only 每次修改的文件列表
git log --stat 每次修改的文件列表, 及文件修改的统计
git whatchanged 每次修改的文件列表
git whatchanged --stat 每次修改的文件列表, 及文件修改的统计
git show 显示最后一次的文件改变的具体内容
git show -5 显示最后 5 次的文件改变的具体内容
git show commitid 显示某个 commitid 改变的具体内容

******
  
4 版本回退
回退到上一版本
git reset --hard HEAD^ 
  
回退到上上一版本
git reset --hard HEAD^^
  
回退到上100个版本
git reset --hard HEAD~100
  
回退到某一版本 
git reset --hard 3628164 
  
注意,假设提交记录里有log1(head为111) log2(head为222) log3(head为333) 
通过 git reset --hard 111 可以回退到版本111, 再通过 git reset --hard 333 则可回到版本333 
穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
  
  
5、工作区 和 暂存区  
    work是文件修改的区域   stage是修改后通过add 命令 添加到.git文件夹中的修改。
    
6、撤销修改  
   可以通过 git checkout -- readme.txt 命令撤销工作区的修改这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
注意:情况一是指:
      这个命令是撤销工作区的修改。而所谓撤销工作区的修改是指,当你手动删除修改,使文件回到修改前一模一样,但使用git status 命令,扔会显示有文件未提交到stage。
      而你使用checkout命令后,再使用git status命令时,就无法查到有文件被modify了。
 
用命令git reset HEAD file可以把暂存区的修改撤销掉(unstage),重新放回工作区,git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本  
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
   
7、删除文件
   git rm test.txt
   git commit -m "remove test.txt"   
   
8、远程仓库
   -- 先有本地库,后有远程库的时候 --

   8.1、可以在github 等网站申请账号。创建一个仓库

   8.2、在本地的仓库下 运行命令 git remote add origin git@github.com:【michaelliao/learngit.git】 使得远程仓库与本

           地仓库相连。添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知

           道是远程库。      

   8.3、 git push -u origin master  可以把本地库的所有内容推送到远程库上 由于远程库是空的,我们第一次推送master分支 

            时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程

            的master分支关联起来。

   8.4、后续本地master修改,可直接通过git push origin master 推送,

            git push <远程主机名> <本地分支名>:<远程分支名> 

            git pull <远程主机名> <远程分支名>:<本地分支名>

 

   -- 先创建远程库,从远程库克隆 --
   
   8.5、git clone git@github.com:michaelliao/gitskills.git

           实际上,Git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。使用https除了速度慢以外,还

       有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。  

   8.6 git remote -v 查询远程仓库名以及抓起和推送地址。

   8.7 git clone  local Repository path   可以复制本地仓库到当前目录。     

       例如:git clone ~/work/project/public/.git .  当前目录复制 “~/work/project/public/” 目录下工程。

9、分支管理
9.1 创建分支并切换到分支 branchName上 
  git checkout -b branchName
  它相当于两条命令
  git branch branchName   // 创建分支
  git checkout branchName // 切换分支   


9.2 查看当前分支
  git branch   


9.3 合并分支
  git checkout master //切换到master分支
  git merge branchName // 合并方案一:branchName的修改到master上,这是 Fast-forward 方式合并,当删除branchName分支后,会丢掉分支信息
  git merge --no-ff -m "merge with no-ff" branchName  // 禁用Fast-forward方式合并,即使删除branchName分支,其信息也会保留   
  git log --graph --pretty=oneline --abbrev-commit //可查看分支合并信息     


9.4 冲突管理
  当branchName分支和master分支 都对同一文件进行修改时。git无法进行快速合并(Fast-forward).    
  执行 git merge branchName 会提示有文件冲突。此时,只能手动修改冲突文件再通过 add 命令添加,再commit。   


9.5 删除分支
  git branch -d branchName
  git branch -D branchName //内容未合并,强行删除分支。
          
10、分支策略
在实际开发中,几个基本原则进行分支管理:
首先,master作为稳定分支,用于发布新版本; 
其次,dev分支是不稳定的,开发过程中使用;
最后,再把dev分支合并到master上 ,通过其发布。    

11、Bug分支

git stash //保存工作现场
git stash list //查看工作现场
git stash apply stash@{0} // 恢复工作现场{0},但stash内容不删除
git stash pop 

12、标签管理
12.1 创建标签
git tag tagName [commit id] 创建标签.再当前commit上(或过去某一commit id上)打标签
git tag 查询标签   
注意,标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息。   
git tag -a v0.1 -m "version 0.1 released" 3628164 //给标签添加信息
git tag -s v0.2 -m "signed version 0.2 released" fec145a //私钥签名一个标签
注意:签名采用PGP签名,因此,必须首先安装gpg(GnuPG),如果没有找到gpg,或者没有gpg密钥对,就会报错
  
12.2 操作标签
git tag -d v0.1 // 删除标签  
git push origin v1.0 // 推送标签到远程  
git push origin --tags // 一次性推送所有标签到远程。  
删除远程标签,需先删除本地标签,再删除远程标签
git push origin :refs/tags/v0.9
         
13、自定义Git
13.1 忽略特殊文件
在工作区根目录创建.gitignore 文件,将需要忽略的文件和目录写入,再讲该文件上传至git即可。
git add -f App.class //强制添加忽略的文件。
git check-ignore -v App.class //检查是否包含该隐藏规则

13.2 配置别名
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch  
global 是当前电脑所有仓库都生效。不加global只对当前仓库生效。  
别名保存在 .git/config配置文件里,删除要进入这个文件删除,添加也可以在文件直接添加。
          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值