git简单而实用,使用时间长了,越来越喜欢它,简直是开发利器。现在记录一些实用操作,以供大家参考。
绑定Git的用户名及邮箱,并写入到配置文件~/.gitconfig
中。
git config --global user.name "yourname"
git config --global user.email "[email protected]"
生成ssh文件
ssh-keygen -t rsa -C "[email protected]"
然后一路回车即可。id_rsa是私钥,id_rsa.pub是公钥,windows和Linux都在用户的.ssh文件夹下,拿Linux举例,它的配置文件在~/.ssh/id_rsa.pub
中。
git log # 查看commit记录
git rebase -i hash_num # hash_num为不需要合并的hash号
# 然后会弹窗,修改为合并选项,如下
把pick改为squash或者s,并:wq保存
# 继续弹窗,编辑commit内容,可以和原来不一样,也可以将不需要的注释掉
git log #只是为了检查
git rebase -i [startpoint] [endpoint]
- -i 的含义是:–interactive, 即弹出交互式的界面让用户编辑完成合并操作
- [startpoint] :合并区间的起点。默认是当前分支 HEAD 所指向的 commit。
- [endpoint] :合并区间的终点,endpoint为不需要包含的commit的hash
p, pick: 保留该 commit。
r, reword: 保留该 commit,可以修改 commit 的注释。
e, eidt: 保留该 commit,但停下来修改该 commit (不仅仅是注释),可以用来解决 merge 冲突。
s, squash: 将该 commit 和 前面一个 commit 合并。
f, fixup: 将该 commit 和 前面一个 commit 合并,但不保留该提交的注释信息。
x, exec: 执行 shell 命令。
d, drop: 丢弃该 commit。
同样也是使用rebase -i操作,不同的是,需要将pick改为reward或者r,然后将原消息修改为自己需要的commit新消息
git branch -m "原分支名" "新分支名"
git branch -m "新分支名称"
git push origin --delete "原分支名" #先删除远程分支
git branch -m "原分支名" "新分支名" #修改本地分支名字
git push origin "新分支名" #推送至远程分支
git branch -d local_Branch_name # 方法1:
git branch -D local_Branch_name #方法2:-D等效于--delete --force命令的标志代替-d
git push origin --delete remote_Branch_name
git push -d origin remote_Branch_name
有时候使用git reset --hard之后,就看不到最新的一些commit,如果想要回退到之前的commit,可以使用下列命令来查看历史hash,然后使用reset操作找回之前的commit。
查看历史操作命令
,下列2个都可以:
git reflog
git reflog show
假设现在有两个分支,一个master分支,另一个dev分支,现在要把dev分支的内容合并到master分支上去。
git branch dev
git rebase master
打开vscode,解决冲突,然后执行continue操作,直到没有冲突
git rebase --continue
提示没有冲突后,添加修改至现在的分支
git add . #添加所有修改
注意这里不需要提交commit操作
git push origin master
#如果提示有问题,且自己确认代码无误,可以强制提交
git push origin master -f
git pull = git fetch + git merge
git pull --rebase = git fetch + git rebase
所以尽量使用git pull --rebase
使用git branch -a 或者git branch -r 看不到别人更新的分支,查看方法有以下两种。
git remote update origin --prune
git branch -r #查看远程分支
git fetch
git branch -r #查看远程分支
git fetch
git checkout -b dev origin/dev
git remote prune origin
能够将所有未提交的修改(工作区和暂存区)保存至堆栈中
,用于后续恢复当前工作目录。
git stash是将本地当前未提交的内容暂存起来
,并且将修改的文件还原到修改之前的状态,用于后续恢复当前的工作,不会被git push到远程分支。
git stash
如果保存多个stash,则会依次保存为0,1,2.(最后一次的为0
),而自己很难对它们进行区分,为了方便可以加上"注释
"(不用双引号)。
git stash save "注释”
查看当前stash中的内容
git stash list
使用git stash pop
来恢复之前暂存的内容。
git stash pop
将堆栈中的内容应用到当前目录,不同于git stash pop,该命令不会将内容从堆栈中删除
,也就说该命令能够将堆栈的内容多次应用到工作目录中,适应于多个分支的情况。
git stash apply
清除堆栈中的所有内容
git stash clear
从最新的stash创建分支
。可以用于解决stash中的内容和当前目录的内容发生冲突的情景。
git stash branch
可以选择其它分支的单个或多个commit合并到自己分支下。
git cherry-pick commitid # 单个commit
git cherry-pick commitid1..commitid100 # 多个commit,不包含commitid1
因为git add .
的命令我们经常使用,他是把文件模块暂时缓存到本地。
git reset . #撤销全部add
git reset 文件 #撤销某个文件
未缓存
的改动:git diff已缓存
的改动: git diff --cached所有改动
:git diff HEADgit log --author=qlee
查询所有commit,并以作者的形式进行归类
git shortlog
控制是否显示merge信息
--merges或者--no-merge
控制时间
--after和--before
git show commitID
git remote remove origin
git remote rm origin
git remote add origin [email protected]:youname/xxx.git
使用git rebase -i
操作,然后不改变pick的状态,直接调整顺序,保存退出即可。