Git 基本操作

打印 上一主题 下一主题

主题 890|帖子 890|积分 2670



一、基本概念

Git 是一种分布式版本控制体系,用于跟踪和管理代码的变更。它最初是由 Linus Torvalds 开辟的,用于管理 Linux 内核的源代码。
Git 在软件开辟中被广泛应用,尤其是在团队协作和开源项目中。通过利用 Git,开辟职员可以更好地管理代码、协同工作、追踪题目和版本发布等。
1、工作区域

Git 管理项目时,文件流转的三个工作区域:Git 的工作目次,暂存区域,以及本地堆栈。

你的本地堆栈由 Git 维护的三棵"树"组成。


  • 工作目次:它持有实际文件;
  • 暂存区(Index):它像个缓存区域,暂时保存你的改动;
  • 本地堆栈(Respository):可以把本地堆栈理解成一个目次,这个目次中全部的文件都可以被Git管理起来每个文件的删除、修改、新增操作都可以被 Git 跟踪到以便任何时候,都可以追踪历史或者还原到之前的某一个版本
2、文件状态

对于任何一个文件,在 Git 内都只有三种状态:已修改(modified)已暂存(staged)已提交(committed)


  • 已修改表现修改了某个文件,但还没有提交保存;
  • 已暂存表现把已修改的文件放在下次提交时要保存的清单中;add
  • 已提交表现该文件已经被安全地保存在本地数据库中了。commit

二、基本利用


1、设置用户标识

当你安装 Git 后首先要做的事变是设置你的用户名称和 e-mail 地址。这是非常重要的,由于每次 Git 提交都会利用该信息。它被永久的嵌入到了你的提交中:
  1. git config --global user.name "xxx"    # 名称
  2. git config --global user.email xx@xx   # 邮箱
复制代码
只必要做一次这个设置,假如你传递了 --global 选项,Git 将总是会利用该信息来处理你在体系中所做的统统操作。假如你希望在一个特定的项目中利用不同的名称或 e-mail 地址,你可以在该项目中运行该命令而不要 --global 选项。总之 --global 为全局配置,不加为某个项目标特定配置。
2、初始化堆栈

  1. git init
复制代码
该命令执行完后会在当前目次生成一个 .git 目次。

3、提交文件到暂存区

现在在新建一个文件:

通过命令 git status 可以检察当前文件状态,表现有一个未跟踪的文件 h.txt。
下面就可以实验把文件提交到暂存区,利用 git add 命令:
  1. git add [files1] [files2] # 添加指定文件到暂存区
  2. git add [dir]             # 添加指定目录到暂存区
  3. git add .                                  # 添加当前目录下的所有文件到暂存区
  4. git add -p                                    # 同一文件的多处变化,实现分次提交
复制代码

4、提交到本地库

  1. git commit -m [message] (文件名)  # 提交缓存区内容到本地库
  2. git commit [file1] -m [msg]                 # 指定已追踪的文件进行提交
  3. git commit -a -m [msg]                         # 相当于add和commit组合提交,直接到仓库
  4. git commit -v                                         # 提交时显示diff信息
  5. git commit --amend -m [msg]                 # 使用一次新的commit,来代替上一次提交
  6. git commit --amend [file1]                 # 指定文件重新上一次commit
复制代码

到目前为止,已经把改动提交到 HEAD 了,但是还没有到远程堆栈。
可以利用 git log 检察全部的提交:

5、推送到远程堆栈

执行如下命令以将这些改动提交到远端堆栈
  1. git push origin master
复制代码
  可以把 master 换成你想要推送的任何分支。
  假如你还没有克隆现有堆栈,并欲将你的堆栈毗连到某个远程服务器,你可以利用如下命令添加:
  1. git remote add origin <server>
复制代码
云云你就能够将你的改动推送到所添加的服务器上去了。

   git remote
  1. git remote -v                                         # 查看当前别名
  2. git remote add 别名 链接          # 创建别名
  3. git remote rm 库名                # 删除库
  4. git remote remove 别名            # 删除别名
复制代码
5.1 错误阐明

假如你的远程堆栈已经是创建好的,而且要提交的分支上有内容的话(push 时会提示远程库与本地库不一致造成的错误,如下图),要先 pull 到本地,再重新 push。

先执行如下命令:(master 换成你要拉取的分支)
  1. git pull --rebase origin master
复制代码

然后再重新 push 就正常了。
6、克隆

通过 git clone 命令可以克隆远程堆栈到本地:
  1. # 克隆一个项目和它的整个代码历史(版本信息)
  2. $ git clone [url]
  3. # 指定克隆分支
  4. $ git clone -b 分支名 [url]
复制代码
三、分支操作

分支是用来将特性开辟绝缘开来的。在你创建堆栈的时候,master 是"默认的"分支。在其他分支上进行开辟,完成后再将它们合并到主分支上。
下面是 Git 中分支操作的常用指令:
  1. # 列出所有本地分支
  2. git branch
  3. # 列出所有远程分支
  4. git branch
  5. -r
  6. # 新建一个分支,但依然停留在当前分支
  7. git branch
  8. [branch-name]
  9. # 新建一个分支,并切换到该分支
  10. git checkout -b [branch]
  11. # 切换分支
  12. git checkout [branch-name]
  13. # 合并指定分支到当前分支
  14. $ git merge [branch]
  15. # 删除分支
  16. $ git branch
  17. -d [branch-name]
  18. # 删除远程分支
  19. $ git push origin --delete [branch-name]
  20. $ git branch
  21. -dr [remote/branch]
复制代码
1、检察分支

  1. git branch
复制代码

此例的意思就是,我们有一个叫做 master 的分支,而且该分支是当前分支(前面有 *)。执行 git init
的时候,默认环境下 Git 就会为你创建 master 分支。分支在本地完成,速度快。
2、创建分支

  1. git branch
  2. [branch-name]
复制代码

3、切换分支

通过如下命令可以切换分支:
  1. # 切换分支
  2. git checkout [branch-name]
复制代码

下面的指令更便捷,可以同时实现刚才提到的两个功能:
  1. # 新建一个分支,并切换到该分支
  2. git checkout -b [branch]
复制代码

4、合并分支

现在在 test1 分支上修改文件 h.txt,然后 commit:

然后切换回主分支合并:

   对其他分支的更改不会反映在主分支上。假如想将更改提交到主分支,则需切换回 master 分支,然后利用合并。
  5、删除分支

利用 -d 标识,把新建的分支删掉:
  1. git branch
  2. -d test
复制代码

6、上传分支

除非你将分支推送到远端堆栈,否则该分支就是 不为他人所见的:
  1. git push origin <branch>
复制代码
四、替换本地改动

假如操作失误可以利用如下命令替换掉本地改动:
  1. git checkout -- <filename>
复制代码
此命令会利用 HEAD 中的最新内容替换掉你的工作目次中的文件。已添加到暂存区的改动以及新文件都不会受到影响。
步骤见下图:

先修改了 h.txt,然后执行 git checkout h.txt,然后全部改动都被删除了。
   假如你想丢弃你在本地的全部改动与提交,可以到服务器上获取最新的版本历史,并将你本地主分支指向它:
  1. git fetch origin
  2. git reset --hard origin/master
复制代码
五、重置

当我们不想要之前提交的修改时,就会用到这个命令。也许这是一个 错误的提交或者大概是引入了 bug 的提交,这时候就要执行 git reset。
git reset 能让我们不再利用当前台面上的文件,让我们可以控制 HEAD 应该指向的位置。
1、软重置

软重置会将 HEAD 移至指定的提交(或与 HEAD 相比的提交的索引),而不会移除该提交之后加入的修改!


输入 git status 后,你会看到我们仍然可以访问在之前的提交上做过的全部修改。
这意味着我们可以修复这些文件的内容,之后再重新提交它们!
2、硬重置

偶尔候我们并不想保存特定提交引入的修改。不同于软重置,我们应该再也无需访问它们。
Git 应该直接将团体状态直接重置到特定提交之前的状态:这甚至包括你在工作目次中和暂存文件上的修改。
我们重新 add 并 commit,然后硬重置:


回去检察文件 h.txt,添加的内容已经不存在,而我们全部提交的信息也都已经被移除。
六、还原

另一种打消修改的方法是执行 git revert。
通过对特定的提交执行还原操作,我们会创建一个包含已还原修改的新提交。
这个在新建一个 hh.txt 文件并提交:


用 git revert 打消修改

有上图所示,执行 git revert 8edbe7 后,新增的 hh.txt 被删除了,并新提交了一个 commit。此前添加 hh.txt 的提交还在,这样就保存了该提交信息,进步了堆栈的兼容性。
七、拣选

当一个特定分支包含我们的活动分支必要的某个提交时,我们对谁人提交执行 cherry-pick。
对一个提交执行 cherry-pick 时,我们会在活动分支上创建一个新的提交,其中包含由拣选出来的提交所引入的修改。
创建切换到 cherry 分支:


然后在分支 cherry 上修改文件 h.txt 并提交几个节点:

切回 master 分支:

执行:git cherry-pick bf221cb05

由上图所示,分支 cherry 的 commit bf221cb05,被复制到分支 master,并创建了 1 个新的提交 93cfeef。
通过该命令我们就可以将其他分支,必要的提交,合并到主分支 master。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表