1 常用操作
初始化本地仓库
git init
本地提交
添加全部已经修改的文件,准备commit 提交
git add .
将修改后的文件提交到本地仓库
git commit -m '提交说明‘
2 分支 操作
创建分支
基于当前commit创建test分支。.git/HEAD 文件中记录了当前分支名字
git branch test
删除分支
git branch -d test
强制删除分支
git branch -D test
切换到分支
git checkout test
直接创建分支并切换到分支
git checkout -b test
查看远程分支
git checkout -r test
3 拉取/推送
以上传gitub为例
连接到远程仓库,并将代码同步到远程仓库
git remote add origin https://github.com/xxxx/xxx
创建一个 upStream (上传流),并将本地代码通过这个 upStream 推送到 别名为 origin 的仓库中的 master 分支上,-u ,就是创建 upStream 上传流,如果没有这个上传流就无法将代码推送到 github;同时,这个 upStream 只需要在初次推送代码的时候创建,以后就不用创建了
git push -u origin master
以后提交
git push origin master
将本地分支与远程同名分支相关联
git push --set-upstream origin <本地分支名>
简写方式
git push -u origin <本地分支名>
pull操作
- 将远程指定分支 拉取到 本地指定分支上
似乎还是拉取到当前分支上
git pull origin <远程分支名>:<本地分支名>
- 将远程指定分支 拉取到 本地当前分支上
git pull origin <远程分支名>
- 将与本地当前分支同名的远程分支 拉取到 本地当前分支上(需先关联远程分支)
git pull
push操作
- 将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反)
git push origin <本地分支名>:<远程分支名>
- 将本地当前分支 推送到 与本地当前分支同名的远程分支上(注意:pull是远程在前本地在后,push相反)
git push origin <本地分支名>
- 将本地当前分支 推送到 与本地当前分支同名的远程分支上(需先关联远程分支)
git push
4 改名
git branch -m br_rename_old br_rename_new
5 git rebase
合并多次无用的提交记录
git rebase -i [startpoint] [endpoint]
pick:保留该commit(缩写:p)
reword:保留该commit,但我需要修改该commit的注释(缩写:r)
edit:保留该commit, 但我要停下来修改该提交(不仅仅修改注释)(缩写:e)
squash:将该commit和前一个commit合并(缩写:s)
fixup:将该commit和前一个commit合并,但我不要保留该提交的注释信息(缩写:f)
exec:执行shell命令(缩写:x)
drop:我要丢弃该commit(缩写:d)
ps
eg:
合并某几条 commit
为了展示最近10次commit 的 commit id(最下面的为最新提交),采用了
git rebase -i HEAD~10
假设最新提交为commit1,将commit 4~9 合成一个,则修改图中的文字,将 commit 4 ~ commit 8的pick均改为s,即squash(将后面的修改“挤进”早些的 commit),剩余的 commit 保留 pick 状态
6 git放弃修改
https://blog.csdn.net/baidu_35007727/article/details/122927676
6.1 未使用 git add 缓存代码时
$ git checkout --<文件名称>
放弃单个文件的修改
$ git checkout .
放弃全部文件的修改
注:此命令不会删除新建的文件,因为刚新建的文件还没已有加入到 git 的管理系统中,所以对于git是未知的。自己手动删除就好了
6.2 已经使用了 git add 缓存了代码
$ git reset HEAD <文件名称>
放弃指定文件的缓存
$ git reset HEAD .
放弃全部文件缓存
注:此命令用来清除git add的缓存,相当于撤销git add命令,使用本命令后本地修改的文件并不会发生变化,继续使用git checkout命令可放弃修改
6.3 已经用 git commit 提交了代码
$ git reset --hard HEAD^
回退到上一次commit状态
$ git reset --hard <commitid>
回退到任意版本