git使用注意解疑总结篇(Git教程 By 廖雪峰学习)

git使用总结整理

笔者是在Windows下完成的git学习安装:

使用Windows的要特别注意:

注意1:千万不要使用Windows自带的记事本编辑任何文本文件。原因是Microsoft开发记事本的团队使用了一 个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0xefbbbf(十六进制)的字符,你会遇到很多不可思议的问题,比 如网页第一行可能会显示一个“?”,明明正确的程序一编译就报语法错误,等等,都是由记事本的弱智行

为带来的。建议你下载Notepad++代替记事本,不但功能强大,而且免费!记得把Notepad++的默认编码设置为UTF-8 without BOM即可

注意2:在使用Notepad++新建文件保存在一个目录,创建版本库的父目录都不得含有中文(Windows需要注意)

建立文件夹learngit,并建立两个文件练习


问题1:为什么Git添加文件需要add,commit:一共两步呢?因为commit可以一次提交很多文件,
所以你可以多次add不同的文件?
初始化一个Git仓库,使用git init命令。
添加文件到Git仓库,分两步:
• 第一步,使用命令git add ,注意,可反复多次使用,添加多个文件;
• 第二步,使用命令git commit,完成。


注意3:要随时掌握工作区的状态使用git status命令。
• 如果git status告诉你有文件被修改过,用git diff可以查看修改内容。

注意4:你不断对文件进行修改,然后不断提交修改到版本库里,Git每当你觉得文件修改到一定程度的时候,就可以“保存一个快照”,这个快照在Git中被称为commit。一旦你把文件改乱了,或者误 删了文件,还可以从最近的⼀一个commit恢复,然后继续工作,而不是把工作成果全部丢失。

撤销回退:首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新的提交“ 3628164...882e1e0”上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100 个版本写100个^比较容易数不过来,所以写成HEAD~100

现在,我们要把当前版本“append GPL”回退到上⼀一个版本“add distributed”,就可
以使用git reset命令:
$ git reset --hard HEAD^
• HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。
• 穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。
• 要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。

注意5:理解暂存区
⼯工作区和暂存区
Git和其他版本控制系统如SVN的一个不同之处就是有暂存区的概念。
先来看名词解释。
⼯工作区(Working Directory):就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区

版本库(Repository):工作区有一个隐藏目录“.git”,这个不算工作区,而是Git的版本
库。
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。


问题2:为什么Git比其他版本控制系统设计得优秀,因为Git跟踪并管理的是修改,而非文件。

每次修改,如果不add到暂存区,那就不会加入到commit中。

注意6:
$ git checkout -- readme.txt
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这
里有两种情况:
⼀一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库⼀一模⼀一
样的状态;
⼀一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存
区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
 撤销回退
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令gitcheckout -- file。
场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两
步,第一步用命令git reset HEAD file,就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不
过前提是没有推送到远程库。
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都
可以“一键还原”。

注意7:
多人协作的工作模式通常是这样:
1. 首先,可以试图用git push origin branch-name推送自己的修改;
2. 如果推送失败,则因为远程分支比你的本地更新,需要先用git pull试图合并;
3. 如果合并有冲突,则解决冲突,并在本地提交;
4. 没有冲突或者解决掉冲突后,再用git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没
有创建,用命令git branch --set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
小结
• 查看远程库信息,使用git remote -v;
• 本地新建的分支如果不推送到远程,对其他人就是不可见的;
• 从本地推送分支,使用git push origin branch-name,如果推送失败,先用git pull抓
取远程的新提交;
• 在本地创建和远程分支对应的分支,使用git checkout -b branch-name origin/branchname,
本地和远程分支的名称最好一致;
• 建立本地分支和远程分支的关联,使用git branch --set-upstream branch-name
origin/branch-name;
• 从远程抓取分支,使用git pull,如果有冲突,要先处理冲突。


注意8:配置别名(提高效率的一种方法)

我们只需要敲一行命令,告诉Git,以后st就表示status:
$ git config --global alias.st status
当然还有别的命令可以简写,很多人都用co表示checkout,ci表⽰示commit,br表示
branch:
$ git config --global alias.co checkout
$ git config --global alias.ci commit
$ git config --global alias.br branch



猜你喜欢

转载自blog.csdn.net/weixin_30363263/article/details/80846318