在Git安装完成之后,需要配置Git连接的用户信息,基本的配置命令如下
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
A:配置个人信息
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
若是使用–global命令 则所有使用git的身份都是这一个 (疑问:若我在Github有账户,在码云上有账户,那我如何自由的切换已拉取各自上面的项目呢)
B:创建目录
$ mkdir learngit
$ cd learngit
$ pwd(查看当前目录)
/Users/michael/learngit
C:初始化仓库
$ git init(使用此命令可使该文件夹的一切改动都可被跟踪)
Initialized empty Git repository in /Users/michael/learngit/.git/
D:往仓库添加和提交文件
在learngit 目录下或者子目录下新增文件readme.txt 使用
$ git add readme.txt
将文件添加到仓库; 使用
$ git commit -m "测试提交"
[master (root-commit) eaadf4e] 测试提交
1 file changed, 3 insertions(+)
create mode 100644 readme.txt
将文件添加到仓库。 以下是小结截图
E:状态查看命令
git status 查看文件是否已经改变
git diff 查看具体哪个地方改变了什么 若是图片被修改不能知道被修改了什么 只能知道大小的变动
F:版本回退
git log 查看最近三次的提交记录
git log --pretty=oneline 查看最近三次的提交记录 精简的显示方式
git reset --hard HEAD^ 回退到上一个版本
git reset --hard HEAD^^ 回退到上上一个版本
git reset --hard XXXX 会退到指定版本号
git reflog 查看最近的git提交命令
G:对git占存区的理解
我们创建一个空白文件夹比如learngit可以看做是工作区,在这个文件夹下使用git初始化命令生成.git文件(夹)之后,可以理解为该文件夹是一个版本库,这个文件夹按照区间来分可以分为暂存区和支干,以及指针(HEAD),默认情况下版本库自动创建一个主支(master),指针必有所指,默认指向master,当然还可以创建其他分支。暂存区介于工作区和支干(master)之间,正常的工作提交流程是,我们在我们的工作区文件夹或者是项目编写我们的文件,之后先使用git add XXX,XXX或者git add.(当前所有修改的文件),我们就把我们需要提交的文件先放到了暂存区(这么做肯定有它的好处),在没有add 之前我们若是添加新文件,此时查看git status,新的文件显示未被跟踪Untracked 其他文件若是改动显示被修改,之后我们使用git commit -m ‘修改说明’ 命令时,会将暂存区的所有文件一次性提交到当前指针(HEAD)指向的支干(master)。
H:管理修改
此处强调任何在工作区修改的文件需使用git add 命令之后再使用git commit 命令,才可以将我们的修改提交到版本库。若是我们修改了一部分内容,然后使用了git add 命令,之后又修改了文件,再使用git commit命令提交的话,第二次的修改因为没有使用git add命令将修改提交到暂存区,所以不会将最后的修改提交到版本库。
I:撤销修改
在工作区做了修改之后,若是还没有提交到暂存区,可以使用 git checkout --(空格) XXX(比如readme.txt文件) 可以将对readme.txt上文件的修改全部撤销。 在工作区做了修改之后,已经提交到暂存区,可以使用 git reset HEAD readm.txt 将提交到暂存区的所有修改撤回工作区(工作区的修改仍然保留) 以下是有无提交到暂存区的状态区别:
J:删除文件
情景:工作区新增了文件,将文件提交到了暂存区(使用git reset HEAD XX文件可以撤销提交到暂存区的修改)或者是提交到了版本库,此时本地工作区删除了文件,若想删除版本库新提交的文件,可使用
git rm XX 文件命令,再使用git commit 命令即可删除版本库上提交的文件。
若是已经提交到了暂存区或者是版本库,而本地只是误删了文件想还原,可使用
git checkout -- XX文件的命令即可 将本地已经删除的文件还原
K:关联远程仓库
远程仓库其实和本地仓库实质上一模一样,唯一的区别是,一个在自己电脑上(不安全),一个在大家信任的电脑上(中国的某个地方),使用远程仓库的两个原因是,一是备份自己的东西,二是多人协调工作,把自己东西放到外网,别人可以同步到和你本地一不一样的数据。使用命令
$ git remote add origin https://github.com/xxxxxx/LearnGit.git
将本地的仓库与远程关联(发生关系),git remote add 是固定命令 origin 指向 https://github.com/RichiceWoo/LearnGit.git 就是说我们关联的是这个地址指向的远程仓库,而origin只是这个仓库的代名词而已 以后再把本地仓库数据推送到远程仓库时使用这个代名词就可以了 关联之后就是推送了,使用命令
git push -u origin master(第一推送),加参数-u 可以使本地master与远程master关联并且推送上去 以后不需要加此参数
固定命令 git push ,动态参数origin 远程仓库名称 master本地主支
L:仓库克隆
是指以远程仓库为主导,将远程仓库搬到本地,如此这样做,克隆下来,本地就是一个完整的仓库了 命令 git clone https://github.com/xxxxxxx/gitskills.git(远程仓库地址),特别简单 截图如下:
M:分支管理 分支可以理解为建筑工地上同时进行的建筑工事(所有的工事组合起来是一个整体),对于一个人来说(相对于团队合作)他可以在不同的时刻创建不同的工事(分支),指针(HEAD)是指当前你这个人在哪个工事上,当你在某个工事(HEAD指向的工事(分支))进行作业呢,相当于你在某个分支上做修改和变动,你提交时只会提交到当前分支,你切换到其他分支时,你是看不到当前的这些改变的,就是说你去了其他工事,那为了能让其他工事跟保持一致,你就可以把你做了改变的工事复制到其他工事。由于git是记录改变,并没有真正改变内容,所以复制(merge)只是把做了改变的分支的改变记录给了其他工事。这样的过程可以理解为电脑上虚拟的构建过程,在现实中存在的东西永远在一个地方进行修改,而你修改记录却可以在任何地方呈现(不冲突的情况)。 命令:
git branch dev 创建一个新的分支dev
git checkout dev 切换分支 HEAD指向 dev
git branch 查看当前有多少分支 并且用*表示当前指针指向哪个分支
git merge XX(需要合并的分支)
git branch -d XX(需要删除的分支)
|