git常用命令总结
2022-03-27 23:06 wang03 阅读(102) 评论(0) 收藏 举报git本地仓库操作
创建本地仓库
git init就会将当前目录变成一个git仓库,同时当前目录也会有个.git的目录。
默认用
master作为本地分支的名字,可以通过git branch -m <name>命令修改当前分支的名字。当前执行
git branch是查看不到当前的master分支的,那是因为当前我们还没有执行git commit操作。
git add a.txt就可以将a.txt添加到暂存区。
git commit -m [日志] 将暂存区的所有文件提交到本地库。
git commit -m [日志] [file]   将暂存区的指定文件提交到本地库。
执行git status也会看到当前的工作区是干净的,没有要提交的东西。
这时我们再执行git branch就可以看到当前的master分支了。
分支切换
git checkout [分支名]可以切换分支。但是如果对应分支不存在的话,那就会报错。
git checkout -b [分支名]如果分支不存在,那就需要添加-b参数,创建分支并切换。
git branch [分支名] 创建分支,但不切换分支
git branch 、git branch -va查看所有分支
删除分支
git branch -d [分支名]
分支合并
比如将dev分支的修改合并到master分支。
git checkout  master切换到master分支
git merge dev 就可以将dev分支的内容合并到master分支
冲突处理:
如果在合并分支过程中提示有冲突那就需要做如下处理。
如果当前冲突的是是一个文本文件,比如文件名是
a.txt。那打开文件,将冲突的内容修改掉。重新执行git add a.txt,git commit -m "xxx"重新提交就可以了。
如果当前冲突的是二进制文件,比如文件名是
a.so,这就不能通过手工的方式将它合并了。那就可以执行下面的命令
git checkout a.so --ours或者git checkout a.so --theirs选择保留一个分支的,舍弃另一个分支的。
--ours表示检出当前分支,即合并后保存当前分支的改动而丢弃另外一个分支的改动。
--theirs表示检出另外一个分支,即保存另外一个分支的改动丢弃当前分支的改动。重新执行
git add a.so,git commit -m "xxx"重新提交就可以了。
删除文件
从本地库中删除a.txt
git rm a.txt 这会将这个删除操作提交到暂存区,也会本地删除a.txt这个文件。如果想保留本地的文件不被删除,那就需要添加--cache参数。对应的命令就是git rm a.txt --cached
git commit -m "delete a.txt" 将这次删除提交到本地库
从暂存区中删除a.txt
git restore --staged a.txt
还原文件
如果文件a.txt已经修改了,但是之前我们已经添加到暂存区或者已经提交到了本地库,现在想还原a.txt
从暂存区中还原:
git restore a.txt
从本地库中还原:
	git reset  a.txt执行完这个操作a.txt并没有被还原。主要是为了避免本地工作区中的修改丢失。
	git restore a.txt 继续执行完这个操作后就可以将本地库中最新的a.txt还原到工作区
 要还原本地库中之前提交的版本:
git log a.txt查看文件提交记录,获取commit id
git reset [commit id] a.txt还原指定版本
git restore a.txt
git checkout a.txt也可以还原a.txt。如果暂存区有,就还原暂存区的,否则就还原本地库的。这个命令还是比较危险的,会将当前工作区中的文件直接覆盖掉。
查看历史提交日志
git log查看历史提交日志,如果有版本回退,回退版本之后的历史提交日志这个命令是看不到的。
它有好多种格式化输出形式git log --graph --pretty=oneline、git log --oneline等等。
git reflog也可以查看历史提交日志。与git log 不同的是它会显示所有历史提交记录,包括回退版本之后的。
常用的形式git reflog  show
版本回退
git reset --hard [局部索引值]  回退到指定版本
git reset --soft  [局部索引值]  
git reset --mixed  [局部索引值]
soft 仅仅在本地库中移动head指针
mixed 在本地库移动head指针,同时重置暂存区
hard 在本地库移动head指针,同时重置暂存区、重置工作区
使用^符号只能后退
git reset --hard HEAD^     一个^表示后退一步,n个表示后退n步
使用~符号:只能后退
git reset --hard HEAD~n    表示后退n步
将当前修改保存到堆栈区
git stash 将当前的修改保存在堆栈区
git stash save [日志]  将当前的修改保存在堆栈区
git stash list查看当前所有的堆栈区保存列表
git stash pop还原最近的stash。同时从堆栈区中删除。
git stash pop [数字]还原指定stash。同时从堆栈区中删除。
git stash drop [数字] 删除堆栈区中指定stash。
git stash show 显示最近堆栈区和工作区的差异.git stash show -p可以显示更详细的内容。
git stash show [数字]、git stash show -p [数字]比较堆栈区中指定的stash和工作区
git stash clear清空
比较文件差异
git diff [file]  将工作区的文件和暂存区的比较
git diff [本地库中的历史版本] [file]  将工作区中的文件和本地库历史记录比较
不带文件名比较所有差异文件
远程仓库操作,如github
克隆远程仓库
git clone [远程仓库地址]命令可以将远程仓库及所有分支都克隆下来。同时会在本地库建立master分支,与远程库的master分支关联
本地仓库与远程仓库关联
git remote add [远程仓库别名] [远程仓库地址]将本地仓库与远程仓库关联。
本地仓库可以关联多个远程仓库
git remote -v可以查看本地库关联的远程库的信息。这里
本地仓库与远程仓库断开关联
git remote rm [远程仓库别名]  将本地仓库与远程仓库断开关联
将本地库内容推送到远程仓库
git push  [远程仓库别名] [本地仓库分支名]将本地仓库对应分支推送到远程仓库,如果远程仓库没有与本地对应分支名,就会在远程仓库创建一个对应分支。
如我本地有个dev分支。执行 git push  origin dev就会将本地dev分支的内容推送到远程仓库dev分支,如果远程仓库没有dev分支,就会在远程仓库创建个dev分支。
git push  [远程仓库别名] [本地仓库分支名]:[远程仓库分支名]
我本地有个dev分支。执行 git push  origin dev:odev就会将本地dev分支的内容推送到远程仓库odev,如果远程仓库没有odev分支,就会在远程仓库创建个odev分支。
如果本地分支与远程仓库分支名字相同,可以添加
-u参数将其设置为默认推送、拉取分支,以后就可以直接使用git push进行推送,使用git pull之类的拉取。如使用
git push -u origin dev将本地dev分支推送给远程仓库dev分支,同时将远程dev设置为默认推送分支。以后推送就可以直接使用git push、git pull了。
从远程仓库拉取代码
git pull [远程仓库别名] [远程仓库分支名]:[本地分支名]将远程仓库 的 对应分支拉取过来,与本地的分支合并。
git pull 如果之前本地库分支与远程库分支已经关联过,那就可以直接使用这个命令拉取。
git fetch [远程仓库别名]  将远程仓库的代码拉取到本地,注意,这里只是拉取下来,并没有和本地库合并。
git merge  [远程仓库名]\[远程分支名] 将git fetch拉下来的代码,指定远程分支与本地当前分支代码合并。
删除远程仓库分支
git push [远程仓库别名] --delete [远程仓库分支名]
 
                     
                    
                 
                    
                 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号