当前位置:   article > 正文

『Python学习笔记』Git的使用教程_gitpython

gitpython
Git的使用教程

一. Git介绍

  • Git 是一个 版本控制系统,是任何软件开发项目中的主要内容。通常有两个主要用途:代码备份和代码版本控制。你可以逐步处理代码,在需要回滚到备份副本的过程中保存每一步的进度!

1.1. 安装和配置

  • Git 配置:
  • Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
  • 1、/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
  • 2、~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
  • 3、当前项目的Git目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效
  • 注意: 每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量
  • 配置个人的用户名称和电子邮件地址:
git config --global user.name "kaifang.zkf"
git config --global user.email "devinzhang1994@163.com"
  • 1
  • 2
  • 好多人都不知道的小技巧是,你可以为 Git 启用一些额外的颜色,这样就可以更容易地阅读命令的输出!
git config --global color.ui true
  • 1
  • 查看配置信息:
git config --list 
  • 1

1.2. git工作流程

  • 一般工作流程如下:
  • 1、克隆 Git 资源作为工作目录。
  • 2、在克隆的资源上添加或修改文件。
  • 3、如果其他人修改了,你可以更新资源。
  • 4、在提交前查看修改。
  • 5、提交修改。
  • 6、在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

1.3. Git 工作区、暂存区和版本库

  • 我们先来理解下 Git 工作区、暂存区和版本库概念:
  • 1、工作区:就是你在电脑里能看到的目录。
  • 2、暂存区:英文叫 stageindex。一般存放在 .git 目录下的 index 文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 3、版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。
  • 下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:

1.4. Git 创建仓库

  • Git 使用 git init 命令来初始化一个 Git 仓库,Git 的很多命令都需要在 Git 的仓库中运行,所以 git init 是使用 Git 的第一个命令。
  • 在执行完成 git init 命令后,Git 仓库会生成一个 .git 目录,该目录包含了资源的所有元数据,其他的项目目录保持不变。
  • 1、使用当前目录作为Git仓库,我们只需使它初始化。
git init
# git init newrepo # 使用我们指定目录作为Git仓库。
# 初始化后,会在 newrepo 目录下会出现一个名为 .git 的目录,所有 Git 需要的数据和资源都存放在这个目录中。
  • 1
  • 2
  • 3
  • 该命令执行完后会在当前目录生成一个 .git 目录。
  • 2、添加并提交: 要开始对现有文件进行版本控制,你应该先跟踪这些文件并进行初始提交。要做到这一点,你首先需要将文件添加到 Git 中,并将它们附加到 Git 项目中。
git add . # 添加当前目录下的所有文件到暂存区:
git add [file1] [file2] ... # 添加一个或多个文件到暂存区:
  • 1
  • 2

二. Git基本操作

2.1. 远程备份

  • 很棒!上面已经开始在本地对项目进行版本控制。如果你想远程保存和备份项目,则需要在 GitHub 上创建一个远程存储库(它是免费的!)。因此,首先转到 http://github.com创建一个存储库。然后,使用存储库的链接将其添加为本地 git 项目的来源,即该代码的存储位置。
# 示例
git remote add origin \
https://github.com/wupeixuan/repo.git 
# 以我的一个仓库为例
git remote add origin \
https://github.com/wupeixuan/JDKSourceCode1.8.git
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 然后,你可以继续将代码推送到 GitHub!哇,你已经成功备份了你的代码!
git push origin master
  • 1

2.2. 状态检查

  • git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。
  • 如果你将新文件添加到项目中,而该文件之前不存在,则在运行 git status 时,你应该看到未跟踪的文件,如下所示的one.py

2.3. 高级文件添加

  • 还有一些更高级的方法可以将文件添加到 Git 中,从而使你的工作流程更高效。我们可以执行以下操作,而不是试图查找所有有更改的文件并逐个添加它们:
# 逐个添加文件
git add filename1 

# 添加多个文件
git add filename1 filename2 ....

# 添加当前目录中的所有文件
git add -A

# 添加当前目录中的所有文件更改(添加更改的)
git add .

# 选择要添加的更改(你可以 Y 或 N 完成所有更改)
git add -p
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

2.4. 高级提交

  • 我们可以使用 git commit -m '提交信息' 来将文件提交到 Git。对于提交简短消息来说,这一切都很好,但是如果你想做一些更精细的事情,你需要来学习更多的操作:
### 提交暂存文件,通常用于较短的提交消息
git commit -m 'commit message'

### 添加文件并提交一次
git commit filename -m 'commit message'

### 添加文件并提交暂存文件
git commit -am 'insert commit message'

### 更改你的最新提交消息
git commit --amend 'new commit message' 

# 将一系列提交合并为一个提交,你可能会用它来组织混乱的提交历史记录
git rebase -i
### 这将为你提供核心编辑器上的界面:
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

2.5. 分支与合并

  • GitHub存储库的==master分支应始终包含有效且稳定的代码==。但是,你可能还希望备份一些当前正在处理的代码,但这些代码并不完全稳定。也许你要添加一个新功能,你正在尝试和破坏很多代码,但是你仍然希望保留备份以保存进度!
  • 分支使你可以在不影响master分支的情况下处理代码的单独副本。首次创建分支时,将以新名称创建master分支的完整克隆。然后,你可以独立地在此新分支中修改代码,包括提交文件等。一旦你的新功能已完全集成并且代码稳定,就可以将其合并到master分支中!

2.5.1. 创建分支

  • 创建一个本地分支,并且切换到新建的分支:
  • 在2个分支之间切换:
  • 查看所有本地分支:
  • 查看所有远程分支:
### 创建一个本地分支
git branch branchname

### 创建一个本地分支,并且切换到新建的分支
git checkout -b branchname

### 在2个分支之间切换
git checkout prc/dev-wupx
git checkout master

### 将新的本地分支作为备份
git push -u origin branch_2

### 删除本地分支,这不会让你删除尚未合并的分支
git branch -d branch_2

### 删除本地分支,即使尚未合并,这也会删除该分支!
git branch -D branch_2

### Viewing all current branches for the repository, including both ### local and remote branches. Great to see if you already have a ### branch for a particular feature addition, especially on bigger ### projects
### 查看存储库的所有当前分支,包括本地和远程分支。
git branch -a

### 查看已合并到您当前分支中的所有分支,包括本地和远程。 非常适合查看所有代码的来源!
git branch -a --merged

### 查看尚未合并到当前分支中的所有分支,包括本地和远程
git branch -a --no-merged

### 查看所有本地分支
git branch

### 查看所有远程分支
git branch -r

# 将主分支重新设置为本地分支
$ git rebase origin/master

# 将分支推送到远程存储库源并对其进行跟踪
$ git push origin branchname
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40

2.5.2. 删除分支

### 删除分支
git branch -d branchname
  • 1
  • 2

2.5.3. 合并分支

  • 很棒!现在,你已经学习了如何创建分支并开始敲代码!将新功能添加到分支中之后,你需要将其 合并回master分支,以便您的master具有所有最新的代码功能。
  • 你可能必须修复分支与主服务器之间的任何代码冲突,但是 Git 将向你展示在键入该 merge 命令后如何执行所有这些操作。
### 首先确保你正在查看 master 分支
git checkout master

### 现在将你的分支合并到 master 
git merge prc/dev-wupx
  • 1
  • 2
  • 3
  • 4
  • 5

2.6. 修复错误和回溯

  • 发生错误…它们经常在编码中发生!重要的是我们能够修复它们。不要慌!Git 提供了你所需的一切,以防你在所推送的代码中犯错,改写某些内容或者只是想对所推送的内容进行更正。
### 切换到最新提交的代码版本
git reset HEAD 
git reset HEAD -- filename # for a specific file

### 切换到最新提交之前的代码版本
git reset HEAD^ -- filename
git reset HEAD^ -- filename # for a specific file

### 切换回3或5次提交
git reset HEAD~3 -- filename
git reset HEAD~3 -- filename # for a specific file
git reset HEAD~5 -- filename
git reset HEAD~5 -- filename # for a specific file

### 切换回特定的提交,其中 0766c053 为提交 ID
git reset 0766c053 -- filename
git reset 0766c053 -- filename # for a specific file

### 先前的命令是所谓的软重置。 你的代码已重置,但是git仍会保留其他代码的副本,以备你需要时使用。 另一方面,--hard 标志告诉Git覆盖工作目录中的所有更改。
git reset --hard 0766c053
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

2.7. git删除远程文件

  • git删除远程分支包括两种情况:
  • (1)仅仅删除远程分支文件,不删除本地的文件;
  • (2)删除远程分支文件的同时,删除本地的文件。

2.8.1 仅仅删除远程分支文件,不删除本地文件

# 1. 删除远程文件filename
git rm --cached filename
git commit -m "delete remote file filename "
git push -u origin master(此处是当前分支的名字)

# 2. 删除远程文件夹directoryname
git rm -r --cached directoryname
git commit -m "delete remote directory directoryname "
git push -u origin master(此处是当前分支的名字)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.8.2 删除本地文件与远程分支文件

# 1. 删除文件filename
git rm test_end.py
git commit -m "delete file filename"
git push -u origin dev # 此处是当前分支的名字master或者dev

# 2. 删除文件夹directoryname
git rm -r directoryname
git commit -m "delete directory directoryname"
git push -u origin master(此处是当前分支的名字)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2.8. git commit之后,想撤销commit

  • 写完代码后,我们一般这样
# 添加当前目录中的所有文件更改(添加更改的)
git add .
git commit -m "本功能全部完成"
  • 1
  • 2
  • 3
  • 执行完commit后,想撤回commit,怎么办? 执行下面的命令
git reset --soft HEAD^
  • 1
  • 注意上面这样就成功的撤销了你的commit,但是仅仅是撤回commit操作,您写的代码仍然保留。

3. 其它一些操作

3.1. git设置账号邮箱

#设置用户名
git config --global user.name "kaifang.zkf"

#设置邮箱 (没有双引号)
git config --global user.email kaifang.zkf@dtwave-inc.com

# 查看用户名和密码
git config user.name
git config user.email
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

参考文献

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/405892
推荐阅读
相关标签
  

闽ICP备14008679号