㈠ 【学了就忘】Git操作 — 14.Git基本操作(一)
要对现有的某个项目开始使用Git管理,只需到此项目所在的根目录,执行 git init 命令即可。
准备一个新的Git本地版本库:
说明:初始化Git仓库后,在当前目录下会出现一个名为 .git 的目录,所有Git需要的数据和资源都存放在这个目录中。
不过目前,仅仅是按照既有的结构框架,初始化好了Git仓库中所有的文件和目录,但我们还没有开始跟踪管理项目中的任何一个文件。
使用 git status 命令进行查看。
进入本地版本库查看工作区、暂存区中文件的状态。
1)创建文件后查看工作区、暂存区中文件的状态
我们在仓库目录中创建一个 readme.txt 文件后,在执行 git status 命令。
说明:
2)将工作区的文件添加到暂存区
执行 git add 命令,将 readme.txt 文件添加到暂存区。
3)再次查看工作区、暂存区状态
执行 git status 命令查看工作区、暂存区状态。
说明:
总结:
只要在 "Changes to be committed" 这行下面显示的文件,就说明是已暂存状态。
如果此时提交,那么该文件此时此刻的版本,将被留存在历史记录中。
在 git add 命令后面可以指明要跟踪的文件或目录路径。
如果是目录的话,就说明要递归跟踪该目录下的所有文件。(其实 git add 命令的潜台词就是把目标文件快照放入暂存区域,同时未曾跟踪过的文件标记为已跟踪。)
4)将文件从暂存区撤回到工作区
执行 git rm --cached 命令,将 readme.txt 文件从暂存区撤回到工作区。
并执行 git status 命令查看工作区、暂存区状态。
可以看到结果, readme.txt 文件又成为了一个未被Git追踪的文件。
㈡ Git工作流程和常用命令分享
git是一个分布式版本控制软件,最初由林纳斯·托瓦兹创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。林纳斯·托瓦兹在编写第一个版本时就使用了“git”这个名称, 他将工具描述为“愚蠢的内容跟踪器”。
[图片上传失败...(image-c23291-1619063471664)]
四个专有名词:
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
打开本地生成的.git隐藏文件
创建新项目gittest
创建新文件test.txt
git add <file>
git status显示有变更的文件
git restore <file> 撤回文件修改内容
git commit –m “注释”
修改内容-> 执行git diff工作区和本地仓库的差异
git log显示当前分支的版本历史
git reset --hard HEAD^ 当前版本回退到上一个版本
git reset --hard HEAD^ ^ 当前版本回退到上上一个版本
git reset --hard HEAD~100 回退到前100个版本
恢复已经删除的版本
git reflog 展示所有的提交记录
git reset --hard <版本号> 回退到指定版本
git push origin master 将本地master分支推送到远程master分支,相当于创建远程分支
git checkout -b dev = git branch dev + git checkout dev 创建并切换分支
git branch 不带参数,会列出所有本地的分支;带参数表示创建分支
git branch –d name 删除本地分支(-D表示强制删除)
git branch –r 不带参数,会列出所有远程的分支
git branch --set-upstream-to=origin/<branch本地> 本地和远程分支关联
git push origin –delete <branch> 删除远程分支
git merge release用于合并指定分支到当前分支上
注:Fast-forward表示的合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。在这种模式下,删除分支后,会丢掉分支日志信息。可以使用带参数 --no-ff来禁用”Fast forward”模式。
git merge --no-ff -m “注释”dev
git checkout release 切换release分支
vim test.txt 修改某条内容
git commit test.txt -m “release修改某条内容”
git checkout master 切换master分支
vim test.txt 修改某条同release内容
git commit test.txt -m “master修改某条内容”
git merge release 显示冲突
git status 显示冲突提示
Git用<<<<<<<,=======,>>>>>>>标记出不同分支的内容,其中>>>>release 是指release上修改的内容
vim test.txt 修改内容
git add test.txt
git commit -a -m “fix conflict”
当前分支有没有提交但也不合适现在就提交的内容,Git提供了暂储功能stash
git checkout release
vim test.txt 修改test.txt内容
git checkout develop 此时会提示Aborting
git status 查看当前状态
Git stash list 查看所有暂储列表
git stash apply恢复,恢复后stash内容并不删除,你需要使用命令git stash drop来删除;
另一种方式是使用git stash pop,恢复的同时把stash内容也删除了
创建Git Tag并推送远程服务器
git tag -a V1.0.0 –m“注释” //创建TAG
git push origin V1.0.0 //推送到远程服务器
git push origin --tag //提交所有tag至服务器
git tag -d V1.0.0 //删除本地标签
git push origin --delete tag <tagname> //删除远程标签
HEAD,它始终指向当前所处分支的最新的提交点。你所处的分支变化了,或者产生了新的提交点,HEAD就会跟着改变
add相关命令很简单,主要实现将工作区修改的内容提交到暂存区,交由git管理。
git add .添加当前目录的所有文件到暂存区
git add 添加指定目录到暂存区,包括子目录
git add 添加指定文件到暂存区
commit相关命令也很简单,主要实现将暂存区的内容提交到本地仓库,并使得当前分支的HEAD向后移动一个提交点。
git commit -m 提交暂存区到本地仓库,message代表说明信息
git commit --amend -m 使用一次新的commit,替代上一次提交
上传本地仓库分支到远程仓库分支,实现同步。
git push 上传本地指定分支到远程仓库
git push --force强行推送当前分支到远程仓库,即使有冲突
git push --all推送所有分支到远程仓库
关于分支,大概有展示分支,切换分支,创建分支,删除分支这四种操作。
git branch列出所有本地分支
git branch -r列出所有远程分支
git branch -a列出所有本地分支和远程分支
git branch 新建一个分支,但依然停留在当前分支
git checkout -b 新建一个分支,并切换到该分支
git checkout 切换到指定分支,并更新工作区
git branch -d 删除分支
git push origin --delete 删除远程分支
关于分支的操作虽然比较多,但都比较简单好记
merge命令把不同的分支合并起来。在实际开放中,我们可能从master分支中切出一个分支,然后进行开发完成需求,中间经过R3,R4,R5的commit记录,最后开发完成需要合入master中,这便用到了merge。
git merge 合并指定分支到当前分支
注:如果在merge之后,出现conflict,主要是因为两个用户修改了同一文件的同一块区域。需要针对冲突情况,手动解除冲突。
rebase又称为衍合,是合并的另外一种选择。
在开始阶段,我们处于new分支上,执行git rebase dev,那么new分支上新的commit都在dev分支上重演一遍,最后checkout切换回到new分支。这一点与merge是一样的,合并前后所处的分支并没有改变。
git rebase dev,通俗的解释就是new分支想站在dev的肩膀上继续下去。
rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。
rebase也需要手动解决冲突。
1.如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase
2.如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge
reset命令把当前分支指向另一个位置,并且相应的变动工作区和暂存区。
git reset —soft 只改变提交点,暂存区和工作目录的内容都不改变
git reset —mixed 改变提交点,同时改变暂存区的内容
git reset —hard 暂存区、工作区的内容都会被修改到与提交点完全一致的状态
git revert用一个新提交来消除一个历史提交所做的任何修改。
在回滚这一操作上看,效果差不多。git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
在 Git工作区的根目录创建一个特殊的.gitignore文件。
在.gitignore文件中,添加需要忽略的文件。
git rm -r --cached . //将仓库中的index递归删除
git add . //重新添加仓库索引
git commit -m “update git.ignore” //提交
git branch --set-upstream-to=origin/<branch> <branch> //重现将本地仓库和远程仓库关联
最后,如果此篇博文对你有所帮助,别忘了点个赞哟~
㈢ 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常用命令是什么
1、在当前目录新建一个Git代码库,:$ git init
2、新建一个目录,将其初始化为Git代码库,:$ git init [project-name]
3、下载一个项目和它的整个代码历史,:$ git clone [url]
4、显示当前的Git配置,:$ git config --list
5、编辑Git配置文件,:$ git config -e [--global]
6、设置提交代码时的用户信息,:$ git config [--global] user.name "[name]",:$ git config [--global] user.email "[email address]"
7、添加指定文件到暂存区,:$ git add [file1] [file2] ...
8、添加指定目录到暂存区,包括子目录,:$ git add [dir]
9、添加当前目录的所有文件到暂存区,:$ git add .
10、对于同一个文件的多处变化,可以实现分次提交,:$ git add -p
11、删除工作区文件,并且将这次删除放入暂存区,:$ git rm [file1] [file2] ...
12、停止追踪指定文件,但该文件会保留在工作区,:$ git rm --cached [file]
13、改名文件,并且将这个改名放入暂存区,:$ git mv [file-original] [file-renamed]
14、提交暂存区到仓库区,:$ git commit -m [message]
15、提交暂存区的指定文件到仓库区,:$ git commit [file1] [file2] ... -m [message]
16、提交工作区自上次commit之后的变化,直接到仓库区,:$ git commit -a
17、提交时显示所有diff信息,:$ git commit -v
18、使用一次新的commit,替代上一次提交
19、 如果代码没有任何新变化,则用来改写上一次commit的提交信息,:$ git commit --amend -m [message]
20、重做上一次commit,并包括指定文件的新变化,:$ git commit --amend [file1] [file2]
(4)git常用命令总结扩展阅读:
git有以下功能:
1、从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。
㈤ git基本命令ls、cat、mv、touch简述
1. 命令含义:List directory contents,用来显示目录或具体文件列表。
2. 主要用法示例:
1. 命令含义:Print and concatenate files,打印、合并文件。
2. 主要用法示例:
1. 命令含义:Move or rename files and directories,移动或重命名文件和目录。
2. 主要用法示例:
1. 命令含义:用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的空白文件。
2. 主要用法示例:
该网站几乎能够查询所有Linux命令的含义,其界面如下图:
㈥ git常用操作
如果不用"pick"或者"edit",而是指定"squash",Git 会同时应用那个变更和它之前的变更并将提交说明归并。因此,如果想将这三个提交合并为单一提交, 可以将脚本修改成这样
保存并退出编辑器,Git 会应用全部三次变更然后将送回编辑器来归并三次提交说明。
然后保存,就会拥有包含前三次提交的全部变更的单一提交 。
注:最顶行pick 不能修改为squash
当你正在进行项目中某一部分的工作,里面的东西处于一个比较杂乱的状态,而你想转到其他分支上进行一些工作。问题是,你不想提交进行了一半的工作,否则以后你无法回到这个工作点。解决这个问题的办法就是 git stash 命令。
“‘储藏”“可以获取工作目录的中间状态——也就是修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中,随时可以重新应用。
当追准备切换分支,但是还不想提交你正在进行中的工作;所以储藏这些变更。为了往堆栈推送一个新的储藏,只要运行? git stash :
这时,你可以方便地切换到其他分支工作;你的变更都保存在栈上。要查看现有的储藏,你可以使用? git stash list :
git stash apply :重新应用你刚刚实施的储藏
git stash apply stash@{number} :应用更早的储藏
只需回到需要合并的源分支,运行 git merge 命令指定要合并进来的分支即可;Git 作了合并,但没有提交,它会停下来等你解决冲突。要看看哪些文件在合并时发生冲突,可以用 git status 观察
任何包含未解决冲突的文件都会以未合并(unmerged)的状态列出。Git 会在有冲突的文件里加入标准的冲突解决标记,可以通过它们来手工定位并解决这些冲突。可以看到此文件包含类似下面这样的部分:
可以看到 ======= 隔开的上半部分,是? HEAD (即 master 分支,在运行 merge 命令时所切换到的分支)中的内容,下半部分是在 iss53 分支中的内容。解决冲突的办法无非是二者选其一或者亲自整合到一起。比如可以通过把这段内容替换为下面这样来解决:
在解决了所有文件里的所有冲突后,运行? git add ?将把它们标记为已解决状态(译注:实际上就是来一次快照保存到暂存区域。)
pull时为了防止更改后pull Feiled的出现,先执行commit,stash or revert。
㈦ Git常用命令--(ls,cat,mv,touch)
描述:列出有关文件的信息(默认为当前目录)。如果没有指定-cftuvSUX或——Sort,则按字母顺序排序。
-a 列出所有文件,包括隐藏文件和以“.”开头的文件;
-d 列出目录本身;
-l 列出条目的详细信息;
-r 以反序排列;
-t 按时间排列;
-h 显示的文件大小按人类可读的方式;
-R 递归处理子目录 ;
-X 以文件名的后缀排序;
-S 按文件大小排序
ls
列出当前目录下的所有文件,这个用的最多。
ls -al
列出所有文件(包括隐藏文件和以“.”开头的文件),及其详细信息;
ls - lt
列出所有文件详细信息,并按时间排序,时间最近的靠前。
描述:连接和查看文本文件
-n 从1开始对所有输出行进行编号;
-b 和n相似,但是空行不编号;
-s 遇到连续空行时合并为一行;
cat file1
打印文件内容
cat file1 file2 > file3
合并文件1和2的内容输出到文件3,如果文件3存在则覆盖
cat -n file1 >> file2
把文件1的内容按行编号后追加到文件2
描述:用来移动文件或者重命名
-b 若需覆盖文件,则覆盖前先备份;
-f 如果目标文件存在,强制覆盖;
-i 若目标文件存在,询问是否覆盖;
-t 移动多个源文件到一个目录,使用中目标目录写在前,源文件在后
mv aa.txt bb.txt
将文件aa.txt改名为bb.txt;
mv aa.txt demo
将文件aa.txt移动到目录demo中;
mv aa.txt bb.txt dir1; mv -t ~/Desktop/demo-1/dir2 aa.txt bb.txt
先将文件aa.txt和bb.txt移动到目录dir1,然后再将文件aa.txt和bb.txt移动到目录dir2中;
mv dir1 dir2
如果目录dir2不存在,将目录dir1改名为dir2;如果dir2存在,将dir1移动到dir2
描述:用来新建一个文件,或者修改已存在文件的时间戳
-a 只更改存取时间;
-c 不建立任何文档;
-d 使用指定的日期时间;
touch aa.txt bb.txt
创建文件aa.txt和bb.txt
touch -c cc.txt
如果cc.txt不存在就不更改时间戳也不建立cc.txt
touch -r bb.txt
更新bb.txt的时间戳
Git命令和参数都很多,需要慢慢学。可以使用Git的 --help命令查看详细用法,如输入cat --help,查看cat命令的参数及使用方法。也可以使用网站explainshell.com,输入各种组合参数的命令来查询,每一个参数都会有解释。
㈧ 常用 Git 命令汇总
下面是我整理的常用 Git 命令清单。几个专用名词的译名如下:
Workspace:工作区
Index / Stage:暂存区
Repository:仓库区(或本地仓库)
Remote:远程仓库
导航目录:
1、新建
2、配置
3、帮助
4、状态
5、信息
6、添加
7、删除
8、分支
9、检出
10、远程同步
11、撤销
12、commit
13、diff
14、grep
15、log
16、merge
17、mv
18、tag
19、pull
20、ci
21、rebase (谨慎使用)
22、reset (谨慎使用)
23、其他
㈨ git的常用的几个命令
1.安装Git
Linux
Window:到Git官网下载安装:https://git-scm.com/downloads
2.配置全局用户Name和E-mail
3.初始化仓库
4.添加文件到Git仓库
提示:可反复多次使用,添加多个文件;
5.提交添加的文件到Git仓库
然后会弹出一个Vim编辑器输入本次提交的内容;
或者
6.查看仓库当前的状态
7.比较当前文件的修改
8.查看历史提交记录
或者加上参数查看就比较清晰了
9.回退版本
说明:在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,以此类推,如果需要回退几十个版本,写几十个^容易数不过来,所以可以写,例如回退30个版本为:HEAD~30。
如果你回退完版本又后悔了,想回来,一般情况下是回不来的,但是如果你可以找到你之前的commit id的话,也是可以的,使用如下即可:
提示:commit id不需要写全,Git会自动查找;
补充说明:Git中,commit id是一个使用SHA1计算出来的一个非常大的数字,用十六进制表示,你提交时看到的一大串类似3628164...882e1e0的就是commit id(版本号);
在Git中,版本回退速度非常快,因为Git在内部有个指向当前版本的HEAD指针,当你回退版本的时候,Git仅仅是把HEAD从指向回退的版本,然后顺便刷新工作区文件;
10.查看操作的历史命令记录
结果会将你之前的操作的commit id和具体的操作类型及相关的信息打印出来,这个命令还有一个作用就是,当你过了几天,你想回退之前的某次提交,但是你不知道commit id了,通过这个你可查找出commit id,就可以轻松回退了,用一句话总结:穿越未来,回到过去,so easy!
11.diff文件
说明:查看工作区和版本库里面最新版本文件的区别,也可以不加HEAD参数;
12.丢弃工作区的修改
说明:适用于工作区修改没有add的文件
13.丢弃暂存区的文件
说明:适用于暂存区已经add的文件,注意执行完此命令,他会将暂存区的修改放回到工作区中,如果要想工作区的修改也丢弃,就执行第12条命令即可;
14.删除文件
然后提交即可;
如果不小心删错了,如果还没有提交的话使用下面命令即可恢复删除,注意的是它只能恢复最近版本提交的修改,你工作区的修改是不能被恢复的!