赞
踩
Git是目前最流行的版本控制工具之一,它可以帮助我们更好地管理代码,协作开发,以及保证代码的安全性。在学习Git之前,我们需要先了解几个概念:
一、Git的安装和配置
在使用Git之前,需要先安装Git客户端。Git客户端可以在访问Git官网下载,也可以使用包管理器进行安装。安装完成后,需要对Git进行一些基本配置,包括用户名和邮箱等信息。可以使用以下命令进行配置:
- $ git config --global user.name "Your Name"
- $ git config --global user.email "your_email@example.com"
Git的基本命令包括add、commit、push、pull、clone等,具体用法如下:
$ git init
这个命令用来初始化一个新的Git仓库,可以在当前目录下创建一个.git子目录,用来存储Git相关的文件。
以Windows为例:在您欲创建Git仓库的文件夹下右键选中Git Bash Here即可打开Git命令端
$ git add filename
在这里我新建test.txt,同时将当前目录下的所有文件添加到暂存区。
$ git commit -m "commit message"
-m "commit message"最好在提交时就写上
git log:即可查看提交历史记录。
git reflog:查看HEAD指针的移动历史(包括被回滚的版本)
可以发现:“2ed3c04”就是commit时一串数字的前7位地址
我们对test.txt做第一次修改并添加到暂存区,最后提交给本地仓库。test.txt的内容如图:
在此,有必要更深地了解工作区,暂存区,本地仓库和远程仓库的概念:
工作区就是我们平时存放代码的地方,暂存区临时存放文件的变动,本地仓库持久化了您的文件,远程仓库位于托管代码的服务器上。
因此,git的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)
例如:
新建test.txt文件--->Untracked
使用git add命令将test.txt加入到暂存区--->Staged
(如果想撤销对工作区的修改,git restore test.txt:将test.txt尚未加入暂存区的修改全部撤销)
使用git commit命令将暂存区的test.txt提交到本地仓库--->Unmodified
如果对Unmodified状态的文件(test.txt)进行修改---> modified
如果对Unmodified状态的文件进行remove操作--->Untracked
在持久化(commit)test.txt后,当我在工作区内修改了文件内容(添加了一行“333”),此时test.txt的状态就会从Unmodified变为Modified。
遇到了一个问题:"333"的这次修改效果并不好,我们需要回滚到以前的版本:
- git reset --hard HEAD^ 回滚到上一个版本
- git reset --hard HEAD^^ 回滚到上上个版本
- git reset --hard HEAD~10 回滚到前10个版本
- git reset --hard 版本号 回滚到某一特定版本
怎么查看版本号?
- git log
- 或
- git reflog
我要切换到第二次提交后的状态,那么可以输入:
git reset --hard cadd784
此时,相当于HEAD指针指向了第二个结点,内容已还原。
git log
用于显示提交历史,可以显示所有提交过的版本信息,但不包括已经被删除的commit记录和reset的操作。git log
主要用于查看项目的提交历史,以便于开发者追踪和分析代码变化。
而git reflog
则用于显示所有的操作记录,包括提交、回退的操作。git reflog
记录了本地仓库中所有分支的移动和修改,即使是已经被删除的分支也会被记录下来。因此,git reflog
常用于恢复本地的错误操作,例如找回误删的分支或回退到之前的版本号等。
Git操作可视化网站:Learn Git Branching
分支操作一般用于整个团队的协同,个人开发一般不需要分支操作
创建分支:使用git branch <branchname>
命令创建一个新的分支:
git branch hot-fix
该命令会在当前所在的提交上创建一个名为hot-fix的新分支
查看分支:使用git branch
命令查看所有分支
切换分支:使用git checkout <branchname>
命令切换到指定的分支
合并分支:使用git merge <branchname>
命令将指定分支合并到当前分支。比如:git merge hot-fix
。在合并之前,需要先切换到需要合并到的分支master,尔后再执行git merge
命令。
删除分支:使用git branch -d <branchname>
命令删除指定的分支,例如:git branch -d feature1
。如果该分支还有未合并的提交,删除分支时会提示错误信息,可以使用-D
选项强制删除。
合并冲突:在合并分支时,如果出现冲突,需要手动解决冲突后再提交。可以使用git status
命令查看冲突文件,然后手动修改文件中的冲突部分,最后使用git add
命令将修改后的文件添加到暂存区,再使用git commit
命令提交合并结果。
SSH方法:
将本机SSH公钥(id_rsa.pub)添加到代码托管平台的账户设置(Settings-SSH)内,尔后就可以使用免密登录;
推送本地现有仓库到远程仓库:
- cd existing_repo
- git remote rename origin old-origin
- git remote add origin git@Git托管网站/远程仓库名.git
- git push -u origin --all
- git push -u origin --tags
git push -u origin --all
的作用是将本地所有分支推送到远程代码库,并将远程代码库中的分支与本地代码库中的分支关联起来。其中,-u
选项表示将远程代码库中的分支设置为本地代码库中对应分支的上游分支(即默认的推送目标),origin
表示远程代码库的名称,--all
表示推送所有分支。
git push -u origin --tags
的作用是将本地所有标签推送到远程代码库中,并将远程代码库中的标签与本地代码库中的标签关联起来。其中,--tags
选项表示推送所有标签。
需要注意的是,如果远程代码库中已经存在与本地代码库中同名的分支或标签,那么推送操作可能会失败。此时可以使用git push --force
强制推送,但需要谨慎使用,因为这可能会覆盖远程代码库中的修改。另外,在团队协作中,强制推送可能会破坏其他人的工作,因此应该避免在共享的分支上使用强制推送。
- $ git push origin branchname
- 第一次push需要加上 -u , origin 的意思是别名
如图显示创建成功:
如何查看别名?git remote -v
拉取远程仓库的内容到本地:
我们先在代码托管网站向master分支的test.txt添加一行英文:Hello, world!
$ git pull origin branchname
在本地端查看test.txt的内容:
从代码托管平台克隆远程仓库到本地:
git pull和git clone的区别?
git clone
的作用是将远程代码库克隆到本地,创建一个新的本地代码库。通常情况下,git clone
只需要执行一次,之后就可以在本地代码库中进行修改和提交。
git pull
的作用是将远程代码库中的最新代码更新到本地代码库中。
因此,git clone
会创建一个新的本地代码库,而git pull
会将远程代码库中的更新合并到已有的本地代码库中。同时,git clone
只需要执行一次,而git pull
可以多次执行,用于保持本地代码库与远程代码库的同步。
假如日常工作的电脑不在身边,可以在新的电脑上使用git clone命令将远程仓库的代码克隆到本地从而继续开展工作。
HTTPS和SSH方式的区别和使用_百度知道 (baidu.com)
如何联系我?wei.haoran@outlook.com
本篇博客简单介绍了Git的基础知识,包括Git的安装、配置、基本命令和常用操作,可以帮助初学者基本入门git。然而,git的知识远远不止于此,需要读者进一步地探索和学习。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。