Git 版本控制/基本命令

版本控制是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

Git 不关心文件两个版本之间的具体差别,而是关心文件的整体是否有改变,若文件被改变,在添加提交时就生成文件新版本的快照,而判断文件整体是否改变的方法就是用SHA-1算法计算文件的校验和。

Git有四个工作区域:

  • 工作区(Working Directory):平时存放项目代码的地方
  • 暂存区(Stage/Index):用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息
  • 资源库(Repository或Git Directory):安全存放数据的位置,这里面有你提交到所有版本的数据
  • 远程的git仓库(Remote Directory):托管代码的服务器

Git命令

1、基本信息设置

$ git config --global user.name 'xxx'
$ git config --global user.email 'xxx'

初始化Git仓库:git init
克隆远程仓库:$ git clone [url]

2、分支

创建并切换分支:$ git checkout -b dev
创建分支:$ git branch name
切换分支:$ git checkout name
查看分支:$ git branch
删除dev分支:$ git branch -d dev
合并指定分支到当前分支上:$ git merge dev
把远程的origin的dev分支到本地来: $ git checkout -b dev origin/dev

3、拉取、推送

远程分支的代码pull到本地分支 : git pull  
添加到暂存区:$ git add hello.txt
添加当前目录的所有文件到暂存区: $ git add .
把文件提交到仓库:$ git commit -m "hello.txt提交"
推送远程仓库:git push

4、状态

通过命令git status来查看是否还有文件未提交:$ git status
文件改了什么内容:$ git diff hello.txt
查看下历史记录信息:$ git log
获取到版本号:$ git reflog

5、恢复工作区、复制提交、回退

丢弃工作区的修改:$ git checkout -- hello.txt
本地所有修改的,没有的提交的,都返回到原来的状态:$ git checkout .
删除掉没有add到仓库的文件:git clean -d -fx

复制提交:git cherry-pick <id>

回退版本:
git reset --hard <commit_id>
git push origin HEAD --force

6、git stash 能够将所有未提交的修改(工作区和暂存区)保存至堆栈中,用于后续恢复当前工作目录

查看当前stash中的内容:git stash list
将当前stash中的内容弹出(删除),并应用到当前分支对应的工作目录上:git stash pop
清除堆栈中的所有 内容:git stash clear
查看堆栈中最新保存的stash和当前目录的差异:git stash show
恢复具体某一次的版本,如果不指定stash_id,则默认h恢复最新的存储进度:git stash pop [stash_id] 

git reset 和 git revert 区别

git reset --hard :放弃工作区和index的改动,同时HEAD指针指向commit对象,当前版本,我们使用"HEAD^"

git revert :撤销提交,这条命令会把指定的提交的所有修改回滚,并同时生成一个新的提交。用新提交覆盖旧提交,因此,被覆盖的提交等于不会被采用了。
如果两个分支(假设是master和A分支)先合并再用revert回滚,之后又合并(A合并到master),就会发现在master分支上,A分支第一次合并之前的修改大部分不见了。这是因为从时间的发生顺序来看,A分支第一次合并之前的修改发生在revert之前,revert发生在后,而 revert抛弃了A第一合并之前的修改,那么再合并Git就认为你永远抛弃了A第一次之前的修改。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值