Git初级教程

最近在公司实习,需要使用git提交和管理代码,于是就自学了下,下面是一些学习的记录。

Git是一个项目版本控制工具,或是一个源代码管理工具,

它有两点好处:
一,可以让开发者在任何地点提交自己的代码和查看代码版本;
二,我们可以开许多分支来实践我们的想法,并且合并这些分支德开销几乎可以忽略不计。

Git只判断和记录文件整体是否更改,而不关心更改的内容。
Git使用数据的校验和来唯一标识和索引数据,每次提交更新,它都会纵览一遍所有文件的
指纹信息并对文件做一快照,然后保存一个指向这次快照的索引。

Git将远程服务器上的代码库下载到本地,如此,每一个参加该项目的客户机在本地都拥有
一个该项目的镜像,这些镜像也可一看作是一次服务器上代码库的备份。开发者在本地对
代码库的所有操作,包括修改和提交,都会被保存在日志中。通过这种方式我们可以随时
工作而无需过于依赖网络,等到了有网的地方再提交到服务器。

在Git中,文件只存在三种状态:已提交(committed),已修改(modified),已暂存
(staged)。已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某
个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。
Git为这三种文件状态提供了三个工作区域:工作目录,暂存目录,本地仓库。

Git工作流程如下:
1.在工作目录中修改某些文件
2.对修改后的文件进行快照,然后保存到暂存区域
3.提交更新,将保存在暂存区域德文件快照永久存储到Git目录中

Git配置:
命令:git config
git的配置文件存储在三个不同的地方:
/etc/gitconfig文件,对所有用户普遍适用的配置,使用git config --system
~/.gitconfig文件,用户目录下的配置文件只适用于该用户,使用git config --global

当前项目的git目录中的配置文件./.git/config,这里的配置仅针对当前项目有效。 

git config --global user.name "Tom"
git config --global user.user "Tom"
git config --global user.email "[email protected]"
git config --global core.editor vim

获得项目的git仓库:

1.在现存目录下,导入所有文件来创建新的git仓库

2.从已有的git仓库克隆出一个新的镜像仓库来。

在工作目录中初始化新仓库
要对现有的某个项目开始用git管理,只需到此项目所在的目录,执行:git init
初始化后,会在当前目录下生成一个.git目录,所有git需要的数据和资源都存放在这个目录中

从现有仓库克隆
git clone [url]

从仓库克隆出的所有文件默认都纳入在版本控制之中。工作目录下的文件无外乎两种状态:已
跟踪或未跟踪。已跟踪的文件指已被纳入版本控制中,在上次快照中有它们的记 录,工作一段
时间后,它们的状态可能是未更新,已修改或者已放入暂存区。而所有其他文件都是未跟踪。

文件状态图:
  Git初级教程_第1张图片
跟踪新文件
使用git add命令开始跟踪一个新文件,eg: git add readme
此命令也可将已修改但还未暂存的文件放入暂存区。如上图的stage the file这个动作就可用
git add 这个命令完成。
 

提交更新
提交是将暂存区中的文件快照提交到数据仓库中,所以在提交之前,请一定要确认还有什么修
改过的或新建的文件还没有 git add 过,否则提交的时候不会记录这些还没暂存起来的变化。
所以,、每次准备提交前,先用git status 看下,是不是都已暂存起来了,然后再运行提交命令
git commit -m "commit message"

Git也提供了一种可以跳过缓存区直接提交的方法,使用该命令是给git commit加上-a选项,Git
Git 就会自动把所有已经跟踪过的文件暂存起来一并提交,从而跳过 git add 步骤。

移除文件
要从 Git 中移除某个文件,就必须要从已跟踪文件清单中移除(确切地说,是从暂存区域移除),
然后提交。可以用 git rm 命令完成此项工作,并连带从工作目录中删除指定的文件,这样以后就
不会出现在未跟踪文件清单中了。


查看提交历史
在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 git log 命令查看。

提交撤销
任何时候,你都有可能需要撤消刚才所做的某些操作。接下来,我们会介绍一些基本的撤消操作相关
的命令。请注意,有些操作并不总是可以撤消的,所以请务必谨慎小心,一旦失误,就有可能丢失部
分工作成果。
修改最后一次提交
有时候我们提交完了才发现漏掉了几个文件没有加,或者提交信息写错了。想要撤消刚才的提交操作,
可以使用 --amend 选项重新提交:
git commit --amend

取消已暂存的文件
git reset HEAD

将当前目录回滚到指定版本号
git reset [版本号]

撤销更改
git checkout [filename]

还原一个版本的修改
git revert [版本号]

远程仓库的使用
1.查看远程仓库: git remote [-v]
2.从远程仓库抓取数据: git fetch [remote-name]  
  此命令会到远程仓库中拉取所有你本地仓库中还没有的数据,即使本地与服务器同步。
3.推送数据到远程仓库: git push [remote-name][branch-name]
  只有在所克隆的服务器上有写权限,或者同一时刻没有其他人在推数据,这条命令才会如期完成任
  务。如果在你推数据前,已经有其他人推送了若干更新,那 你的推送操作就会被驳回。你必须先把
  他们的更新抓取到本地,合并到自己的项目中,然后才可以再次推送。
4.查看远程仓库信息: git remote show [remote-name]
 
分支管理
1.创建分支: git branch [branch-name]
2.切换分支: git checkout [branch-name]
3.新建并切换到该分支: git checkout -b [branch-name]
4.删除分支: git branch -d [branch-name]
5.分支的合并: git merge [branch-name] 将主分支合并到branch-name上

6.查看远程分支: git branch -r 从远程服务器上clone后使用该命令可查看到所有远程分支
7.推送本地分支: git push [remote-name] [local-branch-name]:[remote-branch-name]
8.跟踪远程分支: git checkout -b [local-branch-name] [remote-name]/[remote-branch-name]
  创建分支后,系统会自动向远程分支推送和抓取数据,即存在映射关系。
9.删除远程分支: git push [remote-name] --delete [remote-branch-name]
  也可以简写为: git push [remote-name] []:[remote-branch-name] 将一个空的本地分支映射到远程分支
10.分支的衍合:git rebase [branch-name] 将分支branch-name相对于当前分支上文件的修改生成文件补丁
               git merge [branch-name]  将分支branch-name合并到当前分支上,当产成冲突时需要开发人员手动解决冲突

  [注]:一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。


你可能感兴趣的:(git)