Git常用命令

Git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
$ git config --global user.name "John Doe"      //设置用户名邮箱--global 只针对当前用户
$ git config --global user.email johndoe@example.com //去掉--global,针对特定项目使用不同的账号
$ git config -l //列出所有设置
$ git config --global alias.ci commit //设置别名
$ git config --global alias.last 'log -1 HEAD' //看最后一次提交
$ git config --global alias.visual '!gitk' //外部命令,+!
$ git config --global credential.helper cache //缓存验证密码
$ git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative" //改造log显示,推荐

$ git init //在现有目录中初始化仓库
$ git add //如果参数是目录的路径,该命令将递归地跟踪该目录下的所有文件。add *
$ git commit -a //跳过暂存,直接提交
$ git log [-p] [-2] //提交记录。显示提交的差异。只显示2条。
$ git log --oneline --decorate --graph --all //输出提交历史、各个分支的指向以及项目的分支分叉情况
$ git status -s //更为紧凑的格式输出

$ git clone https://github.com/libgit2/libgit2 [mylibgit] //克隆现有的仓库,当前目录下创建一个名为 `libgit2'' 的目录,并在这个目录下初始化一个 `.git 文件夹。[自定义文件夹命名]。命令会自动将其添加为远程仓库并默认以origin为简写。设置本地 master分支跟踪克隆的远程仓库的 master 分支。
$ git clone -o booyah //自定义远程分支名字。创建一个指向它的 master 分支的指针,并且在本地将其命名为 origin/master 。 Git 也会给你一个与 origin 的 master 分支在指向同一个地方的本地 master 分支,这样你就有工作的基础。

$ git diff //查看上次暂存之后的变动
$ git diff --staged //查看已经暂存的变动

$ git rm 1.txt //删除文件,跟踪清单和本地
$ git rm --cached README //仓库中删除(亦即从暂存区域移除) ,但保留在当前工作目录中
$ git mv 1.txt dir/2.txt //移动文件,也可重命名

$ git checkout a.md //还原成上次提交时的样子,只能撤销没add进暂存区的文件
$ git reset HEAD 1.txt //取消暂存区中的文件
$ git commit --amend //重新提交,覆盖上次提交

$ git remote //查看已经配置的远程仓库
$ git remote -v //显示需要读写远程仓库使用的 Git 保存的简写与URL
$ git remote add <shortname> <url> //添加一个新的远程 Git 仓库
$ git remote show origin // URL 与跟踪分支的信息
$ git remote rename pb paul //修改一个远程仓库的简写名
$ git remote rm paul //移除一个远程仓库
$ git push origin v1.5 //推送标签到远程
$ git push origin --tags //推送远程没有的所有标签
$ git push origin --delete serverfix //删除远程分支

$ git fetch origin master[:newb] //拉取pb的仓库中有但你没有的信息[并新建成分支newb]
$ git checkout -b master origin/master //新建本地分支映射远程分支
$ git pull //自动的抓取然后合并远程分支到当前分支=fetch+checkout
$ git push origin master //推送到远程仓库的某一分支。需要:拥有写入权限,且本地与远程数据同步时。

$ git tag //列出已有的标签
$ git tag -l 'v1.8.5*' //只对 1.8.5 系列
$ git tag -a v1.4 -m 'my version 1.4' //创建一个附注标签
$ git show v1.4 //标签信息
$ git tag v1.4-lw //创建轻量标签,没有保存任何其他信息
$ git tag //查看
$ git tag -a v1.2 9fceb02 //后期打标签
$ git checkout -b version2 v2.0.0 //在特定的标签上创建一个新分支

$ git stash //暂存当前所有改动
$ git stash list //查看暂存记录
$ git stash apply //还原已暂存代码
$ git stash drop [stash_id] //删除暂存记录,[删除某条]
$ git stash pop //快捷:还原+删除
$ git stash clear //清空暂存区记录

$ git branch [--merged/--no-merged] //分支列表,[查看已/未与当前分支合并的分支],如与master合并的分支可以删除,无损失
$ git branch -v //查看每个分支最后一次提交
$ git branch -a //查看所有分支(远程和本地)
$ git branch -r //查看所有远程分支
$ git branch testing //分支创建
$ git checkout testing //分支切换
$ git checkout -b iss53 //新建并切换到新分支
$ git checkout -b serverfix origin/serverfix //在某分支之上建立分支
$ git checkout master //合并分支①
$ git merge iss53 //合并分支②
$ git branch -d hotfix //删除分支

$ git rebase master //以master为基底进行变基,重演experiment的提交过程,并清理提交历史。只对尚未推送或分享给别人的本地修改执行变基操作清理历史
$ git checkout master //往回切换到master分支
$ git merge experiment //master快进到目标点

忽略列表(.gitignore)

1
2
3
4
5
6
7
8
9
10
\*      //匹配零个或多个任意,*.a		
//支持glob模式(简化正则表达式)
[abc] //匹配a或b或c
? //只匹配一个任意字符
!lib.a //忽略lib.a以外的文件
[0-9] //匹配所有 0 到 9 的数
/*.txt //只忽略当前文件夹下的文件,不包括子目录 a/*.txt
build/ //忽略所有build/目录下的文件
doc/**/*.pdf //忽略所有.pdf文件在doc/ 目录下
\*\* //匹配任意中间目录,比如 a/**/z 可以匹配 a/z , a/b/z 或a/b/c/z 等
欢迎打赏