-
查看自己当前git的用户名
git config user.name
-
查看当前git的配置
git config --list
-
设置git的用户名
git config --global user.name “John Doe”
-
设置git的地址
git config --global user.email johndoe@example.com
-
给 Git 输出添加颜色
你可以使用以下命令配置外壳,为 Git 输出添加颜色:git config --global color.ui true
-
如何获得使用git的帮助
git --help
git help <verb> -
git init
在什么时候使用,产生了哪些结果(在此目录中使用git 进行代码管理,git init
之后会在该目录下,创建一个.git
的子目录,作为Git仓库的骨干) -
在git中,工作目录下的每一个文件都只有两种状态分别是(已跟踪和未跟踪)
-
如何实现对指定文件的追踪
git add <name>
-
创建一个新的README文件
touch README.md
-
如何对追踪的文件进行提交
git commit -m ‘注明’
-
依靠http协议克隆 https://github.com/libgit2/libgit2
git clone https://github.com/libgit2/libgit2
-
查看哪些文件处于什么状态
git status
-
git status -s
左侧出现的各种标识[MM,M , M ,A,??]
是什么意思?
出现在右边的 M 表示该文件被修改了但是还没放入暂存区,出现在靠左边的 M 表示该文件被修改了并放入了暂存区 -
如何在追踪时自动忽略某些文件,比如要忽略
.o
和.a
结尾的文件,和log
目录,如何操作(创建一个名为.gitingore
的文件,在里面写入*.[oa]
log -
在标准的 glob 模式匹配下,
*
[abc]
?
[0-9]
a/**/z
都是什么意思,是怎么匹配的
(所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号()匹配零个或多个任意字符;[abc] 匹配任
何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c);问号(?)只匹配
一个任意字符;如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如
[0-9] 表示匹配所有 0 到 9 的数字)。使用两个星号() 表示匹配任意中间目录,比如a/**/z
可以匹配 a/z,
a/b/z 或 a/b/c/z
等
-
git diff
命令的作用,和git status
有那些不同?(可以直接看到已经追踪但是被修改后没有重新追踪的文件的那些内容做了修改 -
查看已暂存的将要添加到下次提交里的内容的变化
git diff --staged
-
设置git的默认编辑器是gedit(
git config --global core.editor gedit)
-
git 提交命令
git commit 打开一个编辑器,在头一行写注释
git commit -m “注释” -
git 如何跳过暂存区直接把所有已经追踪过的文件一并提交
git commit -a
-
从 Git 追踪清单中移除某个文件,但不实际删除
git rm --cached <文件>
-
从 Git 追踪清单中移除某个文件,彻底删除
git rm -f <文件>
-
从 Git 追踪清单中移除
.log
为后缀的文件git rm *.log
-
在git 中对
word.txt
改名为ppt.txt
git mv word.txt ppt.txt
-
如何查看提交历史
git log
-
如何查看近2次提交历史
git log -2
-
如果版本多长显示不下,可以使用简介模式
git log --pretty=oneline
-
如何查看近2次提交的差异
git log -p -2
-
如何查看每次提交的简略统计信息
git log --stat
-
版本回退
git reset --hard 码
-
在git 操作中,假设刚刚提交了一次,但是发现忘了
add train.py
,如何补救git add train.py
git commit --amend
这样最终只会有一个提交 - 第二次提交将代替第一次提交的结果 -
如何撤消修改 ,将文件还原成上次提交时的样子
git checkout – <文件>
-
查看已经配置的远程仓库服务器
git remote
-
运行
git remote
命令会输出什么?(它会列出你指定的每一个远程服务器的简写) -
克隆下来的仓库,默认的远程服务器名称是什么?(origin)
-
如何查看远程仓库的URL(
git remote -v
) -
添加远程仓库的(git remote add <shortname> <url>
-
从远程仓库中获得数据
方式1 $git fetch [remote name]需要手动合并
方式2 $git pull会自动合并 -
将本地的master分支推送到origin服务器
git push origin master
git push <远程仓库名称> <分支名称> -
查看某一个远程仓库的更多信息,可以使用
git remote show [remote-name]
-
修改一个远程仓库的简写名
git remote rename <old name> <new name>
-
移除一个远程仓库
git remote rm <remote-name>
-
如何创建一个分支
git branch <branch-name>
-
进入某一分支
git checkout <branch-name>
-
创建并进入某一分支
git checkout -b <branch-name>
-
合并分支
git merge <branch-name>
-
删除分支
git branch -d <branch-name>
-
查看每一个分支的最后一次提
交git branch -v
-
查看哪些分支已经合并到当前分支,可以运行
git branch --merged
-
查看所有包含未合并工作的分支
git branch --no-merged
-
git 如何列出已经跟踪的文件
git ls-files
-
git设置默认编辑为vim
git config --global core.editor "vim"
-
撤销修改(工作区修改了,但还没add,想要放弃修改,将上次add的文件恢复到工作区):
当加入到暂存区的文件被再次修改后,如果想要提交保留修改则使用git add
再次加入到暂存区,如果不想要修改了,则可以使用下面命令撤销修改。也就是相当于使用暂存区来覆盖工作区的修改。git checkout – 文件名
-
如果上面修改的文件使用 git add已经添加到了暂存区,但是此时仍然不想要此次提交(add)了,则需要使用下面命令取消暂存
git reset HEAD 文件
-
git修改后撤回情况总结:
修改了工作区的文件,没有提交暂存区,想直接丢弃git checkout
修改了文件,也提交了暂存区,还是想丢弃 先git reset HEAD
再git checkout
修改类文件,提交了暂存区,也提交了版本库,则可以使用git reset --hard
版本号 直接回到指定的版本。 -
分支操作
查看分支:
git branch
创建分支:git branch <name>
切换分支:git checkout <name>
或者git switch <name>
创建+切换分支:git checkout -b <name>
或者git switch -c <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>
-
新建分支上传到远程仓库需要为远程仓库建立上游分支,并进行链接
git push --set-upstream origin qwe
-
分支合并时,需要两个分支都commit后再进行merge。
当有冲突时,可一git status看看冲突文件,再在工作区打开文件看到git 特有的不同之处展示,人为手工进行修改后,再add,commit,后就立刻完成合并操作了,不再需要merge。 -
通常,合并分支时,如果可能,Git会用Fast forward模式,但这种模式下,删除分支后,会丢掉分支信息。
如果要强制禁用Fast forward模式,Git就会在merge时生成一个新的commit,这样,从分支历史上就可以看出分支信息。git merge --no-ff -m “commit的注解” <分支名称>
-
查看分支合并的日志(简要版)
git log --graph --pretty=oneline --abbrev-commit
-
如果你想使用图形化工具来解决冲突,你可以运行 git mergetool,该命令会为你启动一个合适的可视化合并
工具,并带领你一步一步解决这些冲突: -
Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
git stash
查看git stash的记录
git stash list
调出存储stash的工作区文件
git stash pop
-
Git专门提供了一个cherry-pick命令,让我们能复制一个特定的commit提交到当前分支:
git cherry-pick commit码
-
如果要丢弃一个没有被合并过的分支,可以通过 -D 强行删除。
git branch -D
-
git clone 的仓库默认只能看到master分支,要想看到别的分支,需要在本地新建分支dev,并将其与远程进行关联,命令如下:
git checkout -b dev origin/dev
- 标签
命令git tag 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
可以执行如下命令以创建一个叫做 1.0.0 的标签:
git tag 1.0.0 1b2e1d63ff
1b2e1d63ff 是你想要标记的提交 ID 的前 10 位字符。使用如下命令获取提交 ID:
git log
你也可以用该提交 ID 的少一些的前几位,只要它是唯一的。
命令git tag -a -m "blablabla…"可以指定标签信息;
命令git tag可以查看所有标签。
- 标签操作
命令git push origin 可以推送一个本地标签;
命令git push origin --tags可以推送全部未推送过的本地标签;
命令git tag -d 可以删除一个本地标签;
命令git push origin :refs/tags/可以删除一个远程标签。
tips:
内建的图形化 git:
gitk
彩色的 git 输出:
git config color.ui true
显示历史记录时,只显示一行注释信息:
git config format.pretty oneline
交互地添加文件至缓存区:
git add -i