Git 是一个开源的分布式版本控制系统(Distributed Version Control System,简称 DVCS),用于敏捷高效地处理任何或小或大的项目。
使用的命令如下:
下载地址: https://git-scm.com/download
下载完成可以得到如下安装文件:
双击打开按步骤安装即可。安装完成后在电脑桌面(也可以是其他目录)点击右键,如果能够看到下面两个菜单则说明Git安装成功。
Git GUI:Git提供的图形界面工具
Git Bash:Git提供的命令行工具
在Git Bash中,我们会用到一些基本的linux命令:
//查看所有配置
git config -l
//查看系统配置
git config --system --list
//查看用户自己配置
git config --global --list
系统文件配置文件位置如下(因为之前我改过路径,这里的http.sslCAInfo是不对的,改为D:/Download/Git/mingw64/ssl/certs/ca-bundle.crt
)
//配置用户名
git config --global user.name "Kint"
//配置邮箱
git config --global user.email "[email protected]"
用户配置文件位置如下:
创建仓库的步骤如下:
test
),作为本地的Git仓库git init
.git
目录(Windows下勾选显示隐藏的项目即可看到)Git工作目录下对于文件的修改(增加、删除、更新)会存在几个状态,这些修改的状态会随着我们执行Git的命令而发生变化。
这里新创建了一个file01.txt
的文件,使用指令git status
查看,现在file01.txt
是未跟踪的文件,提示我们可以用指令git add
跟踪该文件,即将文件放入暂存区。
git add .
,将所有的改动加入暂存区)现在我们用git add .
指令将file01.txt
文件放入暂存区,现在可以看到文件是即将提交的状态,即将存入我们创建好的仓库中。
使用指令git commit -m 'add file01'
将文件存入仓库中。
查看我们的操作记录,git log --graph
在每条记录前面有*
符号,当操作记录和分支数量很多的时候,该指令可以让操作者更直观看到仓库的变化。
git log
指令查看)现在我们新创建文件file02.txt
,并提交到我们的仓库中,此时我们的仓库中存在file01.txt
和file02.txt
两个文件。可以看到这时我们有两条提交记录,前面就是提交的编号,我们可以根据这个编号回退到我们之前的版本。比如这里我们想回到只有file01.txt
文件的版本。
我们输入git reset --hard 86d8f8e
指令,此时我们就只有add file01
的提交记录,没有add file02
的提交记录,仓库中也没有file02.txt
,说明我们成功回到了只有file01.txt
的版本。
如果这时候我们想回到add file02
的版本,但是我们记不住提交编号,我们可以通过git reflog
指令查看所有的提交记录。
找到提交编号后,我们就可以回滚到有file01.txt
和file02.txt
版本的仓库。
如果只是新创建test.txt
文件而没有提交至暂存区,git rm test.txt
指令不生效。
文件提交至暂存区后,git rm test.txt
指令仍不生效,但此时我们可以根据提示修改指令,-f
即强制删除暂存区和工作区的文件,--cached
则是删除在暂存区的文件而保留工作区的文件。
几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。
目前我们只有一个master分支。
创建新分支dev01
。
成功切换至dev01
分支。
我们在dev01
分支上创建了file03.txt
,并提交至仓库中。此时master
分支仓库中没有file03.txt
。我们的目的是想要master
分支中也有file03.txt
。
我们先切换到master
分支,执行git merge dev01
指令就可以合并两个分支。
合并完成后,我们将dev01
分支删除,此时就只剩下了master
分支。
当两个分支上对文件的修改可能会存在冲突,例如同时修改了同一个文件的同一行,这时就需要手动解决冲突,解决冲突步骤如下:
比如此时master
分支有3个文件,我们先创建并切换至dev01
分支。
在dev01
分支中,我们修改file01.txt
的内容,让count=1。(用vim
编辑文本时,先按i
键进入编辑模式,修改完成后按Esc
和:
,最后输入wq
指令保存退出)
然后将修改后的文件上传至仓库中。
切换回master
分支,修改file01.txt
的内容,让count=2,然后上传至对应仓库中。
当我们尝试合并两个分支时,会提示我们产生了冲突。查看file01.txt
内容,其中count=2
是master
分支修改的内容,count=1
是dev01
分支修改的内容,我们需要手动处理产生冲突的地方。
我们可以修改成想要的效果,在这里我设置count=3。
成功解决冲突,最后提交文件至仓库,就可以完成合并分支的操作。
地址:https://github.com/
仓库创建完成后可以看到仓库地址,如下图所示:
设置成功如下:
此操作是先初始化本地库,然后与已创建的远程库进行对接。
将本地的master分支仓库上传至远程仓库中。
查询远程仓库可以看到对应的文件。
如果已经有一个远端仓库,我们可以直接clone到本地。
例如,我们新创建一个clone的文件夹,在里面右键打开Git Bash,输入指令git clone [email protected]:LenkyAndrews/git_test.git
可以看到,已经成功将远端仓库的文件克隆到本地。
命令:git fetch [远端名称] [分支名称]
抓取指令就是将仓库里的更新都抓取到本地,不进行合并。比如操作者A新创建文件file04.txt
,然后提交到远程仓库中。
然后操作者B本地的仓库没有更新,此时他要抓取远端仓库的更新到本地。抓取后查看记录此时本地仓库并没有file04.txt
文件,故要进行合并分支操作。
通过git status
指令可以查看当前的状态,合并分支后可以看到本地仓库中已有file04.txt
文件。
命令:git pull [远端名称] [分支名称]
将远端仓库的修改拉到本地并自动进行合并,等同于fetch+merge。
比如操作者A又添加了file05.txt
文件到远端仓库中。
操作者B想要更新本地仓库,直接使用pull
指令即可完成更新。
问题:右键无法打开Bit Bash,显示找不到应用程序。
解决办法:
现在右键可以正常打开Git了。