-
安装
a、Ubuntu安装Git只需要直接使用apt-get install git
b、 通用的安装方法,下载源码编译安装:进入config目录,一次使用make, make install 编译安装即可 -
配置自己的git账户,可以是github,coding等等。
git config --global user.name "账户名称"
git config --blobal user.email "邮箱"
-
创建仓库并提交仓库:亦即版本库,在项目根目录下,输入
git init进行版本库创建或者重新初始化一个版本库。
版本库创建完成后,会在项目根目录下生成一个 .git 目录,存放着git进行版本控制所需要的一些文件。具体目录文件如下:

其中,有几个目录和文件比较重要,分别是:
Objects目录:存储所有的数据内容
refs目录:存储指向数据(分支)提交对象的指针
HEAD文件:指示目前被引用的分支, 使用git branch切换分支或git commit提交等操作时就会用到HEAD文件信息
index文件:存放暂存区信息
这里,由于没有进行git add目录将项目文件添加到暂存区,没有index文件,只要执行git add .再次查看就可以看到index文件了
这里,我先创建一个 text 文件,然后使用git status查看当前状态:

最后,使用
git commit -m "first commit"进行提交即可将当前版本的项目提交到仓库。
其中 -m后面带的是此次提交的信息,通常是写本次提交所做的改动说明。
然后修改text文件,我这里输入仅 first line ,然后使用git diff text查看text文件的改动:
可以看到 first line 前面有个 + 号,表示新增加的内容,而对已提交的内容进行删除,使用
git diff查看时就会显示 - 号这里,单单使用
git diff仅仅只是查看已经修改但还没暂存的变化,而使用git diff --cached命令可以查看已经暂存的对比上次提交的变化再次使用
git add text将text文件的修改保存到暂存区(每次提交前都得先暂存,否则将会报 change not staged for commit ,并且提交失败, 但可以通过给commit 命令添加 -a 参数来跳过add步骤),然后进行提交 `git commit -m "add content first line " -
使用.gitignore 文件来忽略不必要提交的文件,一下是 .gitignore文件的语法规则:
- 配置的都是忽略的文件: 例如*.class 表示忽略所有的class文件
- 忽略目录使用 /directory, 例如:/build 表示忽略build目录
-
撤销修改:
- 未暂存(执行add命令)的:直接使用
git checkout -- filename进行撤销即可 - 已暂存的需要分两步:
- 先使用
git reset HEAD filename撤销暂存 - 然后再使用
git checkout -- filename撤销修改
- 先使用
- 未暂存(执行add命令)的:直接使用
-
撤销提交:
- 撤销上一次的commit :
git revert HEAD - 撤销上上次的commit:
git revert HEAD^ - 撤销特定的commit :
git revert commit_id
- 撤销上一次的commit :
-
查看提交记录:
- 查看所有提交记录:
git log, 加 -p 参数可以显示每次提交所做的改动,注意这里和很多git命令一样,也可以通过文件名对单个文件进行操作,如:git log -p text查看对text文件的提交的修改 - 查看最近n次提交记录:
git log -n - 查看某次提交记录:
git log id这里的id是指commit的id
- 查看所有提交记录:
-
移除文件:
- 移除跟踪(从暂存区移除)但不删除文件:
git rm --cached filename - 移除跟踪同时删除文件:
git rm filename
- 移除跟踪(从暂存区移除)但不删除文件:
-
分支
- 初始化后会自动创建一个master分支
- (从当前分支)创建新分支:
git branch -b branchname - 查看分支:
git branch -a带 * 的是当前正在编辑的分支 - 切换分支:
git checkout branchname - 合并分支,这里直接沿用上面的例子:
- 先新建分支branch2:
git branch branch2 - 切换到branch2:
git checkout branch2 - 在text文件中添加一行: second line
- 切换回master分支:
git checkout master - 现在将branch2 做的改动合并到master分支上:
git merge branch2 - 删除分支:
git branch -D branchname
-
与远程版本库协作
-
下载版本:
git clone remote_repository_addressremote_repository_address 是项目地址 -
git remote origin查看远程版本库origin的信息 -
提交本地版本库改动到远程版本库:
git push origin master( origin 是指远程版本库名称,master是指要提交的分支) -
将远程版本库上的修改同步到本地:
git fetch origin master -
查看远程版本库所做改动(相对于指定分支,这里是master分支):
git diff origin/master -
合并到本地分支:
git merge origin/master -
git pull origin master相当于fetch和merge一起执行 -
类似的,
git push origin master表示将本地修改推送到远程origin仓库的master分支 -
关联远程仓库(例如,本地有一个写好的项目,现在要与远程新建的仓库关联,好把本地仓库的内容推送到远程仓库), 是用
git remote add origin remote_repository_address, 其中,origin是Git中远程仓库的默认名字。
这个过程其实还涉及Git的远程引用,假如推送到的远程分支是master,则会在生成.git/refs/remote/origin/master文件,origin代表远程仓库,master代表远程分支。
这里还要注意,虽然可以通过checkout来切换远程分支,但是并不会改变HEAD文件的引用值,远程引用时只读的。 -
标签功能
一个标签实际是对应着一次commit,由于commit的id值不好记,标签就相当于给一次commit取一个好记的名字。创建标签:
git tag tagname如:git tag v1.0创建了一个名字为 v1.0 的标签, 可以通过 -m 参数添加附加信息
也可以指定某次commit 的id,直接在tagname后面:git tag tagname commit_id
删除标签:git tag -d tagname列出所有标签:
git tag
将本地标签推送到远程仓库:git push origin -tags标签的用途:标签相当于一个快照,是不能像分支一样进行修改,但可以通过标签创建出一个分支:
git checkout -b branchname tagname, 然后再对该分支进行编辑 -
储存分支工作现场我觉得这个才像是一个快照,可以把未提交的修改储存起来。
使用:git stash
储存后,使用git status查看状态,不会显示未提交的内容。可以从这里创建新的分支完成其他的工作。然后是恢复存储的修改:
可以先使用git stash list列出所有的存储点。
然后使用git stash apply stash_id来进行恢复,而这个恢复操作是没有删除该存储点的,使用git stash drop stash_id进行删除。
git stash pop进行恢复并且删除。什么时候会用到呢,比如我在dev分支做了一些改动,但还没有完成工作,现在突然想到需要到master分支修改一个bug,那么这个时候就可以先存储dev分支的修改,再切换到master分支了。
当然其实也不一定需要这么做。其实也可以直接新建一个git窗口使用master分支。。
主要参考(当然还有自己以前onenote上做的笔记):
https://git-scm.com/docs/gittutorial
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
本文详细介绍了Git的基本使用方法,包括安装、配置、版本控制、分支管理等,并提供了与远程仓库协作的具体步骤。
1079

被折叠的 条评论
为什么被折叠?



