现在对git也使用快一年了现在总结一下常用的一些命令。

本文的大纲

对以下命令做一些记录
1.git clone
2.git pull
3.git commit

4.git push
5.git branch
6.git remote
7.git checkout
8.git reset
9.git stash
10.git配置一些外部工具
11.git merge
12.git log
13.git show

git clone

git clone 是克隆别的仓库
1
2
3
4
git clone <repo> <directory>
参数说明:
repo:Git 仓库
directory:本地目录
ej:比如,要克隆 Ruby 语言的 Git 代码仓库 Grit,可以用下面的命令:
git clone git://github.com/schacon/grit.git
或者是这样的
git clone git://github.com/schacon/grit.git test
这个就会克隆到 ../test 和目录

git pull

拉取别人在远程仓库更新的内容 
默认是远程的 origin 分支

git add

将本地的改变提交到缓存区

git add -u

是将本地追踪的文件提交到缓存区

1
2
3
ej:
git add -u *.png
--添加所有追踪的文件提交到缓存区 前提是以.png 为结尾的文件

git add -A

是将本地未追踪的文件提交到缓存区

1
2
3
ej:
git add -A .
--添加所有的未追踪的文件提交到缓存区

git commit

将本地的改变提交到缓存区的内容到本地版本库

1
2
3
ej:
git commit -m "test"
-- -m 是对此次的提交内容的描述(desc)

git push

将本地的改变提交到本地版本库的内容推送到远程版本库

1
2
3
ej:
git push
-- 默认是主为分支(origin)

git push 将本地分支推送到云端

1
git push origin/远程分支的名字 本地分支的名字

git branch

有关分支的一些使用

git branch

查看本地分支

git branch -vv

查看本地分支 与 远程分支的映射关系

git branch -a

查看 本地和远程分支

git branch -r

查看远程分支

git branch xx

创建新的xx分支

git branch -D xx

删除xx分支

git branch upstream(git 分支的映射关系)

建立本地分支与远程分支的映射关系(或者为跟踪关系track)。这样使用`git pull`或者`git push`时就不必每次都要指定从远程的哪个分支拉取合并和推送到远程的哪个分支了。

ej:

从这上面可以看到本地分支与远程分支的映射关系
若没有映射关系 git pull 或是 git push 会失败

与远程分支建立映射关系

使用 git branch -u origin/xx 与远程分支 建立 映射关系
xx 为 远程分支的名字

与远程分支取消映射关系
使用 git branch --unset-upstream

补充:不同名字客之间也是可以建立映射关系的

删除远程的分支

1
2
git push origin --delete xxx
-- xxx 为远程分支的名字

git fetch

来一个关系式 git pull = git fecth + git merge
拉取别人远程仓库的内容到自己本地的一个分支上

1
2
3
4
ej:
git fecth origin test:temp
-- 拉取远程分支 test 到 本地 temp 分支上
-- 注意这种拉取 本地分支和远程分支 是没有映射关系的

git remote

git remote and git remote -v

git remote用来管理本地工作目录对应的远程代码仓库,在一般的工作目录下,执行git remote结果如下:

git remote add

我们可以使用git remote add命令来增加一个远程仓库,这个远程仓库可以是ssh地址(如上面这种),可以是本地目录,也可以是git协议或者http协议的地址。 例如,我要把liming的仓库作为我的远程仓库之一,可以执行git remote add 来增加仓库,例如:

1
2
3
4
5
6
7
8
9
$ git remote add liming /home/liming/repo
$ git remote
liming
origin
$ git remote -v
liming /home/liming/repo (fetch)
liming /home/liming/repo (push)
origin git@remoteRepo (fetch)
origin git@remoteRepo (push)

相应的,可以使用git remote rm或者git remote rename对远程代码仓库的名称进行修改(本地的,不会影响到对方的目录)

git checkout

作用:
1.切换分支
2.放弃对某个文件的修改
3.创建新的分支

git checkout xx

切换到xx分支

git checkout -b xx

在没有的时候 创建的新的分支xx 并跳转到 xx 分支上

git checkout xx.ext

放弃修改直接还原和版本库保持一致

拉取远程方法

1
2
3
git checkout -b 本地分支名x origin/远程分支名x
Note:使用该方式会在本地新建分支x,并自动切换到该本地分支x。
采用此种方法建立的本地分支会和远程分支建立映射关系。

git reset

作用:
1.文件从暂存区回退到工作区
2.版本回退

作用1:
git reset HEAD filename(xx)
作用2:
我就直接转载一篇文章写的挺好的
git reset的使用

git 中文的教程 –貌似要科学上网

git stash

你当前正在开发的分支上面,还有未提交的代码,你又不想把代码提交了,怎么办呢?
作用:
将本地的改变存储起来,切换到另外的分支上。

1
2
3
4
git stash
-- 将本地的改变存储起来
git stash list
-- 查看本地存储的列表

如何恢复工作现场呢?

第一种方案,用`git stash apply`恢复,但是恢复后,stash内容不删除,需要用`git stash drop`来删除
第二种方案,用`git stash pop`,恢复的同时把stash内容也删除了。

git配置一些外部工具

配置代码对比工具

我配置了一个叫diffuse的工具
我这里给你提供一个下载地址,当然你也可以自己去下载别的

download diffuse

  • 1.git查看有哪些对比工具可以设置命令:

    1
    git difftool --tool-help
  • 2.然后再设置对比工具,如:

    1
    2
    git config --global diff.tool diffuse
    git config --global difftool.diffuse.path "E:\Program Files (x86)\Diffuse\diffuse.exe"
  • 3.设置好后,使用命令是 git difftool 而不是之前的 git diff

git Problem

Problem :
1.为什么在切换分支的时,会出现有时要你提交本地的改变才可以切换,有的时候却不需要?

出现融合的时候是你当前分支改变的内容与你将要切换分支的内容有冲突,这个时候不知要你融合。

1
2
3
4
解决的方法有我种:
1.使用 git stash 保存当前的改变 git stash 的用法在上面
2.使用 git merge 融合要切换的分支到当前的分支
3.使用 git checkout 还原当前冲突的文件

git merge

– 2018年3月20日14:36:34
git 融合:是融合你当前版本库没有的东西。
你可以选择本地的分支也可以是远程的分支

1
2
3
4
5
6
-- 融合远程分支
ej:
git merge origin/分支的名字
-- 融合本地分支
ej:
git merge 分支的名字

git 更高级的用法

问题: 在你的使用 git merge 的时候也会出现冲突.

git merge –abort

选项会尝试恢复到你运行合并前的状态。 但当运行命令前,在工作目录中有未储藏、未提交的修改时它不能完美处理,除此之外它都工作地很好

git status -sb

罗列出需要解决冲突的文件.

在你合并的时候 你可以将远端共同祖先的文件, 自己本地的文件, 要融合分支的文件,都下载到本地,

1
2
3
git show :1:hello.rb > hello.common.rb
git show :2:hello.rb > hello.ours.rb
git show :3:hello.rb > hello.theirs.rb

git clean -f

在这时我们可以使用 git clean 命令来清理我们为手动合并而创建但不再有用的额外文件。
就是通过上面的命令 git show :1 … 这个命令产出的文件.

git log

这里在更新一下 git log 的一些命令的使用

git log -n

罗列出最近 n 次提交

ej: git log -3 // 罗列出最近三次的提交信息

git show

显示一些提交的状态信息

git show –stat [commitId]

ej: git show –stat 96daa2f6bb9b413ae3ce5a1ccf3f58ee22b32b42
它会罗列出当前这次提交的信息,以文件更改列表的形式显示,如下图

git show [commitId]

这个命令和上个命令很相似 , 只是去掉一个 –stat

ej git show 96daa2f6bb9b413ae3ce5a1ccf3f58ee22b32b42 src/a.lua
显示这次这个文件提交的内容

最后更新: 2019年08月14日 11:22

原始链接: https://leng521.top/posts/82a402af/