Git学习和使用心得

git 是一种版本控制系统,用于协作开发,实现版本控制以及代码一致性,实习以来一直在用git,算起来用了三个多月,现在讲解一下自己的使用心得。

上面是我盗的一张图,整个git的工作流程大致就如以上。

首先从远程使用git clone 克隆一个完整的项目,git clone命令有很多参数,太繁琐,最常用的是

1.git clone url.git。url为项目路径。

2.git clone url.git newProjectName。项目来下来,名字为你指定的新名字。

执行结果如下:

项目名字改变。

git 常用命令总结:

  • git checkout --<File>:撤销工作区指定文件的修改,git checkout .:撤销工作区修改,与git add --<File>git add .:把已修改文件从工作区加入暂存库的作用相反(使用暂存库文件覆盖当前工作区文件)。
  • git reset HEAD <file> 或者 git reset HEAD . :使用本地库文件覆盖暂存库文件或者全部覆盖,暂存库受影响,可以用来从本地库拉取内容到暂存库,或者撤销已经添加到暂存库的工作区的内容。
  • git checkout HEAD . 或者 git checkout HEAD <file> 命令时,会用 HEAD 指向的 当前分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未add的改动,也会清除暂存区中未提交的改动。
  • git diff 命令显示已写入缓存与已修改但尚未写入缓存的改动的区别。git diff 有两个主要的应用场景。

尚未缓存的改动:git diff(最后一次git add .之后当前工作区所有未添加的的改动)

  • 查看已缓存的改动: git diff –cached(最后一次 git commit 之后,所有的git add. 的但未提交的当前暂存区改动)
  • 查看已缓存的与未缓存的所有改动:git diff HEAD(相比于最后一次的git commit之后,未提交的当前所有改动,包括未暂存和未提交的改动)
  • 如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit (手动删除是工作区的删除,git 把它当作一种工作区的修改,即未进行 git add . 的删除,未把它放进暂存库)的提示。

要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除,然后提交。可以用以下命令完成此项工作

git rm <file>(删除记录已加入暂存区但尚未提交的删除)

如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f

git rm -f <file> (同样是已加入暂存区但尚未提交的删除)

这两个删除完成之后,是已加入暂存区的删除。

git rm --cached <file>(修改已加入暂存区的文件使用此删除,删除记录放入暂存区,文件变为未追踪,工作区不抹除)

  • git reset

 

每个分支都有一个HEAD指针,它指向最新的提交。 如果用--parameters选项后跟提交IDgit reset命令,那么它将仅重置HEAD指针而不会破坏任何东西(被忽略的提交的内容还在)

  1. soft

--soft参数告诉Git重置HEAD到另外一个commit,所有的在original HEAD和你重置到的那个commit之间的所有变更集都放在stage(index)区域中。此时index不一定等于工作区,index=执行该命令之前index+该命令对应的提交之后的提交的回退的部分。工作区等于上一次git add . 之后的新添加的内容。
 2.hard

--hard参数将会blow out everything.它将重置HEAD返回到另外一个commit(取决于~12的参数),重置index以便反映HEAD的变化,并且重置working copy也使得其完全匹配起来。这是一个比较危险的动作,具有破坏性,数据因此可能会丢失!如果真是发生了数据丢失又希望找回来,那么只有使用:git reflog命令了。makes everything match the commit you have reset to.你的所有本地修改将丢失。如果我们希望彻底丢掉本地修改但是又不希望更改branch所指向的commit,则执行git reset --hard = git reset --hard HEAD. i.e. don't change the branch but get rid of all local changes.另外一个场景是简单地移动branch从一个到另一个commit而保持index/work区域同步。这将确实令你丢失你的工作,因为它将修改你的work treehttps://i-blog.csdnimg.cn/blog_migrate/cd25638804ce2d71be3f82cdc463126b.png

  3.mixed(default

--mixedreset的默认参数,也就是当你不指定任何参数时的参数。它将重置HEAD到另外一个commit,并且重置index以便和HEAD相匹配,但是也到此为止。working copy不会被更改。所有该branch上从original HEADcommit)到你重置到的那个commit之间的所有变更的提交将作为local modifications保存在working area中,所有距head的已经git add . 的也变为工作区的修改(被标示为local modification or untracked via git status),但是并未staged的状态,你可以重新检视然后再做修改和commit

https://i-blog.csdnimg.cn/blog_migrate/f6edf135b57a4908d8929edb9b5ac274.png

  • 可以通过向git branch命令提供-D选项来删除分支。 但在删除现有分支之前,请切换到其他分支。
  • git commit –-amend -m “new description”撤销上次提交,把上次提交的内容回退到暂存区加上新加入的暂存区的内容一起提交,影响仅仅是提交的注释被修改,这次提交代替上次被撤掉的提交。
  • git branch --set-upstream-to origin/分支名

origin 为git地址的标志,可以建立当前分支与远程分支(已存在)的追踪关系

git checkout -b 本地分支名x origin/远程分支名x :新建本地分支关联远程分支。

git push origin new_branch 作用:将本地的当前分支推动到远程仓库new_branch,如果远程该分支不存在,则建立相应分支

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值