git 与 svn的区别
- git 只是关心文件整体是否有不同,不会记录文件的差异信息
- git 的绝大部分操作都只需要再本地执行,不需要连接服务器。因为日志记录等信息都在本地。操作对的时候,svn使用commit之后直接提交到服务器,而git只是提交在本地,push之后才会上传到服务器。
使用git,http和ssh的区别
- SSH和HTTPS,SSH协议只认机器,HTTPS协议只认账号;也即为:如果使用SSH操作远程仓库的话,我们需要使用公钥和私钥对来做权限的认证,如果使用HTTPS操作远程仓库,则需要使用账号密码来做权限的认证。有了权限之后,服务器并不是根据这个记录是谁提交的代码,因此需要用户名和邮箱区分不同的人提交的代码
- 使用ssh,只需要输入一次用户名密码,而http每次都需要输入
用户名和用户邮箱的理解
- 用户名和邮箱只做,提交记录使用,因此是可以随便写的。如果写的邮箱服务器是有记录的,那么会显示邮箱,否则显示用户名
git clone失败
我在git clone的时候习惯加上了 sudo,结果导致没有权限下载在代码。因为在root目录下并没有添加公钥,因此是失败的。因为公钥模式是用户目录,公钥生成在~/.ssh下面。因此在git进行操作的时候不要添加sudo。
gitk 图形界面的使用
gitk
git 撤销的使用
- 如果已经git commit ,重新修改文件,然后将文件git add到暂存区,然后使用git commit – amend。如果有文件修改,那么提交记录就是修改文件,没有的话就只是修改提交说明
- 如果已经git add,那么使用it restore --staged <文件>,这样数据就从暂存器,变到了工作区。如果这个文件之前已经commit过,那么使用git diff 就可以看到文件差异。如果这个文件之前没有提交过,那个这个文件就是未被追踪的文件,git 对该文件修改没有记录。
- 如果只是工作区修改,那么使用git restore <文件>。如果这个文件已经commit过,那么这个文件会变成上次提交的状态。
工作区,暂存区,本地仓库
- 工作区,暂存区,本地仓库,都只有一份。本地仓库里含有多个分支
- 已经追踪的文件,可以使用git diff 查看修改了那些地方。经过git add之后,进入暂存区,可以使用git diff --staged 查看本次进入暂存区有哪些修改。
- 因为工作区和暂存区只有一个。但是却对应了很多个分支,因此如果,工作区和暂存区还有内容的话,是无法进行分支的切换的。要么使用commit 进行提交,要么使用git stash,相关的命令进行暂存。
分支的使用
- 创建分支 git branch <分支名>
- 查看分支 git branch
- 查看远程分支 git branch -a
- 切换分支 git checkout <分支名>
需要注意的就是