社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Git

git的必会的基本操作

马哥Linux运维 • 5 月前 • 96 次点击  


1、初次使用git必用命令

git config 第一次使用git或者刚安装的git时,使用此命令设置身份Name 和 Eamail 地址。并且每次提交时会使用此信息

git config --global user.name "用户名"git config --global user.email 邮箱

git version 检查当前使用的git版本号

git versiongit -v


2、操作远程仓库命令


git init 初始化仓库创建新项目使用该命令进行项目初始化,创建一个空白的存储库,用于存储源代码

git init

git clone 克隆存储库命令,将远程仓库代码克隆到本地

   git clone 和git init区别

  • 将尚未进行版本控制的本地目录转换为 Git 仓库;

  • 从其它服务器 克隆 一个已存在的 Git 仓库。

git clone ” 远程仓库url “

git add  命令会把所有的代码文件或修改后的文件添加到存储库中。此命令提供了添加文件和文件夹的不同选项。


git add *      //添加所有文件到暂存区git add .      //添加所有文件到暂存区git add -u .   //-u 表示将已跟踪文件中的修改和删除的文件添加到暂存区,不包括新增加的文件git add -A .   //-A 表示将所有的已跟踪的文件的修改与删除和新增的未跟踪的文件都添加到暂存区git add *.htmlgit add *.txt  //添加某个文件类型到暂存区,比如所有的 .html 文件git add index/ //添加整个文件夹到暂存区,比如index文件夹git add index/index.html //添加某个文件或者某个文件夹中的某个文件到暂存区 ,比如 index 下的 index.html 文件

git commit 将工作区内容或暂存区内容提交到版本库

# 将暂存区内容提交到版本库, 进入 vi 命令界面输入提交信息git commit
# 将某些已被跟踪的文件提交到版本库(包含工作区和版本库)git commit [file1] [file2] [...]
# 将暂存区内容提交到版本库, 无需进入 vi 命令界面输入提交信息git commit -m [message]
# 跳过 git add, 将所有已被跟踪的文件更改提交到版本库git commit -am [message]
# 使用一次新的commit, 替代上一次提交# 如果代码没有任何新变化, 则用来改写上一次commit的提交信息git commit --amend -m [message]


git status 显示暂存区文件和当前 HEAD 提交之间有差异的路径,工作区和暂存区文件之间有差异的路径,以及工作区中没有被 Git 跟踪的路径 (也没有被 gitignore 忽略) 。

git status [<选项> …] [--] [<路径名> …]   //[ ] 表示可选,...表示可以有多项。


    


git branch 命令主要用来处理跟分支有关系的功能,比如创建分支、删除分支、查看本地分支、查看远程分支等

git branch          //查看本地分支git branch -v       //查看本地分支+上次提交的信息git branch -vv      //查看本地分支+上次提交的信息+本地和远程分支的关系git branch -vv -a   //查看本地分支+上次提交的信息+本地和远程分支的关系+远程分支 (如果不想显示提交的信息,也可以去掉-vv参数)git branch -r       //只查看远程分支git branch -d (branchName) //删除本地分支git push  -d git push  --delete git push  :<分支名>         //删除远程分支git checkout (branchName)          //切换本地分支git branch (branchName) //创建本地分支git checkout -b (branchName) //创建本地分支并切换git push <远程主机名> <本地分支名>:<远程分支名>        //创建远程分支
       



git checkout 本意是检出的意思,也就是将某次commit的状态检出到工作区;所以它的过程是先将HEAD指向某个分支的最近一次commit,然后从commit恢复index,最后从index恢复工作区。

git checkout (branchName)       git checkout -b (branchName)  
 


3、git进阶


git remote 如果需要与远程仓库链接,必须使用此命令。此命令会将本地存储库连接到远程。

git remote git remote -v | --verbose git remote add url git remote rm name git remote rename old_name new_name 


git push 令用于从将本地的分支版本上传到远程并合并

git push  :     //将本地的分支版本上传到远程并合并git push                   //如果本地分支名与远程分支名相同,则可以省略冒号
以下命令将本地的 master 分支推送到 origin 主机的 master 分支$ git push origin master === git push origin master:master如果本地版本与远程版本有差异,但又要强制推送可以使用 --force 参数$ git push --force origin master删除主机的分支可以使用 --delete 参数,以下命令表示删除 origin 主机的 master 分支$ git push origin --delete master



git push --set-upstream 先把本地的当前分支推送到远程仓库origin的main分支,然后把本地的当前分支关联到远程仓库origin的main分支

git push --set-upstream <remote> <branch>   


git fetch 是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中

git fetch <远程主机名> //这个命令将某个远程主机的更新全部取回本地如果只想取回特定分支的更新,可以指定分支名git fetch <远程主机名> <分支名> //注意之间有空格


git pull 取回远程主机某个分支的更新,再与本地的指定分支合并

git pull [options] [


    
 […]]$ git pull  :<本地分支名>要取回origin主机的next分支,与本地的master分支合并,需要写成下面这样$ git pull origin next:master如果远程分支(next)要与当前分支合并,则冒号后面的部分可以省略。上面命令可以简写为$ git pull origin next上面命令表示,取回origin/next分支,再与当前分支合并。实质上,这等同于先做git fetch,再执行git merge。$ git fetch origin$ git merge origin/next在某些场合,Git会自动在本地分支与远程分支之间,建立一种追踪关系(tracking)。比如,在git clone的时候,所有本地分支默认与远程主机的同名分支,建立追踪关系,也就是说,本地的master分支自动”追踪”origin/master分支。Git也允许手动建立追踪关系$ git branch --set-upstream master origin/next上面命令指定master分支追踪origin/next分支。如果当前分支与远程分支存在追踪关系,git pull就可以省略远程分支名$ git pull origin上面命令表示,本地的当前分支自动与对应的origin主机”追踪分支”(remote-tracking branch)进行合并。如果当前分支只有一个追踪分支,连远程主机名都可以省略$ git pull上面命令表示,当前分支自动与唯一一个追踪分支进行合并。如果合并需要采用rebase模式,可以使用–rebase选项。$ git pull --rebase  :<本地分支名>

git fetch和git pull的区别
git fetch:相当于是从远程获取最新版本到本地,不会自动合并。
git pull:相当于是从远程获取最新版本并merge到本地


git stash 会把所有未提交的修改(包括暂存的和非暂存的)都保存起来,用于后续恢复当前工作目录

git stash save "test-cmd-stash"     //存储一个test-cmd-stash到本地存储列表git stash list           //查看缓存列表git stash pop            //恢复之前缓存的工作目录,这个指令将缓存堆栈中的第一个stash删除,并将对应修改应用到当前的工作目录下git stash apply          //将缓存堆栈中的stash多次应用到工作目录中,但并不删除stash拷贝git stash list           //查看现有stashgit stash drop           //移除stashgit stash show           //查看指定stash的diff



git log 查看所有之前的提交,最近的提交出现在最前面。


git log [<options>] [<since>..<until>] [[--] <path>...]  

常用参数


  1. -p

    按补丁格式显示每个更新的差异,比下一条--stat命令信息更全。

  2. --stat

    显示每次提交修改文件的统计信息,每个提交都列出了修改过的文件,以及其中添加和移除的行数,并在最后列出所有增减行数小计。

  3. --shortstat

    只显示--stat中最后的行数添加、修改、删除的统计。

  4. --name-only

    仅在提交信息后,显示已修改的文件清单。

  5. --name-status

    显示新增、修改、删除的文件清单。

  6. --abbrev-commit

    仅显示SHA-1校验和的前几个字符,而非所有的40个字符。

  7. --relative-date

    使用较短的相对时间,而不是完整格式显示日期(比如“2 weeks ago”)。

  8. --graph

    在日志旁以ASCII图形显示分支与合并历史。

  9. --online

    列表的形式查看历史版本记录,--pretty=oneline --abbrev-commit 合用的简写。

  10. --pretty

    使用其他格式显示历史提交信息。

    可用的选项包括onelineshortfullfuller和 format(用来定义自己的格式)


git shortlog 命令会显示来自 git log 命令的摘要。如果只对简短的摘要感兴趣,此命令就非常有用了。


git shortlog [<options>] [<revision range>] [[--] <path>…]git log --pretty=short | git shortlog [<options>]


4、git高级命令


git rebase 可以提取我们在A分支上的改动,然后应用在B分支的代码上


git rebase -i  [startpoint]  [endpoint]          //-i的意思是--interactive,即弹出交互式的界面让用户编辑完成合并操作


git rebase和git rebase

git merge:当需要保留详细的合并信息的时候建议使用,特别是需要将分支合并进入master分支时

git rebase:当发现自己修改某个功能时,频繁进行了git commit提交时,发现其实过多的提交信息没有必要时使用,分支多,内容多时也可以考虑使用

git bisect 命令可以帮助查找糟糕的提交。




    
git bisect <subcommand> <options>


git cherry-pick "挑拣"提交,它会获取某一个分支的单笔/多笔提交,并作为一个新的提交引入到你当前分支上

git cherry-pick         //将指定的提交(commit)应用于其他分支转移多个提交git cherry-pick  

转移到另一个代码库git remote add target git://gitUrl上面命令添加了一个远程仓库target。然后,将远程代码抓取到本地。git fetch target上面命令将远程代码仓库抓取到本地。接着,检查一下要从远程仓库转移的提交,获取它的哈希值git log target/master最后,使用git cherry-pick命令转移提交git cherry-pick

git blame 追溯一个指定文件的历史修改记录


git blame [filename] git blame的具体显示格式是commit ID  (代码提交作者  提交时间  代码位于文件中的行数)  实际代码


git tag 主要用于发布版本的管理,一个版本发布之后,我们可以为git打上 v.1.0.1 v.1.0.2 ...这样的标签

git tag  //创建本地taggit push origin  //推送到远程仓库若存在很多未推送的本地标签,你想一次全部推送的话:git push origin --tags以上是基于本地当前分支的最后的一个commit 创建的 tag ,但是如果不想以最后一个,只想以某一个特定的提交为tag ,也是可以的,只要你知道commit 的id。git log --pretty=oneline //查看当前分支的提交历史 里面包含 commit idgit tag -a  git show 查看本地所有 tag:git tag 或者 git tag -l查看远程所有 tag:git ls-remote --tags origin本地 tag 的删除:git tag -d 远程 tag 的删除:git push origin :refs/tags/

git verify-commit 使用 GPG、SSH 或 S/MIME,您可以在本地对标签和提交进行签名


git verify-commit <commit>

git verify-tag 检查标签的 GPG 签名 

git verify-tag [--format=<format>] <tag>


git diff 比较文件的差异


情景一:查看工作区和暂存区之间文件的差异git diff 命令,默认查看的就是 工作区 和 暂存区之间文件的差异
1.git diff : 查看工作区和暂存区之间所有的文件差异2.git diff 3.git diff 【注意】:查看具体文件的时候
情景二:查看工作区和版本库之间文件的差异git diff HEAD : 查看工作区与最新版本库之间的所有的文件差异
git diff 具体某个版本 : 查看工作区与具体某个提交版本之间的所有的文件差异git diff HEAD git diff HEAD git diff 具体某个版本 git diff 具体某个版本
情景三:查看暂存区和版本库之间文件的差异git diff git diff git diff git diff

情景四:查看不同版本库之间文件的差异git diff 版本号1 版本号2 :查看两个版本之间的差异git diff 版本号1 版本号2 git diff 版本号1 版本号2 git diff 版本号1 版本号2 src : 查看两个版本之间的文件夹 src 的差异


git citool 基于 Tcl / Tk 的图形界面用于查看修改后的文件,将它们放入索引,输入提交消息并将新提交记录到当前分支。该接口是交互程序较少的替代git commit方案

git citool

链接:https://juejin.cn/post/7310034974424629300

(版权归原作者所有,侵删)


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/165431
 
96 次点击