Git基本操作
安装完 Git 软件后,需要我们做一下全局的配置工作,如:用户名、邮箱等。
命令:git config
设置用户名命令:
设置邮箱命令:
其中, --global 指定为全局配置,不指定该参数,则为当前所在仓库配置。
查看配置:
在本地创建版本库,需要使用 git init 命令。
首先,我们需要新建一个存放版本库的文件夹,然后进入到该目录所在路径,执行如下命令,格式为:
最后查看文件夹,可以看到包含有 .git 子文件夹,说明创建版本库成功了。
也可以在执行 git init 命令时指定一个文件夹作为版本库。格式为:
克隆版本库是指从现有 Git 版本库中拷贝项目。
克隆版本库使用如下命令,格式为:
如果我们需要克隆到指定的目录,可以使用以下命令格式:
如:克隆远程仓库
添加一个或多个文件到暂存区:
添加指定目录到暂存区,包括子目录:
添加当前目录下的所有文件到暂存区:
查看在我们上次提交之后是否有对文件进行再次修改。 格式为:
-s参数可以帮助我们获得比较简短的显示结果。
如:我们在一个版本库中所在目录中增加一个 Unit1.pas 文件,然后执行如下命令:
显示暂存区和工作区的差异:
显示暂存区和上一次提交(commit)的差异:
显示两次提交之间的差异:
将暂存区内容添加到本地仓库中。
提交暂存区到本地版本库中:
message 可以用于描述提交的信息。
提交暂存区的指定文件到版本库区:
修改后直接提交:
-a参数设置修改文件后不需要执行 git add 命令,直接来提交。
如:我们在上面的命令基础上进行提交
接下来,我们对 Unit1.pas 文件进行修改,然后进行文件比较:
git reset 命令用于回退版本,可以指定退回某一次提交的版本。
git reset 命令语法格式如下:
可以使用 数字表示
git rm 命令用于删除文件。
如果只是简单地从工作目录中手工删除文件,运行 git status 时就会在 Changes not staged for commit 的提示。所以,在 git 环境下一定要使用 git 的删除文件操作。
git rm 删除文件有以下几种形式:
将文件从暂存区和工作区中删除:
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f 。
如果想把文件从暂存区域移除,但仍然希望保留在当前工作目录中,换句话说,仅是从跟踪清单中删除,使用 --cached 选项即可:
可以递归删除,即如果后面跟的是一个目录做为参数,则会递归删除整个目录中的所有子目录和文件:
git mv 命令用于移动或重命名一个文件、目录或软连接。
如果新文件名已经存在,但还是要重命名它,可以使用 -f 参数:
git 的简单使用
之前用svn的,但是愕然发现好多公司都开始用git ,一开始不知道为什么,想想那么多公司用它,肯定有它的优点啥,带着好奇的心态,慢慢开始去研究它,由于我们公司,就我一个iOS,所以暂时好多git的好多优点都是持续发掘的,本文也会持续更新中····
我们用的都是Mac,所以可以直接通过homebrew安装Git,具体方法请参考homebrew的文档:
然后再检查
然后,设置你的个人信息
注意'git config'命令的'--global'参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
2-1、可以新建一个文件夹,mkdir testGit, 然后cd testGit
2-2、增加你需要改变的东西,放到testGit中去,添加到仓库中去
2-3、提交到仓库中去 -m “这里面是需要注释的内容”
2-4、接下来就是看,你的远程仓库建在什么地方啦,我在github 和 coding 上都有,个人认为刚开始在coding 上使用还是不错的
2-5、把内容推送到远程库上
2-6、然后每次用之前
实际上现在到目前为止就可以开始用起来啦,当然分支管理这个大部分我们后期在讨论。
常用的命令
2-7、建立分支并切换
2-8、合并分支
工作区-----仓库----远程仓库(git add; git commit ; git push )
Swap file ".git/.MERGE_MSG.swp" already exists!
[O]pen Read-Only, (E)dit anyw***, (R)ecover, (Q)uit, (A)born:
4-1(答)解决方法:
解决:
相应的 git pull
自动合并失败。由于在同一行进行了修改,所以产生了冲突。
在冲突处
然后重新提交
如何优雅地使用 Git
安装并配置Git
当时我们可以用万能的apt啊:
sudo apt-get install git1
如果是老一点的Debian或者Ubuntu,那就要(所以要及时更新源啊):
sudo apt-get install git-core1
如果是其他的Linux呢那就源码安装吧,解压后:
./config
make
sudo make install123
安装完成后初步设置一下子:
git config --global user.name "Your Name"
git config --global user.email "email@example.com"12
这里强烈建议大家去申请Gmail吧,人家Nessus都不认QQ邮箱的。
注意git config命令的- -global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
至此,恭喜你,成功安装了Git。
创建版本库
首先,选择一个合适的目录,作为自己的工作目录
root@firgavin-virtual-machine:~# mkdir learngit
root@firgavin-virtual-machine:~# cd learngit/
root@firgavin-virtual-machine:~/learngit# pwd
/root/learngit
root@firgavin-virtual-machine:~/learngit# git in
init instaweb
root@firgavin-virtual-machine:~/learngit# git init
初始化空的 Git 仓库于 /root/learngit/.git/12345678
那么,一个新的Git仓库就建好了。切换进去查看一下:
root@firgavin-virtual-machine:~/learngit# ls -al
总用量 12
drwxr-xr-x 3 root root 4096 8月 17 10:49 .
drwx------ 5 root root 4096 8月 17 10:48 ..
drwxr-xr-x 7 root root 4096 8月 17 10:49 .git12345
虽然是个空的仓库(empty Git repository),但是可以发现当前目录下多了一个.git的目录,这个目录是Git来跟踪管理版本库的,没事千万不要手动修改这个目录里面的文件,不然改乱了,就把Git仓库给破坏了。
基本操作啊
我们随便创建一个文件,当然是在当前目录下了:
root@firgavin-virtual-machine:~/learngit# vi readme.txt
root@firgavin-virtual-machine:~/learngit# cat readme.txt
Git is a version control system.
Git is free software.1234
提交也是相当简单的啊,只需要两步(不查看状态的情况下)即可:
root@firgavin-virtual-machine:~/learngit# git add readme.txt
root@firgavin-virtual-machine:~/learngit# git commit -m "wrote a readme file"
[master (根提交) 3b5aaff] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
这里呢,-m参数后面接的是本次提交说明,养成良好习惯每次都要写,而且要干练精简。
修改一下readme.txt如下:
root@firgavin-virtual-machine:~/learngit# vi readme.txt
root@firgavin-virtual-machine:~/learngit# cat readme.txt
Git is a distributed version control system.
Git is free software.
12345
使用git status查看当前仓库的具体状态:
root@firgavin-virtual-machine:~/learngit# git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add 文件..." 更新要提交的内容)
(使用 "git checkout -- 文件..." 丢弃工作区的改动)
修改: readme.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
显然我们修改了文件但是并没有提交,那么我们的文件还是处于工作区的,于是Git人性化地提示我们,到底是要提交呢,还是放弃提交呢。不好确定就看一下修改内容吧:
root@firgavin-virtual-machine:~/learngit# git diff
diff --git a/readme.txt b/readme.txt
index 46d49bf..9247db6 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,2 +1,2 @@
-Git is a version control system.
+Git is a distributed version control system.
Git is free software.
很清晰的显示出改动的地方,不是么。
当然你确定修改的话就正常add然后commit,如果你要撤销修改的话,按照提示:
root@firgavin-virtual-machine:~/learngit# git checkout -- readme.txt
root@firgavin-virtual-machine:~/learngit# cat readme.txt
Git is a version control system.
Git is free software.
root@firgavin-virtual-machine:~/learngit#
123456
命令git checkout – readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
以上情况使用于你修改了工作区想直接丢弃工作区的修改,如果你修改了并且添加到了暂存区那么就要:
root@firgavin-virtual-machine:~/learngit# git reset HEAD readme.txt
重置后取消暂存的变更:
M readme.txt
root@firgavin-virtual-machine:~/learngit# git status
位于分支 master
尚未暂存以备提交的变更:
(使用 "git add 文件..." 更新要提交的内容)
(使用 "git checkout -- 文件..." 丢弃工作区的改动)
修改: readme.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
root@firgavin-virtual-machine:~/learngit#
1234567891011121314
这里需要优先使用git reset HEAD file取消暂存区的变更,查看状态发现变更此时位于工作区。
然后参考***种git checkout – file就万事大吉。
如果不但将文件add了又commit了,那么久需要版本回退
首先查看下当前有多少个版本:
root@firgavin-virtual-machine:~/learngit# git log
commit 7613ea2dd2a3b5333fb637b9c31fc74c6d4fa0c8
Author: Xiaoming 3052355537@qq.com
Date: Wed Aug 17 11:40:34 2016 +0800
di 1 ci ciu gai
commit 3b5aaff96463cad74ef7238a8324fc3298b7e748
Author: Xiaoming 3052355537@qq.com
Date: Wed Aug 17 11:02:04 2016 +0800
wrote a readme file
12345678910111213
或者使用一个更为简洁的命令来查看版本:
root@firgavin-virtual-machine:~/learngit# git log --pretty=oneline
7613ea2dd2a3b5333fb637b9c31fc74c6d4fa0c8 di 1 ci ciu gai
3b5aaff96463cad74ef7238a8324fc3298b7e748 wrote a readme file123
那么退回上一个版本只需要:
root@firgavin-virtual-machine:~/learngit# git reset --hard HEAD^
HEAD 现在位于 3b5aaff wrote a readme file
root@firgavin-virtual-machine:~/learngit# git log
commit 3b5aaff96463cad74ef7238a8324fc3298b7e748
Author: Xiaoming 3052355537@qq.com
Date: Wed Aug 17 11:02:04 2016 +0800
wrote a readme file
123456789
好吧***作失误又想回到刚才的版本怎么办,先用git reflog查看下commit ID然后调回即可:
root@firgavin-virtual-machine:~/learngit# git reflog
3b5aaff HEAD@{0}: reset: moving to HEAD^
7613ea2 HEAD@{1}: commit: di 1 ci ciu gai
3b5aaff HEAD@{2}: commit (initial): wrote a readme file
root@firgavin-virtual-machine:~/learngit# git reset --hard 7613ea2
HEAD 现在位于 7613ea2 di 1 ci ciu gai
root@firgavin-virtual-machine:~/learngit# git log
commit 7613ea2dd2a3b5333fb637b9c31fc74c6d4fa0c8
Author: Xiaoming 3052355537@qq.com
Date: Wed Aug 17 11:40:34 2016 +0800
di 1 ci ciu gai
commit 3b5aaff96463cad74ef7238a8324fc3298b7e748
Author: Xiaoming 3052355537@qq.com
Date: Wed Aug 17 11:02:04 2016 +0800
wrote a readme file
总结一下,git reset –hard HEAD^回到上个版本,git reset –hard commitID回到ID提交位置。
最后删除文件就十分简单明了了:
git rm filename
git commit -m "remove filename"12
这样就可以将文件从版本库中删除了。万一从版本库中误删了可以:
git checkout -- filename1
即可将文件恢复至最新版本。
5分钟知道git如何使用?(git入门常用命令)
这里引用一下“菜鸟教程”对git的描述
Git 常用的是以下 6 个命令:git clone、git push、git add 、git commit、git checkout、git pull
关于git下载安装这里就不细说了,毕竟我们只有5分钟的时间,可以去git官网下载对应的版本网上查查安装教程。
首先建立一个本地仓库(repository)。你可以使用一个已经存在的目录作为Git仓库或创建一个空目录。我这里就创建一个空目录itep为例:
初始化本地仓库
我们有一个仓库,但什么也没有,先在工作区创建一个文件‘demo.html’,可以使用add命令添加到暂存区。
我们在工作区创建了好几个新的文件,html,js,和css。接下来我们都可以添加到暂存区
当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改,我们可以使用-a标识。 注意是修改,而不是新增,新增的文件我们还是要先add,之后再修改这些文件的话,就可以直接使用-a命令了。
现在我们已经添加了这些文件,我们希望它们能够真正被保存在Git仓库。
为此,我们将它们提交到本地仓库
接下来我们发布版本,提交到远程仓库。注意这里远程仓库的地址只是举例
5分钟已经到了吧...
上面从新建一个页面,提交到远程仓库的流程已经说完了,接下来我们说点别的。。
删除文件
删除工作区和暂存区文件git rm ,删除文件有以下几种形式
对,就是这么简单,你的工作区和暂存区demo.js这个文件已经没有了
如果删除之前修改过并且已经放到暂存区域的话,则必须要用强制删除选项 -f。
强行从暂存区和工作区中删除修改后的 demo.html 文件:
如果想把文件从暂存区中删除,但仍然希望保留在当前工作目录中的话这样操作
git安装使用
1 git初始化 提交
安装git.exe
git bash 进入linux操作界面
创建git仓库目录 :进入目录路径下+git init 初始化
git add 文件 //加入缓存
git commit -m “标注”//提交
git status 查看下当前git目录下文件状态,是否已修改未add/commit
git log
git reset commit id --hard 版本回退
git reflog 查看被删除的文件
2 分支
git log: HEAD指向为当前分支是哪个
git branch 查看当前分支
git checkout * 切换分支为
git branch * 创建分支
git branch -d 删除其他分支 -D强制删除不检验
git merge 其他分支 合并其他分支提交的文件,使本分支文件更多了
3分支规范
master分支 :生产分支
develop分支 :开发分支
4 远程仓库 码云
git remote add orign (自定义命名,默认origin) 远程仓库地址(url)
git remote 查看当前的远程仓库
git push + origin master 本地仓库提交到远程仓库
git push -f 强制覆盖
git push --set-upstream origin master:master
本地分支和远端分支建立连接关系
git branch -vv 查看本地和远程分支的对应
git clone ssh远程仓库地址
git pull(抓取+合并到本地master) =git fetch + git merge orign/master
git 日常用法
git pull远程主机名远程分支名:本地分支名
git push远程主机名本地分支名:远程分支名 , 和git pull 都是 src:dest
git fetch远程主机名分支名其实就是拉去远程分支到本地版本库,然后再使用 git merge
git merge 合并分支,将 合并到当前所在的分支, 比如 git merge master ,将本地master与自己的分支合并,比如 git merge origin/branch ,就是将远程的 origin/branch 与本地的分支合并 , 比如不自动commit,可以 git merge--no-commit 。 其实git merge 可以一次合并多个分支,比如 git merge origin/ 其实就是管你远程和本地了全部合到我的分支上。
git diff 在两个分支之间比较
git diff--cached 比较 git add. 与 工作区之间的比较 , 也就是本地暂存区与工作区之间的比较
git reset--mixed 将暂存区的分支直接回到到工作区, 也就是比如 git add. 你想回退到本地,直接 `git resrt --mixed
git reset--mixed HEAD~1 回退一个版本,比如你本地commit/远程已经push了,那么你本地和远程是一样的,如果你想回退一个版本,此时需要reset操作,主要是解决回退的操作,上面就是commit一次后需要回退一个版本,所以是 HEAD 1 , 比如commit了两次就是 HEAD~2 , 此时有4种选项,一般分为 --hard 和 --mixed , --soft , --hard 硬reset,回退回来你的这次修改全部没有了,也就是直接回到了上一个版本,而 --mixed 回退到你没有 git add. 操作的时候, --soft 是回退到你 git add. 操作完后的时候。 看需求吧。一般只用 --hard 和 --mixed .
git commit--amend 主要是处理 你 git commit-m'' 想要修改 commit的desc/comment了。
git rm-r--cached. 比如修改了 gitignore ,但是其实你的版本库/暂存区是没有 ignore的,所以需要直接删除 暂存区的缓存。
git rm file 也就是删除本地开发的一个文件,硬删除,直接删没了,回退也需要硬回退。
git checkout. 清空本地所有修改的代码
git checkout-b 将本地的这个分支,checkout 出一个新的分支,名字为 git checkout-b origin/ ,将远程的 分支上 checkout一个新的本地分支名字为`
有些场景可能需要打tag,所以一般是 git pull ,拉去远程的所有代码(记得切换到master上),然后 git tag 查看 tag 历史 ,创建一个新的tag ,比如 git tag v1.1.0 ,然后直接推送到远程 git push origin v1.1.0 就好了(一般是别人给你合master了,上线可能需要打新的tag)
文件权限 发生变更需要配置:git diff old mode 100644 new mode 100755 的问题 :需要设置 git config --add core.filemode false
git log-p README.md 查看文件的变更详细 历史 , git log 查看文件的变更 历史 ,另外有可能查看某一行的变更,这个是指你没有ide的情况下,所以需要指定
然后
git shortlog-sn 查看提交者
git submodel add remote_addr local_dir 子模块
文档:Git-工具-子模块
1、在父项目新建子模块
2、提交子模块
问题就是,提交流程过于复杂!!
git的使用的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于、git的使用的信息别忘了在本站进行查找喔。