Git命令
# 一:Git 是什么?
Git是目前世界上最先进的分布式版本控制系统。
# 二:SVN 与 Git 的最主要的区别?
SVN
为集中式版本控制系统,版本库是集中存放在中央服务器的
单独搭建 SVN
服务器,不能离线工作
操作简单,代码保密性较强
GIT
为分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库
适合分布式开发,强调个体
公共服务器压力和数据量都不会太大
速度快灵活
可以离线工作
操作复杂,代码保密性差
GitHub
,免费的远程仓库,如果是个人的开源项目,放到 GitHub
上是完全没有问题的。GitHub
还是一个开源协作社区,通过 GitHub
,既可以让别人参与你的开源项目,也可以参与别人的开源项目。
SVN
的存储需要依赖一个服务器,而 git
所有的东西是放在线上的。节约成本,省时省力。
'Please tell me who you are.'
查看全局配置 git config --global --list
命令 git config --global user.name "你的 git 名称"
命令 git config --global user.email "你的 git 验证邮箱"
git
命令行中的操作命令:
命令 cd D:
进入 相应的磁盘
命令 mkdir
创建目录
命令 cd
进入当前盘符中的文件夹
命令 pwd
显示当前工作目录的全路径
命令 rm
删除文件
命令 ls
查看文件夹下的子文件
然后!最重要的步骤来了!!git init
命令 git init
显示成功后去相应的文件夹中查看是不是多了一个.git
文件
这个文件夹就是你的版本库了,把项目放在文件夹下。
# 三.将文件提交到 git 服务器。
你的本地仓库由 git
维护的三棵“树”组成:
第一个是你的 工作目录,它持有实际文件;
第二个是 暂存区(Index)
,临时保存你的改动;
最后是 HEAD
,指向你最近一次提交后的结果。
# 1.打开 Git Bash
命令 git add ‘文件名’
git add -u
提交所有被修改(modified)
和被删除(deleted)
文件,不包括新文件(new)
git add .
提交所有新文件(new)
和被修改(modified)
文件,不包括被删除(deleted)
文件
git add -A
提交所有变化
把咱们的文件存放在一个神秘的地方 >>>> 暂存区
(暂存区在本机)
# 2.把文件提交到本地仓库中去。
git commit -m '我提交时候的备注(注释)'
# 3.查看 commit 状态
git status
用于显示工作目录和暂存区的状态。
# 4.查看修改内容。
git diff
你的文件名 会出现更改信息;
将更改后的东西提交上去,和之前一样。先 add
然后再 commit
。
# 5.版本退回
git log
( 查看日志)
git reflog
git reset --hard HEAD^
退回到上个版本 如果需要退回好多版本就在后面加上 ^ 例: git reset --hard HEAD^^
退回两个版本。
git reset --hard 191e0c7
回退到指定版本
# 6.删除
新建一个 b.txt
,然后commit
到库中。 并删除。
命令 1. git add
命令 2. git commit -m ‘备注’
命令 3. rm b.txt
这个是删除b
文件的命令
回过头来看文件夹中的 b.txt
b.txt
不见了,查看下状态。
可以 commit
,可以放弃修改git reset --hard
版本号来回复文件。
# 7.连接远程仓库
git init
-> 创建版本库git add 文件名
-> 添加到暂存区git commit -m '提交注释'
->提交到本地仓库
然后连接本地仓库,并将自己的库 push 到服务器中去。
- 命令 1.
git remote add origin https: // github.com/
你的账号/你的项目名称 设置远程仓库地址 - 命令 2.
git push -u origin master
将本地的库推送到master
分支 (就是推送到服务器上)
git push -u -f origin master
(提交到远程仓库,这个命令中的 -f
是强制推送,因为远程仓库只有初始化的文件,所以强制推送上去就行了,不加-f
会报当前分支没有远程分支,强制推送可以覆盖 master
,这样就完成了第一次提交的步骤)
git remote -v
查看远程仓库地址
git remote rm origin
删除远程仓库地址
在服务器上查看是否推送成功。
从现在开始,只需要 git push
就可以把本机的代码提交到远程仓库。
git push
(提交 master
分支 到远程仓库)
git push origin
分支名 (提交其他分支 到远程仓库)
获取远程仓库的更新数据:
git fetch
:相当于是从远程获取最新到本地,不会自动 merge
git pull
:相当于是从远程获取最新版本并 merge 到本地
git pull origin 分支名
更新某个远程分支到本地
从服务器克隆数据, git clone
git clone
https://github.com/yanghuaizhi1210/GitTest (opens new window)
将服务器端的数据克隆过来。
如果输入$ git remote add origin
git@github.com:djqiang(github 帐号名)/gitdemo(项目名).git
提示出错信息:fatal: remote origin already exists.
解决办法如下:
1、先输入$ git remote rm origin
2、再输入$ git remote add origin
git@github.com:djqiang/gitdemo.git 就不会报错了!
3、如果输入$ git remote rm origin
还是报错的话,error: Could not remove config section 'remote.origin'. 我们需要修改 gitconfig 文件的内容
4、找到你的 github
的安装路径,我的是 C:\Users\ASUS\AppData\Local\GitHub\PortableGit_ca477551eeb4aea0e4ae9fcd3358bd96720bb5c8\etc
5、找到一个名为 gitconfig
的文件,打开它把里面的[remote "origin"]
那一行删掉就好了!
生成秘钥:
(1)首先检查电脑是否曾经生成过秘钥
cd ~/.ssh
若打开该文件夹为空,则表示没有生成过秘钥,进入第二步。(~表示根目录)
(2) 生成秘钥
ssh-keygen -t rsa -C "your email"
命令要求输入密码,不用输,三个回车即可。
执行成功后,会在主目录.ssh
路径下生成两个文件:id_rsa
私钥文件;id_rsa.pub
公钥文件;
登陆 github
帐户点击头像,然后 Settings -> 左栏点击 SSH and GPG keys -> 点击 New SSH key
在远程仓库 gitlab
上添加 title
和 key
,和本地的一致。title
可以自己取一个容易区分的名字,key
为 id_rsa.pub
中的内容(全部复制,可用 cat id_rsa.pub
命令打开)
配置了 ssh
秘钥,使用远程仓库的 ssh
地址提交
https://www.cnblogs.com/superGG1990/p/6844952.html (opens new window)
# 分支操作
查看分支:git branch
当前分支前有 *
号
创建分支:git branch
切换分支:git checkout
创建+切换分支:git checkout -b
合并某分支到当前分支:git merge
删除分支:git branch -d
合并分支:
1、先建一个分支 git branch
分支名
2、切换到新建的分支 git checkout
分支名
3、提交分支上的代码 git add .
git commit -m “提交注释”
4、切换至主分支上 git checkout master
5、然后合并分支 git merge 分支
6、合并完以后就 push
最好先 pull
一次 然后 git push
7、切换到自己的分支 git merge
线上分支名称
设置 git
忽略文件: 1.创建文件:.gitignore
2.忽略文件列表
# .gitignore 忽略文件列表
.DS_Store
node_modules/
/dist/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Editor directories and files
.idea
.vscode
_.suo
*.ntvs*
_.njsproj
*.sln
如果出现如: Please enter a commit message to explain why this merge is necessary,# especially if it merges an updated upstream into a topic branch.
“:wq”是Linux操作系统命令: 表示强制性写入文件并退出。
输入“:wq”,注意是英文输入状态下的冒号,然后按下“Enter”键。
2
# Git Submodule
有的时候我们会遇到仓库嵌套的问题,即一个仓库内部还有一个 git
仓库。这时就需要使用到 git submodule
模块化。
git submodule add 远程仓库地址 仓库名/
执行此命令后会在外层仓库根目录下生成一个.gitmodules 文件 如果想删除模块的话,可以执行
git rm -r --cached 远程仓库名/,并删除对应的.gitmodules文件中的模块信息
# git push 时遇到:![rejected] master -> master(non-fast-forward)的问题
1. git pull origin master --allow-unrelated histories 把远程和本地同步,消除差异
2. git add
3. git commit -m
4. git push origin master
2
3
4
# git stash
# 应用场景
- 当正在
dev
分支上开发某个项目,这时项目中出现一个bug
,需要紧急修复,但是正在开发的内容只是完成一半,还不想提交,这时可以用git stash
命令将修改的内容保存至堆栈区,然后顺利切换到fix
分支进行bug
修复,修复完成后,再次切回到dev
分支,从堆栈中恢复刚刚保存的内容。- 由于疏忽,本应该在 dev 分支开发的内容,却在
master
上进行了开发,需要重新切回到dev
分支上进行开发,可以用git stash
将内容保存至堆栈中,切回到dev
分支后,再次恢复内容即可。 总的来说,git stash
命令的作用就是将目前还不想提交的但是已经修改的内容进行保存至堆栈中,后续可以在某个分支上恢复出堆栈中的内容。这也就是说,stash
中的内容不仅仅可以恢复到原先开发的分支,也可以恢复到其他任意指定的分支上。git stash
作用的范围包括工作区和暂存区中的内容,也就是说没有提交的内容都会保存至堆栈中。
# 常用的用法
git stash save "save message"
: 执行存储时,添加备注,方便查找,只有 git stash 也要可以的,但查找时不方便识别。git stash list
:查看stash
了哪些存储git stash show
:显示做了哪些改动,默认show
第一个存储,如果要显示其他存贮,后面加stash@{$num}
,比如第二个git stash show stash@{1}
git stash show -p
: 显示第一个存储的改动,如果想显示其他存存储,命令:git stash show stash@{$num} -p
,比如第二个:git stash show stash@{1} -p
git stash apply
:应用某个存储,但不会把存储从存储列表中删除,默认使用第一个存储,即stash@{0}
,如果要使用其他个,git stash apply stash@{$num}
, 比如第二个:git stash apply stash@{1}
git stash pop
:命令恢复之前缓存的工作目录,将缓存堆栈中的对应stash
删除,并将对应修改应用到当前的工作目录下,默认为第一个stash
,即stash@{0}
,如果要应用并删除其他stash
,命令:git stash pop stash@{$num}
,比如应用并删除第二个:git stash pop stash@{1}
git stash drop stash@{$num}
:丢弃stash@{$num}
存储,从列表中删除这个存储git stash clear
:删除所有缓存的stash
# SVN 使用
使用 VisualSVN Server
建立版本库
https://www.cnblogs.com/lcyuhe/p/4539696.html (opens new window)