git基本指令使用,git status,git stash,git merge
git log
查看项目历史的信息
git status
git status
命令用于显示工作目录和暂存区的状态。使用此命令能看到哪些修改被暂存到了, 哪些没有, 哪些文件没有被Git tracked到。git status
不显示已经commit到项目历史中去的信息。
git stash
应用场景
- 有部分代码是多余的,想保留以后查看,但是又不想提交到远程分支
- 在进行多分支开发时,比如你在A分支上开发,但是突然发现B分支上有个bug需要修复,以前往往会把A分支上开发一半的功能本地commit,切换到B分支修复bug,然后再切换回A分支继续开发,这样往往log上会有大量不必要的记录。现在可以使用
git stash
将你当前未提交到本地(和服务器)的代码推入到Git的栈中,放心切换到B分支修复代码,完事儿后切换回A分支使用git stash apply
将以前一半的工作应用回来;
git stash(A分支)
git pull(B分支)
git stash apply (A分支)
PS:git stash
命令可以将在当前分支修改的内容放到缓存区中,并会自动建立一个缓存的list集合,方便管理,git stash list
可以看到list下的所有缓存。
git stash list

git stash save
取代git stash
。如:
git stash save "添加console.log"

git stash list

git stash apply
和 git stash pop
都可以将修改的内容重新释放出来。
使用git stash apply stash@{x}
,可以将编号x的缓存释放出来,但是该缓存还存在于list中
而 git stash apply
,会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录还存在list中
而 git stash pop
,也会将当前分支的最后一次缓存的内容释放出来,但是刚才的记录会被删除,不存在list中

- 如果你实在实在不想要本地的更改了,可以清除使用如下命令清除所有的stash栈
git stash
git stash clear
当然也可以使用git stash drop
移除指定的stash栈
git stash drop stash@{1}
查看指定stash的提diff
git stash show
运行后

git stash show -p
或git stash show --patch
查看指定stash的全部diff
git rebase 冲突
-
step 1. 使用git status命令,查看有哪些文件冲突,然后逐个解决
-
step 2. 打开冲突文件,找到冲突的位置,比如修改用户信息后发送事件 <<<<<<< HEAD b789 ======= b45678910 >>>>>>> 6853e5ff961e684d3a6c02d4d06183b5ff330dcc 冲突标记<<<<<<< (7个<)与=======之间的内容是本地修改, =======与>>>>>>>之间的内容是别人的修改。
-
step 3. 最简单的方式:删除这些冲突标记,然后查看是否有相同的代码,删除即可。
-
step 4. git add . git commit -m “fix conflict”
-
step 5. git rebase --continue
-
step 6. 如果还是有冲突,重复step2-step5
-
step 7. 完成
分支管理
git branch test // 新建分支(test)
git branch -d test // 删除分支(test)
git branch -D test // 强制删除分支(test)
git checkout test // 切换到test分支(test)
git branch // 查看本地分支
git branch -r // 查看服务器远程分支
git branch -a // 查看本地和远程分支
git branch -b develop
新建分支后先提交到远程服务器才能pull代码,
git push origin test // 提交到远程服务器(test)
git merge git cherry-pick
git merge: 合并两个分支,所有内容 git merge master,将master上所有内容合并到当前分支 git cherry-pick: 选择合并一个或者多个commit,比如要从A分支合并某个commit到B分支,A—>B,步骤如下
- step 1: A分支下,git log获取某个commit-id
- step 2: 切换到B分支,git checkout B(执行该命令前一定要保证A分支没有未提交的改动,或未stash的改动)
- step 3: B分支下,执行 git cherry-pick {commit-id}
- step 4: 执行git pull git push 将改动提交到远程分支 示例:我在A分支修改了某个文件,需要同时提交到A分支和B分支,操作如下 A分支下
git add .
git commit -m “{commit comment}”
git pull -—rebase origin A
git push origin A
git log
git status
git checkout B
已经切换到B分支 切换到B分支后,首先要去远程B分支获取到最新内容
git pull —-rebase origin B
git cherry-pick {commit-id}
git pull —-rebase origin B
git push origin B
git tag(标签)
建议只在主分支打tag,而且每次打tag都以版本发布之后为节点
Gitlab Flow上游优先(学习文档)
www.ruanyifeng.com/blog/2015/1… www.cnblogs.com/cnblogsfans…
小tips
git commit --amend
-“修改commit的描述”- 执行
git pull
命令的时候,如果本地有改动没有commit,就会提示错误 “error: Cannot pull with rebase: You have unstated changes.
”
转载自:https://juejin.cn/post/6847902220629999623