安装
(我以前在第一个下载链接下载时,因为网络问题下载失败,故我转到第二个链接进行下载。)
配置全局用户
安装完Git,注册好某个Git托管平台(如GitHub、码云)后,可以配置全局用户,以便以后在本地控制Git。
git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
配置好后,可以使用 git config --list
查看配置信息。
常见术语
repository
仓库,可以存放你的某个项目。一般会有一个 README.md
描述该仓库的情况。
branch
分支,由一个仓库衍生出的不同版本。
通过它你能够使用一个仓库的不同版本来工作。
每个仓库都会有一个默认的分支 master
,如果有人在你使用你自己的分支进行工作时,对 master
做了某些修改,你可以应用这些更新到你的版本上。
你可以把你对分支的编辑提交到 master
上。
commit
已保存的修改,每个 commit
可附带一条消息,描述为什么进行这个修改,或修改的内容。
fork
把他人的某个 repository
复制到你的空间。
你可以对这个 repository
进行编辑,而不影响到原作者的 repository
。
pull request
这个概念稍微有些难理解,我引用一下别人的解释吧:
当你想更正别人仓库里的错误时,要走一个流程:
- 先 fork 别人的仓库,相当于拷贝一份,相信我,不会有人直接让你改修原仓库的
- clone 到本地分支,做一些 bug fix
- 发起 pull request 给原仓库,让他看到你修改的 bug
- 原仓库 review 这个 bug,如果是正确的话,就会 merge 到他自己的项目中
至此,整个 pull request 的过程就结束了。
作者:beepony
链接:https://www.zhihu.com/question/21682976/answer/79489643
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
常用操作和命令
在本地创建git项目
在要创建项目的根目录下,右键 git bash here
。
git init
将远程项目克隆到本地
在项目的页面,获取克隆链接,如下。
git clone 克隆链接
在本地提交项目到远程仓库
在提交前,要先创建远程仓库。
然后在本地仓库的根目录输入以下命令:
git add 要保存的文件 # 添加要提交到远程仓库的文件或文件夹
# . 表示提交当前目录下所有文件和文件夹,即 git add .
git commit -m "对本次commit的描述" # 保存修改到仓库
git remote add origin 远程仓库的链接 # 将远程仓库与本地仓库关联起来
# 如果输错了链接/远程仓库名,可以通过
# git remote rm [刚才所输的远程仓库名] 来修改
# 然后重新关联远程仓库
# 只有第一次提交时要关联远程仓库,以后提交时不必再次关联
git pull --rebase origin master # 将远程库同步到本地库
# 如果远程库与本地库add前不同步,必须进行此操作,否则后面会提交失败
git push -u origin master # 将最新的修改提交到远程仓库
# 第一次push的时候,加上-u参数,
# Git就会把本地的master分支和远程的master分支进行关联起来
# 我们以后的push操作就不再需要加上-u参数了
# 直接输入git push也可以,默认推送到远程库master分支
其中,origin
是对所关联的远程仓库的简称,这是Git默认的叫法,但是也可以改成别的。
实践如下:
在 git pull --rebase origin master
之前,本地仓库如下:
进行 pull
操作之后,本地仓库如下,将远程仓库所有而本地没有的 README.md
同步到了本地:
在 git push -u origin master
之后,远程仓库如下:
未提交到远程库的修改操作的提交和撤销
有时候,我们可能会在 add
或 commit
之后,想要撤销刚才的 add
或 commit
操作,重新提交,或者对刚才 add
或 commit
的工作区文件进行了新的修改,想要应用该修改或撤销修改。
那我们应该怎么做呢?
首先,先了解以下三个概念:
工作区(working directory)
即当前本地仓库的根目录。你可以看到的所有文件都属于工作区。
暂存区(staged)
存放工作区中修改过的、还未加入本地仓库的数据。暂存区存在于版本库里。
每次
add
操作都对暂存区有影响。版本库(repository)
本地仓库根目录下的隐藏文件夹
.git
,存储项目和仓库的相关信息。它不属于工作区。每次
commit
操作后,版本库会更新到最新的状态,一次commit
对应一个“版本”。
文件修改提交到Git版本库需要以下两步:
add
的某些文件会加入暂存区;暂存区中的所有文件通过
commit
来提交到当前所在的项目的分支。
关于 commit
前的对工作区某个文件(假定它文件名是 example.md
)的修改操作,有以下几种情况:
未
add
,未commit
,修改了该文件git status
查看当前仓库的状态,会指出存在Untracked files
想要撤销修改操作,有两种方法:
git checkout -- example.md
将该文件回滚到与版本库最新状态一样的状态,即回滚到它最近一次commit
时的状态前提是最新状态存在该文件,如果该文件是上次
commit
之后新建的,则该命令无效版本回退
git log # 查看历史版本信息 git reset --hard [commit id] # 将本地仓库回退到指定的版本的状态
如果你只想撤销一个文件的修改操作,不想撤销其他同样未
add
、未commit
的文件的修改操作,请不要使用该命令。因为
commit id
太长了,所以在reset
时可以只写要回滚的commit id
的前7位。
已
add
该文件,未commit
,修改了该文件git status
查看当前仓库的状态,会指出存在Changes not staged for commit
想要应用该修改到暂存区:
git add example.md
想要撤销该修改:
git checkout -- example.md
将该文件回滚到最近一次add
时的状态想要将该文件移出暂存区:
git reset HEAD example.md
删除文件
如果文件已经 add
而未 commit
,想把它在工作区和暂存区中都删去,除了使用前面说过的 git reset HEAD file_name
,再在工作区手动删除该文件,还可以采取以下方法:
git rm file_name
如果想将该文件也在本地版本库中删除,还需要执行一次 git commit
。不会影响到远程仓库,除非你要 git push
提交该修改到远程库。