Git常用操作命令收集


1.远程仓库相关命令
检出仓库: git clone git://github.com/jquery/jquery.git
查看远程仓库:git remote -v
添加远程仓库:git remote add [name] [url]
删除远程仓库:git remote rm [name]
修改远程仓库:git remote set-url --push [name] [newUrl]
拉取远程仓库:git pull [remoteName] [localBranchName]
推送远程仓库:git push [remoteName] [localBranchName]
强制推送更改:git push --force origin master
如果想把本地的某个分支 test 提交到远程仓库,并作为远程仓库的master分支,或者作为另外一个名叫test的分支,如下:
git push origin test:master
提交本地test分支作为远程的master分支
 git push origin test:test      
提交本地test分支作为远程的test分支

2.分支(branch)操作相关命令
查看本地分支:git branch
查看远程分支:git branch -r
(如果还是看不到就先git fetch origin先)
创建本地分支:git branch [name] ----
注意新分支创建后不会自动切换为当前分支
切换分支:git checkout [name]
创建新分支并立即切换到新分支:git checkout -b [name]
直接检出远程分支:git checkout -b [name] [remoteName] (
如:git checkout -b myNewBranch origin/dragon)
删除分支:git branch -d [name] ---- -d
选项只能删除已经参与了合并的分支,对于未有合并的分支是无法删除的。如果想强制删除一个分支,可以使用-D选项
合并分支:git merge [name] ----
将名称为[name]的分支与当前分支合并
合并最后的2个提交:git rebase -i HEAD~2 ----
数字2按需修改即可(如果需提交到远端 git push -f origin master 慎用!)
创建远程分支(本地分支push到远程):git push origin [name]
删除远程分支:git push origin :heads/[name]
或 git push origin :[name]
修改分支名称:git branch -m <old_branch_name> <new_branch_name>  
* 创建空的分支:(执行命令之前记得先提交你当前分支的修改,否则会被强制删干净没得后悔)
$ git symbolic-ref HEAD refs/heads/[name]
$ rm .git/index
$ git clean -fdx


3.版本(tag)操作相关命令
查看版本:git tag
创建版本:git tag [name]
删除版本:git tag -d [name]
查看远程版本:git tag -r
创建远程版本(本地版本push到远程):git push origin [name]
删除远程版本:git push origin :refs/tags/[name]
合并远程仓库的tag到本地:git pull origin --tags
上传本地tag到远程仓库:git push origin --tags
创建带注释的tag:git tag -a [name] -m 'yourMessage'
 

4.子模块(submodule)相关操作命令
添加子模块:
$ git submodule add [url] [path]
如:
$ git submodule add git://github.com/soberh/ui-libs.git src/main/webapp/ui-libs
初始化子模块:
$ git submodule init  ----
只在首次检出仓库时运行一次就行
更新子模块:
$ git submodule update ----
每次更新或切换分支后都需要运行一下
删除子模块:(分4步走哦)
 1) $ git rm --cached [path]
 2) 编辑“.gitmodules”文件,将子模块的相关配置节点删除掉
 3) 编辑“ .git/config”文件,将子模块的相关配置节点删除掉
 4)手动删除子模块残留的目录

5.忽略一些文件、文件夹不提交
在仓库根目录下创建名称为“.gitignore”的文件,写入不需要的文件夹名或文件,每个元素占一行即可,如
target
bin
*.db

6.后悔药
删除当前仓库内未受版本管理的文件:
$ git clean -f
恢复仓库到上一次的提交状态:
$ git reset --hard
回退所有内容到上一个版本:
$ git reset HEAD^
回退a.py这个文件的版本到上一个版本:
$ git reset HEAD^ a.py
回退到某个版本:
$ git reset 057d
将本地的状态回退到和远程的一样:
$ git reset –hard origin/master  
向前回退到第3个版本:
$ git reset –soft HEAD~3
修改最后的提交日志:
$ git commit --amend

7.Git一键推送多个远程仓库
编辑本地仓库的.git/config文件:
[remote "all"]
    url = git@github.com:dragon/test.git
    url = git@gitcafe.com:dragon/test.git
这样,使用
git push all
即可一键Push到多个远程仓库中。

8.缓存认证信息
$ git config credential.helper cache
9.查看提交日志
》查看文件中的每一行的作者、最新的变更提交和提交时间
$ git blame [fileName]
》查看仓库历史记录
有三个应该知道的选项。
--oneline -
压缩模式,在每个提交的旁边显示经过精简的提交哈希码和提交信息,以一行显示。
--graph -
图形模式,使用该选项会在输出的左边绘制一张基于文本格式的历史信息表示图。如果你查看的是单个分支的历史记录的话,该选项无效
--all -
显示所有分支的历史记录
把这些选项组合起来之后如下:
使用
 $ git log --oneline --graph --name-status
既可以看到简介的日志信息,也可以看到改了哪些文件,一举两得:

10.有选择的合并
这个功能最赞,没有之一
cherry-pick 可以从不同的分支中捡出一个单独的commit,并把它和你当前的分支合并。如果你以并行方式在处理两个或以上分支,你可能会发现
一个在全部分支中都有的bug。如果你在一个分支中解决了它,你可以使用cherry-pick命令把它commit到其它分支上去,而不会弄乱其他的文件或commit
$ git cherry-pick [commitHash]

11. Stash未提交的更改
正在修改某个bug或者某个特性,又突然被要求展示工作。而现在所做的工作还不足以提交,这个阶段还无法进行展示(不能回到更改之前)。在这种
情况下,
 git stash
可以帮到忙了。
stash在本质上会取走所有的变更并存储它们以备将来使用。
$ git stash
检查stash列表:
$ git stash list
想解除stash并且恢复未提交的变更,就进行apply stash:
$ git stash apply
如果只想留有余地进行apply stash,给apply添加特定的标识符:
$ git stash apply stash@{0}

12.多次修改后拆分提交
暂存文件的部分改动
一般情况下,创建一个基于特性的提交是比较好的做法,意思是每次提交都必须代表一个新特性的产生或者是一个
bug的修复。如果你修复了两个bug,或是添加了多个新特性但是却没有提交这些变化会怎样呢?在这种情况下,你可以把这些变化放在一次提交中。但更好的方法是把文件暂存

(Stage)然后分别提交。
例如你对一个文件进行了多次修改并且想把他们分别提交。这种情况下,可以在add命令中加上 -p 参数
$ git add -p [fileName]

13.压缩多个Commit用rebase命令把多个commit压缩成一个
git rebase -i HEAD~[number_of_commits]
如果你想要压缩最后两个commit,你需要运行下列命令:
git rebase -i HEAD~2
Docs: http://git-scm.com/book/en/v2/Git-Branching-Rebasing

14.差异查看
$ git diff --name-status HEAD~2 HEAD~3 <-- 获得两个版本间所有变更的文件列表
$ git diff HEAD HEAD~1 <-- 查看最近两个提交之间的差异
$ git diff HEAD HEAD~2 <-- 查看第1个与第3个提交之间的差异
^ - 代表父提交,
^n 表示第n个父提交,
^相当于^1
git寻根:^和~的区别
 - 分析得很到位
~ - 代表连续的提交,
~n相当于连续的第n个提交
$ git diff master..test <-- 比较两个分支之间的差异
$ git diff master...test <-- 比较master、test的共有父分支和test 分支之间的差异
$ git diff test <-- 比较当前工作目录与test 分支的差异
$ git diff HEAD <-- 比较当前工作目录与上次提交的差异
$ git diff HEAD -- ./lib  <-- 比较当前工作目录下的lib目录与上次提交的差异
$ git diff --stat  <-- 统计一下有哪些文件被改动,有多少行被改动
$ git diff --cached  <-- 查看下次提交时要提交的内容(staged,添加到索引中)
15.Git for Windows 中文乱码问题
git log 显示的文件名乱码
执行"git config –global core.quotepath false"可以解决之。
core.quotepath设为false,就不会对0×80以上的字符进行quote,中文就显示正常。
修正前:
修正后:
ls
命令显示的中文名乱码
改用"ls --show-control-chars"命令代替单纯的"ls"命令即可。或者编辑
.../Git/etc/git-completion.bash
,新增一行alias ls="ls –show-control-chars"

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值