git相关简介和常用命令

简介: git相关简介和常用命令

一、git简介?

git,是一个分布式版本控制软件,最初目的是为更好地管理Linux内核开发而设计,分布式版本控制系统的客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。Git 得特点简单来说就是:高端大气上档次。

github或者gitee实际就可以充当这个服务器角色,其是一个开源协作社区。当我们通过git init创建或者git clone一个项目的时候,项目目录会隐藏一个.git子目录,其作用是用来跟踪管理版本库的。

git和svn的区别

git和svn最大的区别在于git是分布式的,而svn是集中式的。因此我们不能再离线的情况下使用svn。

如果svn中的分支是整个版本库的复制的一份完整目录,而git的分支是指针指向某次提交,因此git的分支创建开销更小并且分支上的变化不会影响到其他人。svn的分支变化会影响到所有的人。

svn的指令相对于git来说要简单一些,比git更容易上手。

GIT把内容按元数据存储而svn是按文件:因为git目录是处于个人机器上的一个克隆版的版本库,它拥有中心版本库上的所有的东西,例如标签,分支,版本记录等。

GIT分支和SVN的分支不同:svn会发生分支遗漏的情况,而git可以同一个工作目录下快速的在几个分支间切换,很容易发现未被合并的分支,简单而快捷的合并这些文件。

GIT没有一个全局版本号,而svn有。

GIT的内容完整性要优与SVN:geit的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时候降低多版本库的破坏。

git pull和git fetch的区别

git fetch只是将远程仓库的变化下载下来,并没有和本地分支合并。

git pull 会将远程仓库的变化下载下来,并和当前分支合并。

不同状态四部分

文件状态对应的,不同状态的文件在Git中处于不同的工作区域,主要分成了四部分:

工作区:相当于本地写代码的区域,

暂存区:暂存区是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中

本地仓库:提交更新,找到暂存区域的文件,将快照永久性存储到 Git 本地仓库

远程仓库:远程的仓库,如 github。

git常用命令

初始化命令:

git clone url:下载一个项目和它的整个代码历史
git init 初始化仓库,默认为 master 分支
git add . 提交全部文件修改到暂存区
git pull <远程仓库名> <远程分支名> 拉取远程仓库的分支与本地当前分支合并
git pull <远程仓库名> <远程分支名>:<本地分支名> 拉取远程仓库的分支与本地某个分支合并

创建命令:

git checkout -b 创建+切换分支
git merge   合并某分支到当前分支

切换查看命令:

git diff 查看当前代码 add后,会 add 哪些内容
  git status 查看当前分支状态
  git checkout <分支名> 切换到本地某个分支
  git branch 查看分支
  git branch -r 查看远程所有分支
  git branch -a 查看本地和远程所有分支

删除命令:

git branch -D <分支名> 删除本地某个分支
git merge <分支名>  合并分支

上传命令:

git push [remote] [branch] 上传本地指定分支到远程仓库
git push [remote] --force 强行推送当前分支到远程仓库,即使有冲突
git commit -m "<注释>" 提交代码到本地仓库,并写提交注释
git commit -v 提交时显示所有diff信息

恢复命令:

git checkout [file] 恢复暂存区的指定文件到工作区
git checkout . 恢复暂存区的所有文件到工作区

版本穿梭:

HEAD 指向的版本就是当前版本,因此,Git 允许我们在版本的历史之间穿梭,
使用命令 git reset --hard commit_id 。
穿梭前,用 git log 可以查看提交历史,以便确定要回退到哪个版本。
要重返未来,用 git reflog 查看命令历史,以便确定要回到未来的哪个版本。

git冲突的场景,如何解决

一般情况下,出现分支冲突的场景有如下:

多个分支代码合并到一个分支时
多个分支向同一个远端分支推送

具体情况就是,多个分支修改了同一个文件(任何地方)或者多个分支修改了同一个文件的名称

如果两个分支中分别修改了不同文件中的部分,是不会产生冲突,直接合并即可

应用在命令中,就是push、pull、stash、rebase等命令下都有可能产生冲突情况,从本质上来讲,都是merge和patch(应用补丁)时产生冲突。

git冲突的修复

  1. 直接编辑冲突文件
    使用git pull --rebase经常会出现冲突
    冲突产生后,文件系统中冲突了的文件里面的内容会显示为类似下面这样:
<<<<<<< HEAD
 * test2
 * test3
=======
 * this is my modify, my be conflicked
 * test1000
>>>>>>> my_modify
其中:<<<<<<<(7个<)HEAD与=之间的内容是remote上的修改,冲突标记=与>>>>>>>之间的内容是我的修改内容。
在这两者之间选择任何你需要的内容保留下来,并删除所有的===,<<<,>>>即可解决冲突,
解决完成之后,git add -A, git rebase --continue就提交了代码
  1. 利用图形界面工具解决冲突
    当然我们也可以利用图形工具解决冲突
    如果要解决的冲突很多,且比较复杂,图形界面的冲突解决工具就显得很重要了。
    执行git mergetool用预先配置的Meld(Beyond Compare)解决冲突。

代码提交完整流程

步骤如下:

git add -A

git commit -m “message”

git pull --rebase (或者git fetch + git rebase)

解决冲突

git add 冲突文件

git rebase –continue

git push

其中,3、4、5点,如果没遇到冲突就不用进行,直接push上去。

当遇到冲突时,git会提示patch failed,并要我们解决问题了再执行git rebase --continue。


相关文章
|
2月前
|
开发工具 git
git 常用命令
这些只是 Git 命令的一部分,Git 还有许多其他命令和选项,可根据具体需求进行深入学习和使用。熟练掌握这些命令能够帮助你更高效地管理代码版本和协作开发。
|
5月前
|
存储 开发工具 git
|
29天前
|
机器学习/深度学习 Shell 网络安全
【Git】Git 命令参考手册
Git 命令参考手册的扩展部分,包含了从基础操作到高级功能的全面讲解。
33 3
|
5月前
|
开发工具 git
【GIT 第二篇章】GIT常用命令
Git常用命令涵盖初始化、状态管理、提交、分支处理、远程操作等关键流程。`git init`启动本地仓库,`git clone`下载远程仓库。通过`git status`和`git diff`检查工作状态与差异。利用`git add`暂存文件,`git commit`保存更改。借助`git branch`、`git checkout`、`git merge`和`git rebase`管理分支。使用`git fetch`、`git pull`和`git push`同步远程仓库。通过`git reset`、`git revert`和`git checkout`实现版本回退。
77 0
|
2月前
|
缓存 Java Shell
[Git]入门及其常用命令
本文介绍了 Git 的基本概念和常用命令,包括配置、分支管理、日志查看、版本回退等。特别讲解了如何部分拉取代码、暂存代码、删除日志等特殊需求的操作。通过实例和图解,帮助读者更好地理解和使用 Git。文章强调了 Git 的细节和注意事项,适合初学者和有一定基础的开发者参考。
57 1
[Git]入门及其常用命令
|
3月前
|
开发工具 git
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
这篇文章是关于Git常用命令的总结,包括初始化配置、基本提交、分支操作、合并、压缩历史、推送和拉取远程仓库等操作的详细说明。
148 1
git学习四:常用命令总结,包括创建基本命令,分支操作,合并命令,压缩命令,回溯历史命令,拉取命令
|
2月前
|
开发工具 git 开发者
|
2月前
|
开发工具 git 开发者
提升Git效率:掌握这5个高级命令
【10月更文挑战第17天】
69 0
|
4月前
|
存储 Linux 开发工具
掌握 Git 命令:每个开发者的必备技能
无论团队项目还是个人开发,掌握 Git 命令都是必备技能。本文介绍 Git 的基本概念与命令,如初始化仓库 (`git init`)、添加文件 (`git add`)、提交更改 (`git commit`)、检出分支 (`git checkout`)、合并分支 (`git merge`) 等,还分享了高级技巧如查看差异 (`git diff`)、撤销提交 (`git revert`)、修复合并冲突 (`git mergetool`) 和使用别名简化命令 (`git config --global alias.ci commit`)。
|
4月前
|
机器学习/深度学习 Shell 开发工具
Python使用管道执行git命令报错|4-7
Python使用管道执行git命令报错|4-7