Git相关知识

点击鼠标右键,选择git bash,即可打开Windows下的命令行工具,接着进行后续git操作。

一、Git相关配置

1 $git config --global user.name “abc”;
2 $git config --global user.email “[email protected]3 $git config --list

二、Git支持多种数据传输协议

1 本地协议
2 HTTP协议,即http(s)://
3 SSH协议,即user@server:path.git
4 GIT协议,即git://

三、Git常见缩写

 1 -a指-all 
 2 -b指branch
 3 -d指--delete
 4 -f指force
 5 -h指help
 6 -m指--move或者--merge
 7 -p指--patch(补丁)
 8 -r指--remote
 9 -t指--track
10 -u指--set-upstream
11 -v指verbose(详细信息)

四、Git基本命令

 1 $git help:查看系统自带的帮助文档
 2 $git status:检查当前工作区文件修改状态
 3 $git show:显示一个标签或一个提交的信息,具体代码
 4 $git tag:为代码历史记录中的某一个点指定永久的标签,列出本地标签
 5 $git tag tagName:新建标签
 6 $git tag -d tagName:删除标签
 7 $git log:查看提交历史,显示head所指向的commit为止的所有记录,查看本地日志
 8 $git log -p fileName:查看指定文件的提交历史(文件名要写全,包括后缀)
 9 $git log -p -2:查看最近两次更新内容的差异
10 $git diff:显示更新了哪些部分,即工作区文件和缓存区文件的差异
11 $git diff --cached:显示缓存区文件和上次提交文件的差异
12 $git reflog:查看本地操作记录
 1 $git reset HEAD^:把所有内容回退到上一个版本
 2 $git reset HEAD ^fileName:把文件回退到上一个版本
 3 $git reset --mixed:回退到某个版本,回退commit和index信息,只保留源码
 4 $git reset --soft:回退到某个版本,回退commit信息,如果还要提交,直接commit
 5 $git reset --hard<ID>:彻底回退到某个版本,本地源码也会变为上一个版本的内容
 6 $git reset --hard origin/master:将本地的状态回退到和远程一样
 7 $git reset:撤销某次提交,此次操作后的commit都会被退回暂存区
 8 $git revert:撤销某次操作,此次操作前的commit都会被保留
 9 $git bisect:通过二分查找哪个提交导致bug
10 $git blame:标注文件的行,指出每行的最后提交信息及提交作者
11 $git blame fileName:以列表方式查看指定文件的提交历史
12 $git grep:在源码中甚至文件中查找任何字符串或正则表达式
1 $git remote add repoName url:添加远程仓库
2 $git remote rm repoName:移除远程仓库
3 $git remote rename oldRepo newRepo:重命名远程仓库
4 $git remote show origin:查看远程仓库状态
5 $git remote -v:查看远程服务器地址和仓库名称
 1 $git pull=git fetch+git merge
 2 $git pull origin develop:更新develop分支
 3 $git pull origin remoteBranchName : localBranchName:从origin主机拉取remoteBranchName分支,与localBranchName分支合并
 4 $git pull origin remoteBranchName:远程分支与当前分支合并
 5 $git pull --rebase origin remoteBranchName:localBranchName:从origin主机拉取remoteBranchName分支,然后推送本地分支到远端(变基)
 6 $git fetch origin:拉取远程仓库有,但本地没有的信息
 7 $git merge branchName:把一个分支的修改合并到当前分支
 8 $git merge origin/master:将远程主分支合并到本地当前分支
 9 $git rebase branchName:把一个分支的修改合并到当前分支
10 $git rebase --skip:跳过,忽略冲突
11 $git rebase --abort:取消合并,取消本次变基
12 $git rebase --continue:处理完冲突,继续合并

13.$git merge 和$git rebase的区别?

(1)前者适合琐碎的简单合并,全部合并结束后,再进行内部整理;

(2)后者适合系统级合并,边合并边整理。使用rebase合并时,本地仓库要足够干净。

(3)变基是代码变化合并的一种方式。合并是大炮,把冲突一次性解决,变基是连发手枪,每次解决一个提交的冲突。

1 $git clone url:克隆代码库,默认拷贝跟踪远程的master分支
2 $git submodule init:初始化子模块
3 $git submodule update:更新子模块
4 $git add fileName

(1)把已跟踪的文件(文件修改)放到暂存区(缓存区);

(2)合并时,把有冲突的文件标记为已解决的状态;

(3)根据目标文件状态的不同,命令产生的效果也不同。

 1 $git rm fileName:从工作目录和暂存区移除文件
 2 $git rm --cached fileName:从暂存区移除但不从工作目录移除文件
 3 $git mv a.txt  b.txt:把a.txt改名为b.txt,文件重命名
 4 $vim fileName:查看该文件源代码
 5 $git commit -m“提交说明”:提交文件修改
 6 $git commit -a -m“提交说明”:跳过git add那步
 7 $git commit --amend:撤销提交、修改最后一次提交
 8 $git branch branchName:创建分支
 9 $git branch -t newBranchName origin / remoteBranchName:从远端拉分支
10 $git checkout -b branchName:创建并切换到该分支上
11 $git checkout -b newBranchName  oldBranchName :基于旧分支创建新分支
12 $git checkout -b localBranchName origin / remoteBranchName:基于远程分支创建本地分支
13 $git checkout branchName:切换到已经存在的分支
14 $git branch -d branchName:删除本地分支,如果分支没有被合并,会提示删除失败
15 $git branch -D branchName:强制删除,即使分支没有被合并,也照删不误
16 $git branch -d -r branchName:删除远程分支
17 $git branch -m|-M oldBranchName  newBranchName:重命名分支,如果新分支已经存在,则需要使用-M强制重命名
18 $git branch:列出当前仓库下的所有分支,显示所有本地分支
19 $git branch -r:显示所有远程分支
20 $git branch -a:显示所有分支
21 $git branch -v:查看每个分支的最后一次提交
22 $git branch --merged:查看哪些分支已经合并到当前分支
$git stash:把修改储藏在堆栈上,切换分支去做其他事
$git stash -u:储藏未跟踪文件
$git stash list:以列表形式查看储藏的信息
$git stash apply:重新应用储藏的工作
$git stash apply storeName:如果不指定储藏, git会默认是最近的储藏
$git stash drop storeName:从堆栈上移除暂存的信息
$git stash --keep-index:不储藏暂存
$git stash --all:移除每一样东西,并存放在栈中
$git clean:去除冗余文件,清理工作目录
$git clean -d -n:演习告诉我们即将移除什么
$git clean -f -d:移除所有未跟踪的文件以及空的子目录
1 $git push origin master:将本地主分支推到远程主分支
2 $git push origin branchName:创建远程分支
3 $git push origin remoteBranchName : localBranchName:推送本地分支到远端服务器
4 $git push origin --delete remoteBranchName:删除远程分支
5 $git push -u origin master:将本地主分支推到远程(如无远程分支,则创建,用于初始化远程仓库)

五、直接Clone到 Dev环境(也适用于Linux)

 1 $ls:查看有哪些文件
 2 $ll:查看文件的详细信息
 3 $pwd:查看当前路径
 4 $cd dev_cloud / camille1:进入服务器主目录文件夹
 5 mkdir folderName:创建文件夹
 6 rm -r folderName:删除文件夹
 7 rm -rf folderName:强制删除文件夹
8 mv sfolderName dfolderName:重命名文件夹

六、VIM下的操作

1 git log之后要退出(不保存),并回到命令行,用:q
2 保存文件后退出,用:wq

七、Git中的submodule是干什么的?

Git 子模块功能允许你将一个Git仓库当作另外一个Git仓库的子目录,允许你克隆另外一个仓库到你的项目中并且保持你的提交相对独立。Submodule是git自带的一个功能,允许将一个仓库挂到另一个仓库上,一个仓库可以有多个submodule,同一仓库的不同分支,submodule的状态可以不同。添加submodule,可以用$git submodule add repoUrl。克隆有submodule的仓库,可以用$git clone -- recursive repoUrl。

八、为什么要进行版本管理?

  1. 记录代码的每个版本,实现代码存储和备份,可以解决文件丢失和覆盖的问题;
  2. 多人协作场景下,可以保持自己的代码副本最新,可以解决共同编辑一个文件的冲突情况。

九、简述GIT与SVN的区别

  1. Git的配置级别:Local,Global,System;
  2. Git是分布式的SCM,Svn是集中式的;
  3. Git每个历史版本存储完整的文件,Svn只存储文件差异;
  4. Git可离线完成大部分操作,Svn则相反;
  5. Git有更优雅的分支与合并实现;
  6. Git有更强的撤销修改和修改版本历史的能力;
  7. Git速度更快,效率更高。

十、了解Github

  1. watch:表示关注,等作者更新的时候,你可以收到通知。
  2. fork:表示参与,你可以把别人的项目克隆到自己名下,然后增加或修改项目内容,通过pull request,把增加或修改的内容和原项目合并。
  3. star:表示收藏,方便以后查找。
  4. git使用40个16进制字符的SHA-1Hash来唯一标识对象。

你可能感兴趣的:(Git相关知识)