2021-04-08

实现版本回退:
git reset实现版本回退

当将有错误的文件add进暂存区后,可以使用git reset丢弃修改。即:
  git reset HEAD 文件名
但此时修改仍旧保留在工作区。

如果尚未add进暂存区,则可以使用:
  git reset --hard HEAD
这样就能彻底丢弃修改,即将修改从暂存区及工作区彻底删除。
#####git checkout丢弃修改
当将错误的文件add进暂存区后,使用git checkout无法将修改从暂存区中撤销,必须要先使用git reset将修改从暂存区中撤销。

如果只是工作区有了修改,则可以直接使用git checkout进行撤销,具体操作如下:
  git chekcout – hello
通过这种方式,就可将hello文件自上个commit之后,尚未add进暂存区的修改丢弃。

删除文件:
删除文件需要用到的命令是git rm,且git rm有参数–cached。
当我们需要删除暂存区或分支上的文件,同时工作区也不再需要这个文件了,可以使用:
  git rm 文件路径
当我们需要删除暂存区或分支上的文件,但本地又需要使用, 只是不希望这个文件被提交到版本库,可以使用:
  git rm --cached 文件路径

如果文件被添加到了暂存区,这种情况下直接使用git rm file_path会报错:

$ git rm hello.txt
error: the following file has changes staged in the index:
hello.txt
(use --cached to keep the file, or -f to force removal)
根据提示我们可以得知,这个时候,如果不想保留hello.txt,则可以使用:
  git rm hello.txt -f
如果想保留hello.txt到工作区则可以使用:
  git rm --cached hello.txt

还需要通过git commit操作将修改提交。

创建标签:
在开发过程中,commit ID是一串无序的字符,它虽然能唯一标记一次代码提交,即一个版本。但是,它很难记忆和辨识。所以,为了给不同的版本起一个容易辨识的名字,我们可以给这次提交打上一个标签,用不同的标签来对应不同的版本。这样,就相当于给这次提交生成了一个快照。实际上,在为某次提交创建标签的时候,Git会为标签生成一个指针,以指向其对应的提交。然后,我们就可以通过标签找到对应的提交,这样对我们版本发布和代码审查都很有帮助。

查看标签: git tag
使用正则表达式查询标签: git tag -l ‘v5.1.2.*’
创建标签:
git tag +标签名:为本次提交创建标签
git tag +标签名 +版本号:为对应版本创建标签。
git tag -a 标签名 -m “描述”:为标签添加备注信息。

推送标签:
git push 远程主机名 标签名
git push 远程主机名 --tags

删除标签:
本地标签:
git tag -d 标签名
远程标签:
git push origin --delete tag
git push origin :refs/tags/标签名

解决冲突:
Git内容冲突产生的原因是,针对版本库中某个文件的某项内容,不同的操作对其做了不同的修改,以致于在合并不同的操作时发生矛盾。比如下面的例子:

我们在本地master分支,添加了文件hello,其内容如下:
Learning English is easy and simple
然后,我们由master分支切换到一个新的分支develop,并修改hello文件内容如下:
Learning English is easy & simple
随后将其提交到了本地develop分支。
我们又切换回master分支,并再次对hello内容进行了修改:
Learning English is easy or simple
这样,当我们将develop分支合并到master分支的时候,就会出现冲突提示如下:
Auto-merging hello
CONFLICT (content): Merge conflict in hello
Automatic merge failed; fix conflicts and then commit the result.
冲突出现的原因是,我们在develop分支和master分支上,都对hello文件的内容做了修改,这样当将develop合并到master时,Git就不确定究竟应该采用哪个修改。
解决内容冲突:
手动编辑冲突区域;
执行git add,将编辑提交到暂存区;
执行git commit,将编辑提交到本地仓库以解决冲突。

方法文件名修改造成的冲突,称为树冲突。比如,A用户把文件C改名为A,B用户把文件C改名为B,那么B合并这两个提交时,就会出现冲突:
解决树冲突:
git rm A
git rm C
git add B
git commit
即从本地仓库中删除A和C文件,然后再添加B文件并最终提交.
强制推送和强制合并:
-f参数
忽略文件:
如果你在本地版本库里,放入了仅供本地测试用的文件,但是你并不想将其推送到远程仓库,而且不想每次都被提醒你本地有未提交文件的话,就需要用到Git忽略文件提醒的功能。
在Git工作区的根目录下,创建一个特殊的.gitignore文件,把要忽略的文件名或者文件名的通配符填进去,然后将.gitignore提交到本地仓库,这样Git就会在你添加或者提交时,自动忽略这些文件。

忽略指定文件

HelloWrold.class

忽略指定文件夹

bin/
bin/gen/

忽略.class的所有文件

*.class

忽略名称中末尾为ignore的文件夹

*ignore/

忽略名称中间包含ignore的文件夹

ignore/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值