git 命令行整理

1.gitlab管理项目
详情参考:https://blog.csdn.net/a_small_insect/article/details/79277570

2.git本地配置
2.1 下载git工具 https://git-scm.com/downloads 并安装,网上有教程
2.2 打开git bash here,设置全局环境变量,一般设置为gitHub或gitLab名和邮箱

git config --global user.name “xxx”
git config --global user.email “xx@xx.com”

一般配置用户名和用户邮箱地址即可,用来标识身份
查看全局变量列表:

git config --global --list

3.项目管理规范
不献丑了

4、项目管理Git操作流程
4.1 在项目所在目录初始化本地仓库

git init

4.2 拉取远程项目到指定本地目录,有两种方法
①克隆

git clone <项目地址> <本地目录> //如果项目文件夹为空,则克隆失败

查看项目远程克隆地址

git remote -v

删除关联的远程仓库,删除后可重新关联

git remote rm origin

②先关联远程仓库再添加远程仓库文件到本地

git remote add origin <项目地址>
git pull origin master

4.3 提交项目代码
4.3.1 建立本地分支并将文件提交到该分支
首先需要有修改过或者新增文件,在任意分支下添加文件到Git库的索引(index)

git add . //所有修改过或新增文件,如只添加某个文件,“.”可以换成<该文件名.格式>,例如:git add 11.txt

①未提交过代码,要先提交才能建立分支
提交保存到Git库

git commit -m “提交内容” //一般用这个
git commit -a -m ”提交内容” //提交全部修改过的文件
git log //查看提交历史

建立分支并切换

git branch <子分支名> <父分支名> //父分支可省略,一般为master
git branch //查看本地分支
git branch -r //查看远程分支
git branch -a //查看所有分支,包括本地和远程
git checkout <分支名> //切换到分支
git checkout -b <分支名> //新建分支并切换到该分支,父分支为远程分支时,栗子:git checkout -b dev origin/dev

②已提交过代码,可直接建立分支再切换提交
先切换到要提交的分支,再提交:

git checkout <分支名>
git commit -m “提交内容”

4.3.2 将本地分支提交到远程分支(先更新再提交)
①不合并分支直接push到远程分支
把远程分支最新代码pull到本地分支,分支名最好保持一致,远程主机名一般为origin,可通过git branch -r 查看远程主机名

git pull <远程主机名> <远程分支名>:<本地分支名>

提交本地分支到远程分支,如远程分支不存在,将新建该远程分支

git push <远程主机名> <本地分支名>:<远程分支名>

②合并分支后再push到远程分支(选择在本地仓库中去合并,为的是合并分支过程中,一旦冲突,方便解决。)
合并分支,先切换到要push的本地分支再合并(如hotfix)

git checkout <本地分支>//一般合并到默认分支master
git merge <分支名> // (hotfix)
git log --graph //查看分支合并图

如果弹出编辑器编辑commit信息,输入、保存并关闭后,出现冒号":",输入"wq"即可退出编辑器,详情见5.6
解决冲突:vim编辑器打开冲突文件进行修改,见5.6

git add .
git commit –m “提交信息”

push过程同上
4.3.3 如果分支不再使用要删除本地分支,但不能删除当前分支

git branch -d <分支名>
git branch -D <分支名>//强制删除没有合并的分支

删除远程分支

git push origin :<远程分支名>

git push origin --delete <远程分支名>

5、 常用命令
5.1 查看状态
详细列出当前目录所有还没有被git管理的文件和被git管理且被修改但还未提交(git commit)的文件

git status 

简短输出

git status -s

5.2 冲突分为两种:pull冲突和merge冲突
git status 查看存在的冲突,打开文件进行修改,可在修改前暂存代码:git stash save “message”,修改后git add . (有个.)添加文件到库,然后git commit -m “内容”提交,提交后看运行程序能否成功,能运行再push
5.3 进度保存与删除
保存尚未提交的当前工作进度,包括暂存区和工作区的改动

git stash save “” //注释

显示保存进度的列表

git stash list 
git stash pop [--index][stash_id] //有时候恢复后要commit 才能checkout,否则报错,或者可以回退到merge前git reset --merge
//恢复最新的进度到工作区。git默认会把工作区和暂存区的改动都恢复到工作区。
git stash pop 
//恢复最新的进度到工作区和暂存区。尝试将原来暂存区的改动还恢复到暂存区,不一定成功
git stash pop --index 
//恢复指定的进度到工作区。stash_id是通过git stash list命令得到的,通过git stash pop命令恢复进度后,会删除当前进度。
git stash pop stash@{1} 
//除了不删除恢复的进度之外,其余和git stash pop 命令一样。
git stash apply [--index][stash_id] 
//删除一个存储的进度。如果不指定stash_id,则默认删除最新的存储进度。
git stash drop [stash_id] 
//删除所有存储的进度。
git stash clear 

5.4 发布版本

git tag <标签名> <分支名>
git tag //查看版本

5.5 删除文件
当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用

git rm file_path
git commit -m 'delete somefile'
git push

当我们需要删除暂存区或分支上的文件, 但本地又需要使用, 只是不希望这个文件被版本控制, 可以使用

git rm --cached file_path
git commit -m 'delete remote somefile'
git push

5.6 vim编辑器的简单使用

vim <文件> //创建文件并编辑
shift + c 或者 i//进入编辑状态
esc //退出编辑状态
:w 保存文件但不退出vi
:w file 将修改另外保存到file中,不退出vi
:w! 强制保存,不推出vi
:wq 保存文件并退出vi
:wq! 强制保存文件,并退出vi
:q 不保存文件,退出vi
:q!不保存文件,强制退出vi
:e! 放弃所有修改,从上次保存文件开始再编辑
cat <文件> //查看文件内容

5.7 git diff
用于比较两次修改的差异
①比较工作区与暂存区

 git diff 不加参数即默认比较工作区与暂存区

②比较暂存区与最新本地版本库(本地库中最近一次commit的内容)

git diff --cached [<path>...] 

③比较工作区与最新本地版本库

git diff HEAD [<path>...] 如果HEAD指向的是master分支,那么HEAD还可以换成master

④比较工作区与指定commit-id的差异

git diff commit-id [<path>...] 

⑤比较暂存区与指定commit-id的差异

git diff --cached <commit-id> <path>... 

⑥比较两个commit-id之间的差异

git diff <commit-id> <commit-id>

⑦使用git diff打补丁
git diff > patch
//patch的命名是随意的,不加其他参数时作用是当我们希望将我们本仓库工作区的修改拷贝一份到其他机器上使用,但是修改的文件比较多,拷贝量比较大,
    此时我们可以将修改的代码做成补丁,之后在其他机器上对应目录下使用 git apply patch 将补丁打上即可

git diff --cached > patch //是将我们暂存区与版本库的差异做成补丁
git diff --HEAD > patch //是将工作区与版本库的差异做成补丁
git diff Testfile > patch//将单个文件做成一个单独的补丁

拓展:git apply patch 应用补丁,应用补丁之前我们可以先检验一下补丁能否应用,git apply --check patch 如果没有任何输出,那么表示可以顺利接受这个补丁
另外可以使用git apply --reject patch将能打的补丁先打上,有冲突的会生成.rej文件,此时可以找到这些文件进行手动打补丁
5.8 git clean
删除没有 git add 的文件

git clean -n //显示将要删除的文件和目录
git clean -df //删除文件
git clean -f //删除文件和目录

5.9 git rm 和 rm 的区别
用 git rm 来删除文件,同时还会将这个删除操作记录下来;
用 rm 来删除文件,仅仅是删除了物理文件,没有将其从 git 的记录中剔除。
直观的来讲,git rm 删除过的文件,执行 git commit -m “abc” 提交时,会自动将删除该文件的操作提交上去。
而用 rm 命令直接删除的文件,单纯执行 git commit -m “abc” 提交时,则不会将删除该文件的操作提交上去,需要在执行commit的时候,多加一个-a参数,
即rm删除后,需要使用git commit -am "abc"提交才会将删除文件的操作提交上去。
5.10 git fetch
大致来说,git pull 包括 git fetch 和 git merge
详情参考:https://www.cnblogs.com/ToDoToTry/p/4095626.html
5.11 分支合并方式有两种:git rebase 和 git merge
git rebase :衍合
当合并冲突时,解决冲突后提交时,git rebase 可以得到一个更加简洁的提交历史
衍合有风险,必须遵循如下:
一旦分支中的提交对象发布到公共仓库,就千万不要对该分支进行衍合操作。
详情参考:https://www.cnblogs.com/pinefantasy/articles/6287147.html
5.12 git reset
回退到指定版本

git reset //当前分支所在版本号
git reset <版本号>//回滚到某个版本号
git reset (–mixed) HEAD~1 //HEAD~1可换成<版本号>,回退到指定版本
//回退一个版本,且会将暂存区的内容和本地已提交的内容全部恢复到未暂存的状态,不影响原来本地文件(未提交的也不受影响) 
git reset –soft HEAD~1 
//回退一个版本,不清空暂存区,将已提交的内容恢复到暂存区,不影响原来本地的文件(未提交的也不受影响) 
git reset –hard HEAD~1 
//回退一个版本,清空暂存区,将已提交的内容的版本恢复到本地,本地的文件也将被恢复的版本替换

5.13 git revert
需要反做某个版本时,git revert <需要反做的版本号>,将新建一个版本号,此版本号与需要反做的版本的前一个版本一致
适用场景: 如果我们想恢复之前的某一版本(该版本不是merge类型),但是又想保留该目标版本后面的版本,记录下这整个版本变动流程,就可以用这种方法。
详情参考:https://blog.csdn.net/yxlshk/article/details/79944535

6、 其他

git --help //帮助

“<“和”>” 为特殊符号,不可识别

rm -rf <文件/仓库地址> //强删文件,包括本地仓库和远程仓库
ls //查看文件
ls //查看内部文件,包括隐藏文件
cd .. //回退,文件名不区分大小写
mkdir <目录名> //创建目录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值