起别名, 删除文件, 查看版本号, 回退版本
汇总:
详细:
给命令行起别名:
git config alias.st “status”
git config alias.ci "commit -m" 使用的时候就变成 git ci "xxxxxxx"
查看你这些配置, 可以在 工作区域的 .git 文件夹的 config文件 右键打开
本地的别名不太方便, 为了所有的项目都可以用, 现在起一个全局的别名;
起一个全局的别名:git config --global alias.st "status"
这里面要记住一个给log起全局的别名的git操作
查看你全局别名的配置, 可以在 前往--个人, 隐藏的一个文件, .gitconfig .右键打开, 有个alias 里面就是配置了。
删除文件:
git rm 就是命令
git ci "删除了xxx"
git st
git rm xxx.m 就是将文件删除
git help
可以看到每个文件的命令的意思。
git 里面 check out 是切换分支的, clone 才是下载到本地
git st 文件状态就变成绿色了,说明rm操作是本地操作的命令, 我们st操作完之后, 需要提交到暂缓区才可以。
查看版本号:
方式一: git log
细节: Author (作者), 时间,什么操作, 版本号有四十位。
版本号是由sha1算法生成的40位哈希值, 不会重复的。
方式二: git reflog
细节: 版本号, 做了什么操作, 可能做些版本回退, 这个命令是可以看到所有的版本回退的操作的。 所以这个命令的功能更强大。
版本回退补充汇总:
因为之前只有本地版本库, 没有共享版本库。
正确的做法是, 需要B也reset, 或者 B重新clone一个下来一个最新的版本。 所以回退版本是一个所有开发配合的操作。
正确的做法: 版本回退的时候 , 首先本地 备份一下
A: git reset -- hard HEAD^ git push -f
B : git reset --hard HEAD^
B git pull你发现已经成功了。
这就是正确的操作了。
操作了,没有提交的(回到当前版本),已经提交的(回到指定的版本,操作之前需要备份, 需要多人配合一起reset,或者新同事重新clone )。
(1) 命令行 回到当前版本操作: git reset -- hard HEAD (--hard是强制恢复的意思)
命令行 回到上一个版本的操作 : git reset -- hard HEAD^
命令行 回到上上个版本的操作 : git reset -- hard HEAD^ ^
命令行 回到上100个版本的操作 : git reset -- hard HEAD~100
命令行 回到指定的版本的操作 : git reset -- hard 版本号(前5位,前6位,等等)
(2)xcode 回到当前版本操作: source control ---discard all changes... / discard changes in selected files是删除当前停留的文件。
详细操作:
1. 前提:A cd到目录下面, 然后touch person.h open person.h 写一部分代码, 然后 git add. git ci "xxx" open person.h 改代码,
git add . git ci "xxxx" git log (查看版本) 这里操作注意, 这里很长, 直接,enter,会往下翻, 如果你按 空格, 会到最下面,
如果, 你按q, 会退出 ;
现在演示怎么回到上一个版本 git reset --hard HEAD^
想回到最后的版本, git reset --hard 这里填写log查到的版本号
push : git push orgin (orgin 是我们那个目录的意思)
git st
git push
发现push成功了,那么我们共享版本库就已经有 person.h这个文件了。
如果B 想要这个代码,cd 到B的文件夹下面, 然后git pull ;
A : git reset --hard HEAD^ 回到上一个版本; 你觉得共享版本库有没有回呢, git status ;
B: git pull 没有任何信息, 说明A虽然回退了版本, 但是没有影响到共享版本库;
A:git push , 报错信息, 已经存在版本了, 你必须先pull一下; 你检查文件还是没有回退成功;
A: 所以刚才的做法是错的, 正确的回退版本的方式是 git reset -- hard HEAD^ ; 然后git push -f, 强制推送的意思, 这样做之后,
你所有的操作就彻底没有了, 不能恢复的。
B:git pull , 这时候提示更新了,你会看到,还存在, 因为A的操作是共享版本库的记录, 但是B的操作是本地库,pull并不会改变本地的代码; 如果现在B git push
会有什么变化呢 push可以成功操作的;
A:git pull 会拉下来一些东西, 你会看到又出现了。