版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_20451879/article/details/78921972
SVN已经过去好久,仅以Git记录消逝的昨日。
文章目录:
- 基础知识
- 常用连贯命令与常见问题
- 工具推荐
Be happy every day(每一天都要开开心心)
目录 1 :基础知识
Remote: 远程仓库
Repository: 本地仓库
index / Stage: 暂存区
workspace: 工作区/工作副本
- 本地流程图:
操作流程:
工作目录 - git add - 暂存区 - git commit - 本地仓库(如没有commit,则不会进入本地仓库的!)
- 全面流程图
注意 :
这里在本地仓库的基础上加入了远程仓库,多出了pull,push,clone的动作
目录 2 :常用命令
初始配置:
//设置当前登录的用户名称
git config –global user.name “Your Name”
//设置当前登录的用户邮箱
git config –global user.email [email protected]
//以下俩条可以选择性忽略(设置 git命令的别名)> <
// 设置git命令的别名
git config --global alias.ci commit
// 设置git命令的别名
git config --global alias.co checkout
配置查看
git –version //查看git版本
git config -l //查看当前配置
git config –global user.name //获取当前登录的用户名称
git config –global user.email //获取当前登录的用户邮箱
本地第一次配置
git init //初始化(将当前目录变为仓库)
git clone 网站上的仓库地址 //从远程库克隆到本地
如果先有本地库,后有远程库,将本地库push到远程库
关联本地库和远程库:git remote add origin 网站仓库地址
第一次将本地仓库推送到远程仓库:git push -u origin master
常用命令
git status //刷新代码当前状态
git add -u //提交已修改
git add 文件名 //添加一个文件到暂存区
git add . //添加所有文件到暂存区
git add -A //将本地所有改动添加到暂存区(git add -A = git add . + git add -u)
git commit -m"备注" //备注
git pull //拉取远程代码
git diff //对比暂存区和工作区差异
git push //推送
git checkout –文件名 //撤销工作区的修改
git branch 你的分支名 //创建新分支
git checout 你的分支名 //切换分支
git checkout -b 你的分支名 //创建新分支同时进行分支切换
git branch -d 分支名 //删除分支
git merge dev //将dev分支合并到当前所在分支上
git fetch // 从远程获取最新版本到本地,不会自动merge
git log -期望条目(数字)//查看近期log
git log //查看所有log
git branch -l //只查看本地分支 (l-location)
git branch -r //只查看远程分支
git branch -a //查看所有分支
git tag //查看所有标签
git branch -vv //查看当前的本地分支绑定的远端的那一条分支
较少使用的命令
git remote show origin //查看远程库的一些信息,及与本地分支的信息
git branch -m <old> <new> //本地分支重命名
git push origin test //将本地test分支推送到远程 (不能直接新建远程分支,需要新建本地分支后,再把本地分支推送到远程)
git push origin test:master //提交本地test分支作为远程master分支
git push origin test:test //提交本地test分支作为远程test分支
git push origin :test //提交空分支作为远程test分支(相当于删除远程test分支)
git branch -d test //删除本地test分支
git pull --rebase //暂存本地变更,合并远程最新改动,合并刚刚暂存的本地变更(不产生无用的merge的同步)
git branch -D test //强制删除本地test分支
git push origin –delete test //删除远程test分支
git branch test origin/test //将远程分支test拉取到本地,并新建分支test(如果失败,可以先运行 git fetch)
git remote -v //查看远程仓库
git remote rm orgin //删除远程仓库
git diff –cached //对比暂存区和工作区差异
git diff master //对比历史区和工作区差异
git reset HEAD 文件名 //撤销暂存区的修改
git add -i //打开一个交互式界面按需求添加文件
git reset –hard 该版本ID //回退到历史版本
git reset –hard HEAD^ //回退到上个版本
git status -s //将结果以简短的形式输出
git status --ignored //显示被忽略的文件
git log -p // 查看详细修改内容
git log --stat //查看提交统计信息
git log --graph // 显示何时出现了分支和合并等信息
git rm <file> //删除文件
git rm -r <floder> //删除文件夹
git rm --cached <file> //从版本库中删除文件,但不删除文件
git mv <old_name> <new_name> //文件重命名
git commit -a //把修改的文件添加到暂存区(不包括新建(untracked)的文件),然后提交
git commit --amend //修改提交的commit(没有push)
git commit --amend -m "comment" //修改commit注解
git diff --cached //查看暂存起来的文件(stage)与并未提交(commit)的差别
git diff --staged //同上
git diff HEAD //查看最后一次提交之后的的差别(HEAD代表最近一次commit的信息)
git diff --stat //查看显示简略结果(文件列表)
git diff commit1 commit2 //对比两次提交的内容(也可以是branch,哈希值)
git push -u origin master // -u指定origin为默认主机,后面就可以不加任何参数使用git push了
git push -f origin // -f强推,在远程主机产生一个"非直进式"的合并(non-fast-forward merge)
git push --all origin // 将所有本地分支都推送到origin主
git fetch -p //删除掉没有与远程分支对应的本地分支
git fetch origin -p //用来清除已经没有远程信息的分支,这样git branch -a 就不会拉取远程已经删除的分支了
git reflog //查看以往版本号(本地的commit)
Tag标签(一般在某个版本下进行tag标记,做节点使用)
git tag 标签名 //为当前版本打标签
git tag 标签名 //为历史版本打标签
git tag -a 标签名 -m “标签说明” //指定标签说明
git show 标签名 //查看某一个标签
git tag-d 标签名 //删除某一个标签
git tag -a v1.0.0 -m ‘版本说明’ //打tag
git push origin –tags //将所有tag推送到远端(前提是add、commit、push后)
git push origin tag名称 //将指定tag推送到远端
git tag -d tag名称 //删除本地标签
git push origin : refs/tags/tag名称 //删除远端标签
常用连贯命令与常见问题
- 绑定本地分支与远程分支 :
使用命令git branch --set-upstream ;实例如下,其中debug为创建的分支
Git提示:
git branch --set-upstream-to=origin/<branch> dev
git branch --set-upstream debug(本地分支名称) origin/debug(远程分支名)
- 远程分支有某分支,本地不显示
//已自创本地分支
git fetch <远程主机名> <分支名>
或
//未自创本地分支,通过下面命令一起创建
git branch test origin/test //将远程分支test拉取到本地,并新建分支test(如果失败,可以先运行 git fetch)
- 拉取远端tag同时创建分支
//newBranch 为新分支 v1.6.0为我们之前打好的 tag
git checkout -b -NewBranch v1.6.0
- 撤销修改
git checkout -- 文件
分两种情况分析:
1.还没有执行 git add 操作,执行上面的操作后,会恢复到和版本库中一模一样的版本状态。
2.执行了git add ,还没执行 git commit ,再执行上面的操作后,会恢复到git add 结束后的状态
注:一旦执行了git commit -m "*",就不能再使用上面的命令回退。
- 切换分支,提交当前本地的代码(临时空间):
git stash push 将文件给push到一个临时空间中
git stash list 可以将当前的Git栈(临时空间)信息打印出来,
git stash pop 将文件从临时空间pop下来
- 工作中经常从master创建新的分支,具体操作如下:
git checkout master
git checkout -b newBranch
git push origin newBranch
git add .
git commit -m "***"
git push origin newBranch
//执行以下这行命令
git remote show origin
- 发生冲突的文件:
/**冲突区域*/
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
/**解释区域*/
其中,git使用<<<<<<<,=======,>>>>>>>标记文件中自己和别人产生冲突的部分
在<<<<<<<,=======之间为自己的代码
=======,>>>>>>>之间为别人的代码
如果保留自己的代码,将别人的代码删掉即可
/**冲突解决后提交*/
git status
git add .
git commit -m "fix bug"
git push origin 分支名
- git存储(stash):
git stash // 保存当前的工作进度
git stash save "message" // 保存进度加说明
git stash list // 显示进度列表
git stash pop // 恢复最新保存的工作进度,并将恢复的工作进度从存储的列表中删除
git stash apply // 恢复最新保存工作进度,但不删除
git stash drop // 删除一个进度,默认删除最新的
git stash clear // 删除所有
1、储藏更改:将当前更改的代码储藏起来,等以后恢复使用
git stash
2、恢复储藏的代码
git stash pop //恢复的同时把stash内容删掉
或者
1.git stash apply //恢复stash,但是stash内容并不删除
2.git stash drop //在上面操作的基础上,以此来删除stash
注: git stash list //查看全部的stash列表。
- git撤销(revert):
git revert commit //撤销指定commit
git revert HEAD // 撤销上一次commit
git revert -no-edit HEAD // 撤销上一次并直接使用默认注释
git revert -n HEAD // 撤销上一次但不commit
- git重新基变(rebase):
git rebase <branch_name> // 合并分支
git rebase --continue // 执行rebase出现冲突解决后,执行该命令会继续应用(apply)余下的补丁
git rebase --skip // 跳过当前提交
git rebase --abort // 终止rebase, 分支会回到rebase开始前的状态
- git遴选(cherry-pick):
git cherry-pick <commit_id> // 用于把另一个本地分支的commit修改应用到当前分支
- 对于已经push的版本,进行回退
git reflog //查看所有分支的所有操作记录
通过 git reflog 获取commit id (版本号),如下:
//版本号:62e6739 都是7位数,填写在回退的版本号处即可!
62e6739 HEAD@{1}: reset: moving to HEAD^
git reset --hard 版本号 //本地回退到指定的版本
git push -f origin dev //将远程的也回退到指定版本
/**华丽的分割线**/
科普内容 - Git log和reflog区别:
git reflog 可以查看所有分支的所有操作记录(包括commit和reset的操作),
包括已经被删除的commit记录
git log则不能察看已经删除了的commit记录
- GitLab迁移,修改本地代码库的服务器路径,修改方法:
1.查看当前代码库服务器地址
命令:git remote get-url origin
命令行会输出:ssh://git@你的ip地址/dowgroup_web.git ######
2.修改当前代码库服务器地址,替换“你的ip地址/”为“新的服务器ip地址”
命令:git remote set-url origin [email protected]:dowgroup/dealer_web.git
工具推荐
- Git Bash Here - Git自带的操作命令行
- Sourcetree 图形化操作
- AndroidStudio 绑定git之后,使用pull push等图形化操作
- Android Stuidio 下的Terminal命令操作
有意义的时光 :
Android进阶之路 - 五分钟内快速生成Git所需的SSH key
Android进阶之路 - AndroidStudio设置git忽略文件
借鉴文章: