git命令行操作指南(git指令及使用场景详解及git stash、git branch、git分支关联等)

git小白的命令行初体验

现在版本控制使用git的挺多,之前常用SVN,偶尔使用Git也是使用可视化工具操作(sourcTree,IDE自带的Git功能),之前不求甚解,所以对git的了解相当浅薄,后来遇到问题只能一次一次去查资料,后来用的多了就觉得麻烦,所以整理一下git的相关命令行操作,以备后用!因为分值操作相关较多且稍复杂,统一放在文章后面

git最常用的基本命令

1.查看当前git版本(判断是否安装过git)

git --version
image.png

2.git下载代码

git clone http://gitlab.tech.xxx.com/xxx/backend-view.git
image.png

项目地址在gitlab项目地址复制粘贴即可(全局配置权限后以后即可不用输入,不再赘述)

3.修改编辑项目常用

// 查看当前仓库文件状态(常在提交文件之前查看,会显示新增文件删除文件,已修改文件等状态)
git status

// 添加文件
git add .    // 添加所有已修改文件
git add fileName   // 添加指定文件名的文件(可在git status返回中复制)

// 提交修改说明
git commit -m "修改的内容"    // 记录当前提交的主题 以便区分每次提交的内容

// 拉取代码
git pull    // 拉取代码  push之前pull一次代码  (尤其多人开发一定注意push之前先pull)
git pull origin <远程分支名>     // 将远程指定分支 拉取到 本地当前分支上
git pull origin <远程分支名>:<本地分支名>     // 将远程指定分支 拉取到 本地指定分支上
git pull origin    // 将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支)

// 推送代码
git push    // 推送代码到远程仓库
git push origin <本地分支名>    // 将本地当前分支 推送到 与本地当前分支同名的远程分支上(注意:pull是远程在前本地在后,push相反)
git push origin <本地分支名>:<远程分支名>     // 将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反)
git push origin     // 将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支)

git push --set-upstream origin      // <本地分支名>将本地分支与远程同名分支相关联

4.分支相关

git branch      // 查看本地分支(名称前面加* 号的是当前的分支)
git branch -a      // 查看分支,远程分支会用红色表示出来(如果你开了颜色支持的话)
git branch -vv      // 查看本地分支和远程分支对应关系
git remote      // 列出所有远程主机
git remote update origin --prune      // 更新远程主机origin(gitlab有新分支,本地查看分支无法查看到的时候使用)
git branch -r       // 列出远程分支
git branch -vv       // 查看本地分支和远程分支对应关系
git checkout -b dev origin/dev      // 新建本地分支dev与远程dev分支相关联

4.1 新建分支相关

git checkout -b newBranch
git push origin newBranch:newBranch    // 把新建的本地分支push到远程服务器,远程分支与本地分支同名(当然可以随意起名):

4.2 删除分支相关
4.2.1 删除本地分支

git branch -D newBranch    // 删除本地 newBranch 分支
git checkout newBranch    // 如果需要重新拉取远程的newBranch分支 执行

4.2.2 删除远程分支

git push origin :delBranchName
git push origin --delete delBranchName
// 切换分支,分支跟踪, 本地分支和远程分支的关系
git branch branchName     // 创建分支
git checkout branchName     // 切换分支
git branch -d branchName     // 删除本地分支

git branch -r -d origin/branch-name  
git push origin :branch-name     // 删除远程分支

// 如果远程新建了一个分支,本地没有该分支,git checkout --track origin/ branchName ,这时本地会新建一个分支名叫  branchName,会自动跟踪远程的同名分支 branchName。
git checkout --track origin/branchName

// 如果本地新建了一个分支 branchName,但是在远程没有。这时候 push 和 pull 指令就无法确定该跟踪谁,一般来说我们都会使其跟踪远程同名分支,所以可以利用 git push --set-upstream origin branchName ,这样就可以自动在远程创建一个 branchName 分支,然后本地分支会 track 该分支。后面再对该分支使用 push 和 pull 就自动同步。
git push --set-upstream origin branchName

// 合并分支(多人开发中,经常一人一个分支,各自在自己分支开发,开发完成以后合并到某一个指定分支,没有问题后最后合并到master主分支,我们的流程是各自在自己的develop开发,开发完成以后合并到lastest分支,没有问题后提交合并申请到master分支,由leader审批是否统一合并到master,因为很多新人不太清楚代码的具体用途,所以讲的稍微详细点,明白命令的实现目的能更好的掌握使用,后面会有具体的操作流程)
1.本地代码依次
git status
git add
git commit -m ""
git pull
git push (develop-author分支,即自己的开发分支)
以后(把本地代码推送到远程对应分支)
2.git checkout lastest (切换到lastest分支)
3.git pull origin lastest  (先把远程lastest分支修改内容拉取,多人开发,需要把远程lastest上的代码pull下来)
4.git  merge develop-author   (合并自己的分支到lastest)

image.png

image.png

image.png

image.png

5 git stash相关(临时保存当前工作区修改)
其实这个我并不经常用,所以理解可能不足,粗略讲下自己的想法, git stash 常用于 多人开发项目,例如:正式环境代码在master,自己开发在dev,当你正在dev开发或修改时,正式环境有个紧急问题需要解决,但是你dev分支的修改只进行了一半,不方便提交时可以利用git stash 将工作区修改过的内容临时保存起来,切换回master修改完紧急内容会回来可以再取出来临时保存的修改继续操作(还是不太理解的话,再举个不是很恰当的例子,比如你有一些文件在特定环境下必须通过U盘拷到另一个电脑上,只是举个例子,别说说用qq蓝牙邮件什么的传输,但是U盘储存空间不足以保存需要传输的内容大小,也不能分批次传输,这种情况相信大家都能想到先把U盘已有的内容剪切到电脑上,腾出空间储存需要拷贝的资料,等拷贝到目标电脑以后再把U盘原有文件恢复到U盘即可,这个过程就相当于 git stash最基本的用途)。说了这么多,看重点吧

(1)git stash save "save message"  : 执行存储时,添加备注,方便查找,只有git stash 也要可以的,但查找时不方便识别。

(2)git stash list  :查看stash了哪些存储

(3)git stash show :显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}

(4)git stash show -p : 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show  stash@{$num}  -p ,比如第二个:git stash show  stash@{1}  -p

(5)git stash apply :应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0},如果要使用其他个,git stash apply stash@{$num} , 比如第二个:git stash apply stash@{1} 

(6)git stash pop :命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash删除,并将对应修改应用到当前的工作目录下,默认为第一个stash,即stash@{0},如果要应用并删除其他stash,命令:git stash pop stash@{$num} ,比如应用并删除第二个:git stash pop stash@{1}

(7)git stash drop stash@{$num} :丢弃stash@{$num}存储,从列表中删除这个存储

(8)git stash clear :删除所有缓存的stash

有时也可通过这种方法实现避免或解决冲突,当你修改的内容是最新的,但是你需要pull下来的代码是需要被替换的,你pull的时候还是会冲突,可以先把你的修改stash临时保存,pull完代码以后在恢复stash的保存,即可替换pull下来的需要被替换的代码,当然不保存直接对比解决冲突也是可以的,看个人喜好了。其他更好的用途相信在遇到更多问题的时候会慢慢发掘出来

暂时想到的常用的基本就这些了,关于多人开发冲突解决的有时候自己提交的时候 pull或push失败 可以查看git status 是否多出了一些绿色的文件名称,检查文件没有 ====的冲突提示以及修复冲突以后重新提交即可

<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1

如果提交的过程中发现进入了VIM编辑器 出现#开头的代码 无法继续操作的时候,可以尝试 切换到大写 输入ZZ 即可解决
还有一种情况需要:q 然后输入A 具体问题遇到可以搜索匹配一下

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容