1.从已有分支切分支
-
切换到被copy的分支(master),从服务器拉取最新版本
Terminal window 1git checkout master (git switch master)2git pull -
从当前分支copy出新的开发分支 命名dev分支
Terminal window 1git checkout -b dev (git switch -c dev) -
把新建的分支push到远端
Terminal window 1git push origin dev -
将该分支与远程分支进行关联
Terminal window 1git branch --set-upstream-to=origin/dev
2.将指定分支合并到当前分支
1// 例如将dev分支合并到当前分支2git merge dev
3.将版本回退至指定的commit_id版本
1git reset --hard commit_id
4.将指定的提交(commit)应用于当前分支
1git cherry-pick <HashA> //{A}2git cherry-pick <HashA> <HashB> //{A,B}3git cherry-pick A..B // (A,B]4git cherry-pick A^..B // [A,B]
5.打标签tag
-
切换到要打标签的分支上
-
开始打标签
Terminal window 1// 例: git tag v3.2.12git tag <name> -
通过 git tag 命令可以查看所有标签默认标签是打在最新提交的commit上的。
想要在指定的commit上打tag:
Terminal window 1// 例:git tag v3.2.2 f54oc332git tag <tagname> <commit_id>标签是按字母顺序列出的,使用如下命令查看具体标签信息
Terminal window 1git show <tagname>创建带有说明的标签,用 -a 指定标签名, -m 指定说明文字
Terminal window 1// 例:git tag -a v3.2.2 -m "标签说明" f54oc332git tag -a <tagname> -m "说明" <commit_id>如果标签打错了,可以删除。
Terminal window 1//例:git tag -d v3.2.22git tag -d <tagname>创建的标签不会自动推送到远程。推送某个标签到远程。
Terminal window 1// 例:git push origin v3.2.22git push origin <tagname>一次性推送全部尚未推送到远程的本地标签
Terminal window 1git push origin --tags如果标签已推送到远程,想要删除远程标签
- 先从本地删除
Terminal window 1// 例:git tag -d v0.92git tag -d <tagname>- 远程删除
refs/tags/v0.9 1git push origin :refs/tags/<tagname>
6.在不提交当前分支修改的内容的情况下切换到其他分支进行操作:
-
查看当前分支的修改
Terminal window 1git status -
将当前分支修改的内容stash
Terminal window 1git stash -
查看stash列表
Terminal window 1git stash list -
然后才切换想要去的分支
Terminal window 1git switch 目的分支 -
切换到之前的分支开发状态
-
切换到之前的分支dev
Terminal window 1git switch dev -
查看stash列表
Terminal window 1git stash list -
恢复之前的stash内容
Terminal window 1git stash apply stash@{0} -
删除指定的stash记录
Terminal window 1git stash drop stash@{0}
-
7.修改已经push的commit信息
8.一些查看提交信息的常用命令
1// 查看未传送代码库提交的次数2git status3
4// 查看未传送代码库提交的描述/说明(唯一id)5git cherry -v6
7// 查看未传送代码库提交的详细信息8git log master ^origin/master
9.修改本地仓库所关联的远程仓库地址
1// 查看远程仓库名称2git remote3
4// 查看远程仓库地址5git remote get-url origin6
7// 修改远程仓库地址。如果未设置ssh-key,此处仓库地址为http://... 开头8git remote set-url origin git@dev.risinghf.com:website/helium-web.git
10.查看/修改用户名和邮箱
1// 查看用户名和邮箱2git config user.name3git config user.email4
5// 修改全局用户名和邮箱6git config --global user.name "xxx"7git config --global user.email "xxx"8
9// 修改指定项目的用户名和邮箱(先cd到指定的项目仓库下)10git config user.name "xxx"11git config user.email "xxx"
11.切换仓库的源地址,将http改为ssh。ssh方式可以避免输入用户名和密码的验证方式
1// 查看源地址2git remote -v3
4// 移除源地址5git remote rm origin6
7// 添加源地址8git remote add origin [ssh地址]
12. git报错:OpenSSL SSL_read: Connection was reset, errno 10054
1问题原因: 网络不稳定,连接超时2git config --global http.sslVerify "false"
13.生成SSH密钥
-
查看是否已经有SSH密钥。如果没有密钥则不会有此文件夹,有则备份删除。
Terminal window 1cd ~/.ssh -
生成密钥。按3个回车,密码为空。最后得到两个文件
id_rsa
和id_rsa.pub
Terminal window 1ssh-keygen -t rsa -C "用户的email地址" -
将公钥添加到github账号的
SSH and GPG keys
中
14.删除本地分支和远程分支
-
查看所有分支
Terminal window 1git branch -a -
查看当前所在分支
Terminal window 1git branch -
删除本地分支
Terminal window 1git branch -d x -
删除远程分支
Terminal window 1git push origin --delete xxx
15.本机使用了代理,为git设置代理
-
查看当前的代理地址
Terminal window 1git config --global http.proxy2git config --global https.proxy -
取消当前代理
Terminal window 1git config --global --unset http.proxy2git config --global --unset https.proxy -
设置代理
Terminal window 1git config --global http.proxy localhost:10802git config --global https.proxy localhost:1080