git基础

目录

获取Git仓库

现有目录初始化仓库

克隆现有仓库

记录每次更新到仓库

 

跟踪/暂存文件

 检查文件当前状态

忽略文件

查看已暂存和未暂存的修改

提交更新

移除文件

移动文件

查看提交历史

撤销操作

撤销对暂存区操作

撤销对工作目录操作

远程仓库使用

查看远程仓库

添加远程仓库

远程仓库的拉取、抓取和推送

查看仓库

仓库移除和重命名

打标签

列出标签

创建标签

附注标签

轻量标签

后期打标签

共享标签

删除本地标签

删除仓库标签

检出标签


获取Git仓库

创建一个本地仓库

如果想对现有项目进行管理,只需要在项目目录下输入:

git init

该命令创建.git子目录,这个子目录下含有git仓库中所有的必须文件。但是由于我们仅仅进行了初始化,所有没有任何文件被跟踪。需要使用git add命令跟踪文件,然后git commit进行提交。

git add file/dir

git commit -m "message"

 注意:此处创建的为一个本地仓库,可以在本地仓库上进行基本的操作,但是因为没有与一个远程仓库关联,所以无法进行push、pull、fetch等操作,关联远程仓库方法:

git remote add remotename URL

example:git remote add origin https://github.com/eyunhua/screen-slide-yearbill.git

克隆现有仓库

如果想在某个现有的git仓库上进行修改,则可以使用git clone命令。格式为:

git clone URL

eg:git clone https://github.com/libgit2/libgit2

 URL为gitlab或github上创建项目的链接。

可以给命名文件夹

git clone URL dirname

eg:git clone https://github.com/libgit2/libgit2 mylibgit

记录每次更新到仓库

使用git时,git中文件生命周期如下

工作目录中的文件处于两种状态:已跟踪和未跟踪。已跟踪表示已经纳入版本控制的文件,在上一次提交的快照中有它们的记录,经过一段时间后可能处于未修改、已修改、以暂存的状态。

跟踪/暂存文件

$ git add

当文件未跟踪,使用git add file时,则将此文件加入跟踪并加到暂存区,

当文件已跟踪,则将此文件加入暂存区

当git add后接目录时,则对目录下所有进行操作

此外,当此命令后接  "."  时,则对当前目录下所有文件操作(除去.gitignore中文件)

所以这是个多功能命令:可以用它开始跟踪新文件,或者把已跟踪的文件放到暂存区,还能用于合并时把有冲突的文件标记为已解决状态等。 将这个命令理解为“添加内容到下一次提交中”而不是“将一个文件添加到项目中”要更加合适

 检查文件当前状态

检查当前所有文件处于什么状态。

$ git status

 也可以使用

$ git status -s
$ git status --short

两个命令一样,获取状态的简洁形式。

$ git status -s
 M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt

第一行的M靠右,表示已修改未放入暂存区,第二行左边M表示已修改并放入暂存区,A表示新跟踪文件,??表示未跟踪文件。

忽略文件

在项目管理目录下创建.gitignore文件。在其中写入部分文件格式或目录,则git操作时会对这些文件或目录进行忽略。

# C++ objects and libs
/bin/
/lib/
/include/
*.slo
*.lo
*.o

以#开头的为注释。其他则为目录或文件。

TIPS:GitHub 有一个十分详细的针对数十种项目及语言的 .gitignore 文件列表,你可以在https://github.com/github/gitignore 找到它.

查看已暂存和未暂存的修改

git diff

此命令是查看暂存区和工作目录的修改,如果当前修改已暂存,则什么都没有。

如果想查看暂存区与已提交的修改,则添加--cached或--staged

git diff --cached
git diff --staged

提交更新

git commit -m "mesage"

先对文件使用add命令暂存后,使用commit进行提交到本地仓库,-m后接的是对此次提交的描述信息

可以通过-m前加-a跳过暂存区步骤(注:仅对已跟踪的文件有效

git commit -a -m "test -a -m"
git commit -am "test -am"

移除文件

git rm

此操作是针对git仓库的文件操作的,移除已跟踪文件,并将工作目录中对应文件删除,下次提交将不再纳入版本管理。

但是如果暂缓区域文件未提交到仓库(如新加的文件,或者已提交的文件有修改),则无法通过此命令删除(确保修改的数据已提交,防止误操作丢失数据)。此时可以使用-f进行强制删除。

git rm -f files

 另外一种情况,就是删除仓库的文件,可以通过加--cached操作

git rm file --cached

移动文件

git mv filefrom fileto

 git mv有两层意思,一层是重命名,另一层是移动文件。

查看提交历史

git log

此命令会将整个提交历史的所有信息打印,几个常用的options

后接-p可以仅显示每次提交的差异。

后接-n可以显示条数(可以与-p配合使用)

--oneline,一行显示

--pretty=format,不同的格式显示

--graph,查看分支、合并历史

以上的所有操作可以配合使用

git log --oneline --decorate --all --graph

撤销操作

如果想将上次已提交的内容替换,可以使用--amend

git commit --amend
git commit -m "commit describe" --amend

--amend(修改)作用是提交暂存区内容并对上次提交进行修改,所以第一条语句是将上次提交后的一些操作修改到上次提交,语句二是将上次提交的提示信息修改。

撤销对暂存区操作

git reset HEAD file

 将会撤销对暂缓区的修改,将已提交文件输出到当前暂存区。不加HEAD可以,此外暂存区始终只有一层。

撤销对工作目录文件操作

git checkout -- file

此命令是十分危险的因为工作目录如果未保存到数据库,直接执行此操作则将导致数据不可挽回的丢失。

此操作是将上次提交的文件内容覆盖工作目录相同文件。不加--也可以识别。

远程仓库使用

查看远程仓库

git remote

会显示当前目录下的所有远程仓库。

加-v后显示对应的[URL].

$ git remote -v
origin  http://192.168.8.211/yao/GitTest.git (fetch)
origin  http://192.168.8.211/yao/GitTest.git (push)
test    http://192.168.8.211/yao/GitTesttwo.git (fetch)
test    http://192.168.8.211/yao/GitTesttwo.git (push)

添加远程仓库

使用git remote add <shortname> <url>命令可以添加一个远程仓库,并以<shortname>命名仓库,可以使用<shortname>代替远程仓库的[URL]。

可以用此命令将远程仓库与本地仓库关联。

此外可以将远方的一个仓库代码clone后修改再push到新的远程仓库中。

远程仓库的拉取、抓取和推送

拉取:git fetch

抓取:git pull

两者的区别是,pull命令是会自动进行合并,而fetch并不会,需要自己进行merge操作。

推送:git push remote-name branch-name

将remote-name推送到分支branch-name上,或者将所有分支push到远程仓库使用git push --all。

查看仓库

git remote show remote-name

仓库移除和重命名

重命名:git remote rename namefrom nameto

移除:git remote rm remote-name

打标签

列出标签

git tag

git tag -l -n

前者直接列出标签,后者会带详细信息

$ git tag
1.1.0
1.2.0
v1.3.0


$ git tag -n
1.1.0           origin version
1.2.0           modify protocol's infoaddr
v1.3.0          test

创建标签

标签分为轻量标签(lightweight)和附注标签(annotated)

后者完整性好,带有详细信息,存储在数据库中的一个对象。建议使用后者。

附注标签

git tag -a v1.0.0 -m "describe"

注意:如果工程中有pri版本控制文件,则tag名不能有数字外的内容。

轻量标签

git tag v1.1.0

比附注标签简单

后期打标签

可以使用git log --pretty=oneline获取提交的校验和,然后在附注标签命令最后添加校验和,则将附注标签打到对应提交上,如果不带校验和则打到当前提交上。

共享标签

因为git push命令是不会主动将标签推送到远程仓库上的,所以需要用

git push remote-name tag-name,将本地标签推送到远程仓库

另外可以用--tags,将本地所有标签推送

git push remote-name --tags

删除本地标签

git tag -d tag-name

删除仓库标签

与共享标签一样,本地删除标签不会影响远程仓库,如果想同步同样需要推送到远程仓库

git push remote-name :refs/tags/tag-name

检出标签

git checkout tag-name

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值