git命令详解

git_three_rigon.png-212.9kB

git init

git init #初始化仓库
git init --bare#初始化仓库,裸仓库,不带代码结构树,一般用于在git服务器上

git clone

 git clone [url]
git clone git@github.com:fsliurujie/test.git         --SSH协议
git clone git://github.com/fsliurujie/test.git          --GIT协议
git clone https://github.com/fsliurujie/test.git      --HTTPS协议

git add

git add -A 保存所有的修改
git add . 保存新的添加和修改,但是不包括删除
git add -u 保存修改和删除,但是不包括新建文件。

git rm

git rm <file>#将文件从暂存区和工作区中删除,-f表示强制,例如:git rm -f runoob.txt 
git rm --cached <file> #如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中
git rm –r * #递归删除

git mv 

git mv [file] [newfile]#git mv 命令用于移动或重命名一个文件、目录或软连接,例如:git mv README  README.md

git commit

git commit  -m "commitmessage"  [filename]

-a表示顺便添加文件

git branch

git branch #列出分支
git branch testing #创建testing分支
git branch -b newtest#创建newtest分支,并立即切换该分支下
git branch -d newtest #删除newtest分支
git branch newbranch 9104953  #这是newbranch 是分支名,9104953  是版本号,一般用在误删分支了,想要恢复的时候,可以用.当然也是可以想检索出reflog的某个版本为新的分支的时候用.

git reflog(重要)

git reflog


HEAD@{移动到当前版本需要多少步}

  1.  基于索引值操作[推荐] git reset --hard a6ace91  
  2. 使用^符号:只能操作   gitreset--hardHEAD^^^  #后退3步
  3. 使用~符号:只能后退  gitreset--hardHEAD~n  #后退 n 步

git reset

reset这个操作是基于分支的,也就是对当前分支设置reset到哪个版本.

git reset [--soft | --mixed | --hard] [HEAD]

--soft 

        移动HEAD指针到指定位置,只让版本库里面的内容回到和目标版本一致, 

使用场景:假如我们想合并「当前节点」与「reset目标节点」之间不具太大意义的 commit 记录(可能是阶段性地频繁提交,就是开发一个功能的时候,改或者增加一个文件的时候就commit,这样做导致一个完整的功能可能会好多个commit点,这时假如你需要把这些commit整合成一个commit的时候)時

--mixed

  移动HEAD指针到指定位置,让版本库和暂存区的内容回到和目标版本一致,

 使用场景: git reset HEAD 可以用来清除暂存区的内容.

--hard

   移动HEAD指针到指定位置,让版本库和暂存区和工作区的内容回到和目标版本一致,

使用场景:活学活用吧,提交中为修改的文件也会被删除

git reset --hard branch2 #比较奇葩的一种写法,也从侧面说明了reset的本质是移动HEAD和branch

git checkout 

git checkout branchname #如果原内容没有提交的话,切换到另一份分支之后,在切换为原来的分支,index区和工作区的内容都会被覆盖
git checkout 版本号 #(不建议使用,只能查看,提交不会保留),头分离状态,这感觉是创建了一个看不见的临时分支?并没有什么意义?

只放弃工作区的改动,index 保持不变,其实就是从当前 index 恢复 工作区

放弃工作区中全部的修改(从缓存区恢复所有文件到工作区)
git checkout .

放弃工作区中某个文件的修改(从缓存区恢复某个文件):
git checkout -- filename

git checkout -f #谨慎操作,因为会把没有commmit的内容覆盖掉

git checkout HEAD . 和git checkout HEAD <file>

这2个命令和reset --hard其实有点像了,,会覆盖暂存区和以及工作区中的文件,也会清除暂存区中未提交的改动。

git remote

git remote -v #显示所有远程仓库
git remote add [shortname] [url] #添加远程仓库
git remote rm name  # 删除远程仓库
git remote rename old_name new_name  # 修改仓库名

git merge

git merge main  #比如说当前分支是dev,就是把main合并到dev
#这个过程中,可能会有冲突,只需要修改冲突的文件为自己想要的结果,然后在重新add 冲突的文件,在git commmit -m "合并冲突备注,随便写",就已经合并好了.如果没有冲突话,默认会给你弹出编辑框,让你填写合并备注.
#一般情况下,博主个人会先合并到自己的分支,然后(解决冲突之后)在次合并回主分支

git rebase

git rebase main 
#比如说当前所在的分支是dev,,,,dev和main是在B版本分开的,main分支在B之后提交了C,D 2个版本,而dev在B之后提交了EF2个分支,,那么结果就会是在dev分支上产生结果:A->B->C->D->E->F.中间如果有冲突就还是修改文件,add,然后commmit,

 git pull

git pull #近乎等于git fetch + get merge
git push -u origin feature-branch #默认指定 本地分支feature-branch push到 远程origin  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值