赞
踩
Git的使用教程 |
- Git 是一个 版本控制系统,是任何软件开发项目中的主要内容。通常有两个主要用途:代码备份和代码版本控制。你可以逐步处理代码,在需要回滚到备份副本的过程中保存每一步的进度!
- 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"
- 好多人都不知道的小技巧是,你可以为 Git 启用一些额外的颜色,这样就可以更容易地阅读命令的输出!
git config --global color.ui true
- 查看配置信息:
git config --list
- 一般工作流程如下:
- 1、克隆 Git 资源作为工作目录。
- 2、在克隆的资源上添加或修改文件。
- 3、如果其他人修改了,你可以更新资源。
- 4、在提交前查看修改。
- 5、提交修改。
- 6、在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
- 我们先来理解下 Git 工作区、暂存区和版本库概念:
- 1、工作区:就是你在电脑里能看到的目录。
- 2、暂存区:英文叫
stage
或index
。一般存放在 .git 目录下的 index 文件(.git/index
)中,所以我们把暂存区有时也叫作索引(index)。- 3、版本库:工作区有一个隐藏目录
.git
,这个不算工作区,而是 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 需要的数据和资源都存放在这个目录中。
- 该命令执行完后会在当前目录生成一个 .git 目录。
- 2、添加并提交: 要开始对现有文件进行版本控制,你应该先跟踪这些文件并进行初始提交。要做到这一点,你首先需要将文件添加到 Git 中,并将它们附加到 Git 项目中。
git add . # 添加当前目录下的所有文件到暂存区:
git add [file1] [file2] ... # 添加一个或多个文件到暂存区:
- 很棒!上面已经开始在本地对项目进行版本控制。如果你想远程保存和备份项目,则需要在 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
- 然后,你可以继续将代码推送到 GitHub!哇,你已经成功备份了你的代码!
git push origin master
- git status 命令用于查看在你上次提交之后是否有对文件进行再次修改。
- 如果你将新文件添加到项目中,而该文件之前不存在,则在运行 git status 时,你应该看到未跟踪的文件,如下所示的one.py:
- 还有一些更高级的方法可以将文件添加到 Git 中,从而使你的工作流程更高效。我们可以执行以下操作,而不是试图查找所有有更改的文件并逐个添加它们:
# 逐个添加文件
git add filename1
# 添加多个文件
git add filename1 filename2 ....
# 添加当前目录中的所有文件
git add -A
# 添加当前目录中的所有文件更改(添加更改的)
git add .
# 选择要添加的更改(你可以 Y 或 N 完成所有更改)
git add -p
- 我们可以使用
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
- GitHub存储库的==master分支应始终包含有效且稳定的代码==。但是,你可能还希望备份一些当前正在处理的代码,但这些代码并不完全稳定。也许你要添加一个新功能,你正在尝试和破坏很多代码,但是你仍然希望保留备份以保存进度!
- 分支使你可以在不影响master分支的情况下处理代码的单独副本。首次创建分支时,将以新名称创建master分支的完整克隆。然后,你可以独立地在此新分支中修改代码,包括提交文件等。一旦你的新功能已完全集成并且代码稳定,就可以将其合并到master分支中!
- 创建一个本地分支,并且切换到新建的分支:
- 在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
### 删除分支
git branch -d branchname
- 很棒!现在,你已经学习了如何创建分支并开始敲代码!将新功能添加到分支中之后,你需要将其 合并回master分支,以便您的master具有所有最新的代码功能。
- 你可能必须修复分支与主服务器之间的任何代码冲突,但是 Git 将向你展示在键入该 merge 命令后如何执行所有这些操作。
### 首先确保你正在查看 master 分支
git checkout master
### 现在将你的分支合并到 master
git merge prc/dev-wupx
- 发生错误…它们经常在编码中发生!重要的是我们能够修复它们。不要慌!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
- git删除远程分支包括两种情况:
- (1)仅仅删除远程分支文件,不删除本地的文件;
- (2)删除远程分支文件的同时,删除本地的文件。
# 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. 删除文件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(此处是当前分支的名字)
- 写完代码后,我们一般这样
# 添加当前目录中的所有文件更改(添加更改的)
git add .
git commit -m "本功能全部完成"
- 执行完commit后,想撤回commit,怎么办? 执行下面的命令
git reset --soft HEAD^
- 注意:上面这样就成功的撤销了你的commit,但是仅仅是撤回commit操作,您写的代码仍然保留。
#设置用户名
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
- 看完这篇还不会用Git,那我就哭了!https://zhuanlan.zhihu.com/p/94008510
- Git教程!https://www.runoob.com/git/git-basic-operations.html
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。