git常用命令:
1、查看全局配置
git config --list
git config -l
2、配置全局变量
#配置用户名、邮箱
git config --global user.name "xxx";
git config --global user.email "[email protected]";
#配置传输缓存为 500M,在下载体积较大的代码时,若该buffer设置不够大,将会报错
git config --global http.postBuffer 524288000
git config --global https.postBuffer 524288000
3、在当前目录下创建仓库
#进入目标目录,右键调出git命令窗口,执行一下命令
git init
4、将文件添加至暂存区
#如果添加的是目录,最后目录下要有文件,不然查看暂存区文件时看不到该目录
git add [file1] [file2]...
git add [dir1] [dir2]...
5、查看index和工作区的文件的信息
git ls-flies
--cached(-c)显示暂存区中的文件,git ls-files命令默认的参数
--deleted(-d)显示删除的文件
--modified(-m) 显示修改过的文件
--other(-o)显示没有被git跟踪的文件
--stage(-s) 显示mode以及文件对应的Blob对象,进而我们可以获取暂存区中对应文件里面的内容。
6、查看文件状态
#可以查看暂存区里有哪些文件,工作区里哪些文件没有被git追踪
git status
7、将文件移出暂存区
#只是移出暂存区,不会删除该文件
git rm --cached [file1]
#移出暂存区并删除文件
git rm -f [file]
#将文件夹移出暂存区需要加 -r
git rm --cached -r [dir]
8、将暂存区文件提交到本地仓库
#message为提交日志
git commit -m [message]
#提交指定文件
git commit [file1] [file2]..-m [messgae]
9、查看提交日志
#查看所有日志
git log
#将日志输出为一行,比较好阅读
git log --pretty=oneline
#查看最近2条日志
git log -2
#仅显示简要的增改行数统计
git log --stat
#展开显示每次提交的内容差异, 用 -2 则仅显示最近的两次更新
git log -p -2
#查看指定文件的提交日志
git log -p [file_name]
#查看截止至指定commitID的日志
git log [commitID]
#查看分支合并图
git log --graph
10、列出所有分支
#列出本地所有分支
git branch
#列出远程所有分支
git branch -r
#列出所有分支
git branch -a
#查看本地和远程分支的追踪关系信息及设置追踪关系
git branch -vv
#设置追踪关系,如:本地名称为 master 要追踪到远程origin/master,命令如下:
git branch --set-upstream-to=origin/master master
#将本地仓库和远程仓库相关联
git remote add origin https://xxx.git
git fetch origin develop
# 从远程拉取并在本地新建该分支,且切换至该分支
git checkout -b dev origin/develop
11、创建本地新分支
#由当前分支,新建一个分支,但依然停留在当前分支,注意若无文件时,创建分支可能失败
git branch [branch_name]
#切换分支
git checkout [branch_name]
#由当前分支,新建一个分支并且切换到该分支上
git checkout -b [branch_name]
#由master分支(当前分支可以不是master),新建一个b1分支,并切换至新分支
git checkout -b b1 master
#删除本地分支
git branch -d [branch_name]
# 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名。
git branch -m | -M oldbranch newbranch
# 重命名当前分支名称
git branch -m | -M newbranch
12、合并分支
#将branch_name分支合并至当前分支
git merge [branch_name]
#fast forward模式,默认就是这种
git merge --ff
#非fast forward模式
git merge --no-ff
#区别见:https://blog.csdn.net/chaiyu2002/article/details/81020370
13、差异对比
#工作区跟暂存区的差异
git diff
#工作区跟本地仓库的差异
git diff HEAD
#暂存区跟本地仓库的差异
git diff --staged
#查看分支间的差异,可以是远程分支
git diff [branch1] [branch2]
14、版本回退
#回滚至上一个版本add之前
git reset HEAD^
#回滚至上上一个版本commit后
git reset --hard HEAD^
#回滚至指定版本
git reset --hard commitID
15、tag相关
#tag其实跟分支一样,其文件中记录的是commitID,只是分支的这个commitID随着新的commit会变,而tag中的commitID不会再变
#在当前commit新建一个tag(轻量级标签)
git tag [tag_name]
#在当前commit新建一个tag(附注标签),与轻量级的不同是其有一些附加信息而已,使用git show 可以查看
git tag -a [tag_name] -m '附加信息备注'
#在指定的commitID创建tag
git tag [tag_name] [commitID]
#列出所有tag
git tag
#删除tag
git tag -d [tag_name]
16、从远处仓库创建本地仓库
#从远处仓库克隆项目下来,一般是远程已经有项目了,你要进行开发,先把项目克隆下来
git clone [email protected]:xxx/仓库名.git
#这里使用的是ssh的传输方式,需要配置公钥私钥,执行一下命令,然后一路回车后,会在用户目录下生成.ssh目录,里面有一对秘钥。将公钥粘贴设置在GitHub/gitlab上即可
$ ssh-keygen -t rsa -C "[email protected]"
17、在本地仓库添加远程仓库地址
#[email protected]:xxx/仓库名.git,相当于是其别名。可以任意取,但一般都是用origin
git add remote origin [email protected]:xxx/仓库名.git
#列出远程仓库的简称,在执行以上命令后,再执行以下命令,显示origin
git remote
#列出远程仓库简称与详细地址
git remote -v
#查看本地和远程分支的追踪关系信息及设置追踪关系
git branch -vv
18、推送文件至远程仓库
#将commit到本地仓库的修改提交到远程仓库,其中remote-name可使用上文中说的简称 origin,当远程仓库无指定分支时,会创建一个远程分支(前提是本地有这个分支名且当前分支为该分支)
git push [remote-name] [branch-name]
#若本地分支与多个远程地址存在追踪关系时,那么这个时候-u选项会指定一个默认主机,这样后面就可以不加任何参数使用git push。
git push -u [remote-name] [branch-name]
#查看本地和远程分支的追踪关系信息及设置追踪关系
git branch -vv
#设置追踪关系,如:本地名称为 master 要追踪到远程origin/master,命令如下:
git branch --set-upstream-to=origin/master master
19、从远程仓库更新代码到本地仓库
#拉取代码并自动合并
git pull origin master
#拉取代码但是不自动合并
git fetch
20、各种场景的处理方式
#1、代码修改需要在b1、b2分支都提交,在b1提交后(commitID=123456)
#先切换分支至b2
git checkout b2
#将commitID为123456的修改提交到b2分支中
git cherry-pick 123456
#cherry-pick可一次性转移多个commit
git cherry-pick [commitID1] [commitID2]
#一次性转移commit1至commit3,不包含commit1
git cherry-pick [commitID1]..[commitID3]
#一次性转移commit1至commit3,包含commit1
git cherry-pick [commitID1]^..[commitID3]
-e #--edit 打开外部编辑器,编辑提交信息。
-n #--no-commit 只更新工作区和暂存区,不产生新的提交。
-x #在提交信息的末尾追加一行(cherry picked from commit ...),方便以后查到该提交是如何产生的。
#2、在分支1开发的代码还未提交(在未add之前才能执行stash),想切换到分支2处理下问题,这时候需要把分支1还未提交的代码缓存起来
# 保存,save为可选项,message为本次保存的注释
git stash [save message]
# 所有保存的记录列表
git stash list
# 恢复,num是可选项,通过git stash list可查看具体值。只能恢复一次
git stash pop stash@{num}
# 恢复,num是可选项,通过git stash list可查看具体值。可回复多次
git stash apply stash@{num}
# 删除某个保存,num是可选项,通过git stash list可查看具体值
git stash drop stash@{num}
# 删除所有保存
git stash clear
ps:分支管理